python – 更改selenium驱动程序的用户代理

我在Python中有以下代码:

from selenium.webdriver import Firefox
from contextlib import closing

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

我想打印用户代理HTTP头和
可能改变它。可能吗?

Selenium无法读取请求或响应头。您可以通过指示浏览器通过记录此类信息的代理进行连接。

在Firefox中设置用户代理

更改Firefox用户代理的通常方法是在Firefox配置文件中设置变量“general.useragent.override”。请注意,这是独立于硒。

您可以指示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命令行选项。再次,这不是硒的事情。您可以使用chrome -user-agent = foo在命令行中调用Chrome,将代理设置为值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)

上述两种方法都经过测试,发现工作正常。我不知道其他浏览器。

获取用户代理

Selenium没有从WebDriver实例查询用户代理的方法。即使在Firefox的情况下,如果没有将自定义值设置为general.useragent.override,则无法发现默认用户代理。 (此设置在设置为某个值之前不存在)

然而,一旦浏览器启动,您可以通过执行以下命令获取用户代理:

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

代理变量将包含用户代理。

翻译自:https://stackoverflow.com/questions/29916054/change-user-agent-for-selenium-driver

转载注明原文:python – 更改selenium驱动程序的用户代理