0
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

[Python]Seleniumを使ったネットワークアクティビティの取得方法

Posted at

Webアプリケーションのテストやスクレイピングを行う際、Seleniumは非常に役立つツールとして知られています。この記事では、Seleniumを使用してChromeブラウザのネットワークアクティビティを取得する方法について詳しく解説します。

コードの概要

上記のコードは、ChromeのDevTools Protocolを使用してネットワークリクエストの詳細情報(URL、ヘッダー、ボディ、クッキーなど)を取得するものです。

コードの詳細解説

  1. 必要なモジュールをインポートします。

    from selenium import webdriver
    from selenium.webdriver.common.desired_capabilities import DesiredCapabilities
    import json
    
  2. Chromeブラウザのネットワークログを取得するための設定を行います。

    caps = DesiredCapabilities.CHROME
    caps['goog:loggingPrefs'] = {'performance': 'ALL'}
    
  3. 設定したキャパビリティを使用してブラウザを起動します。

    driver = webdriver.Chrome(desired_capabilities=caps)
    
  4. 任意のURLにアクセスします。

    driver.get('http://example.com')
    
  5. ブラウザのネットワークアクティビティログを取得し、各リクエストの詳細を分析して表示します。

    logs = driver.get_log('performance')
    

    ログの中から、リクエストのURL、ヘッダー、ボディ、クッキーなどの情報を取り出して表示します。

  6. 最後にブラウザを閉じます。

    driver.quit()
    

まとめ

この方法を利用すると、Webページのネットワークアクティビティの詳細を容易に取得できます。特に、APIのリクエストやレスポンスの内容を確認する際などに役立つでしょう。Seleniumを使用してさらに詳しいネットワーク解析を行いたい場合、この方法を基本として拡張していくことができます。

from selenium import webdriver
from selenium.webdriver.common.desired_capabilities import DesiredCapabilities
import json

# ネットワークアクティビティのログを取得する設定
caps = DesiredCapabilities.CHROME
caps['goog:loggingPrefs'] = {'performance': 'ALL'}

# ブラウザを起動
driver = webdriver.Chrome(desired_capabilities=caps)

# URLにアクセス
driver.get('http://example.com')

# ログを取得し、ネットワークアクティビティを分析
logs = driver.get_log('performance')
for entry in logs:
    message_data = json.loads(entry['message'])['message']['params']
    
    # リクエスト情報が存在する場合のみ処理
    if 'request' in message_data:
        request_data = message_data['request']
        request_url = request_data['url']
        request_headers = request_data['headers']

        # ボディを取得
        if 'postData' in request_data:
            post_data = request_data['postData']
        else:
            post_data = None

        # クッキーはSeleniumのメソッドを利用して取得
        cookies = driver.get_cookies()

        print(f"URL: {request_url}")
        print(f"Headers: {request_headers}")
        print(f"Cookies: {cookies}")
        print(f"Body: {post_data}")
        print("-" * 50)

# ブラウザを閉じる
driver.quit()

0
4
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?