1. ホーム
  2. python

[解決済み] Selenium web-driverのユーザーエージェントを変更する。

2022-02-14 18:48:26

質問

以下のコードを Python :

from selenium.webdriver import Firefox
from contextlib import closing

with closing(Firefox()) as browser:
  browser.get(url)

ユーザーエージェントHTTPヘッダを表示させたい。 変更できるかもしれません。可能でしょうか?

解決方法を教えてください。

Seleniumにはリクエストヘッダやレスポンスヘッダを読み取る方法がありません。この種の情報を記録するプロキシを経由して接続するようにブラウザに指示することによって、それを行うことができます。

Firefoxでユーザーエージェントを設定する

Firefox でユーザーエージェントを変更する通常の方法は、変数 "general.useragent.override" を Firefox プロファイルに追加します。これはSeleniumから独立していることに注意してください。

このように、デフォルトとは異なるプロファイルを使用するようにSeleniumに指示することができます。

from selenium import webdriver
profile = webdriver.FirefoxProfile()
profile.set_preference("general.useragent.override", "whatever you want")
driver = webdriver.Firefox(profile)

Chromeでユーザーエージェントを設定する

Chromeの場合、やりたいことは user-agent コマンドラインオプションを使用します。繰り返しになりますが、これはSeleniumのことではありません。コマンドラインでChromeを呼び出すには、次のようにします。 chrome --user-agent=foo という値でエージェントを設定します。 foo .

Seleniumでは、このように設定します。

from selenium import webdriver
from selenium.webdriver.chrome.options import Options
opts = Options()
opts.add_argument("user-agent=whatever you want")

driver = webdriver.Chrome(chrome_options=opts)

上記の方法はいずれもテストして動作することが確認されています。他のブラウザーについてはわかりません。

ユーザーエージェントの取得

のインスタンスからユーザーエージェントを問い合わせるメソッドはありません。 WebDriver . Firefox の場合でも、デフォルトのユーザーエージェントを確認するために general.useragent.override は、カスタム値に設定されていない場合は、このようになります。(この設定は ある を設定する必要があります)。

しかし、ブラウザが起動した後は、実行することでユーザーエージェントを取得することができます。

agent = driver.execute_script("return navigator.userAgent")

agent 変数にはユーザーエージェントが入ります。