一尘不染

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

selenium

我在以下代码中Python

from selenium.webdriver import Firefox
from contextlib import closing

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

我想打印用户代理HTTP标头,并可能对其进行更改。可能吗?


阅读 304

收藏
2020-06-26

共1个答案

一尘不染

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

在Firefox中设置用户代理

更改Firefox用户代理的通常方法是"general.useragent.override"在Firefox配置文件中设置变量。请注意,这与硒无关。

您可以指示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,chrome --user-agent=foo以将代理设置为value 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")

agent变量将包含用户代理。

2020-06-26