我在以下代码中Python:
Python
from selenium.webdriver import Firefox from contextlib import closing with closing(Firefox()) as browser: browser.get(url)
我想打印用户代理HTTP标头并可能更改它。可能吗?
Selenium中无法读取请求或响应头。您可以通过指示浏览器通过记录此类信息的代理进行连接来实现。
更改Firefox用户代理的通常方法是"general.useragent.override"在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,您要做的就是使用user-agent命令行选项。再次,这不是硒的事情。您可以在命令行调用Chrome,chrome --user- agent=foo以将代理设置为value foo。
user-agent
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)
以上两种方法均经过测试,发现可以使用。我不了解其他浏览器。
Selenium没有方法可从的实例查询用户代理WebDriver。即使是Firefox,也无法通过检查general.useragent.override未设置为自定义值的内容来发现默认用户代理。(此设置在设置为某个值之前不 存在 。)
WebDriver
general.useragent.override
但是,一旦启动浏览器,您可以通过执行以下操作获取用户代理:
agent = driver.execute_script("return navigator.userAgent")
该agent变量将包含用户代理。
agent