通过 Selenium 中的 webdriver 传递用户代理

Posted

技术标签:

【中文标题】通过 Selenium 中的 webdriver 传递用户代理【英文标题】:Pass the user-agent through webdriver in Selenium 【发布时间】:2012-01-07 08:07:36 【问题描述】:

我正在使用 Python 中的 Selenium 进行网站抓取项目。当我通过浏览器打开主页时,它可以正常打开。

但是,当我尝试在 Selenium 中通过 webdriver() 打开网页时,它会打开一个完全不同的页面。

我认为,它能够检测到user-agent(不确定它叫什么)并且能够检查浏览器的属性或其他东西。

是否可以通过webdriver() 传递属性以便加载正确的主页。

谢谢

【问题讨论】:

“它打开一个完全不同的页面”是什么意思?不同的网址或网站上的元素看起来不同? 【参考方案1】:

在 python 版本的 webdriver 中更改用户代理是通过更改浏览器的配置文件来完成的。我只通过传递配置文件参数为webdriver.Firefox() 完成了此操作。您需要执行以下操作:

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

每次您希望更改用户代理时,您都需要重新启动您的网络浏览器(即再次致电driver=webdriver.Firefox(profile)

如果您不确定您的用户代理字符串是什么,请在正确显示页面的浏览器上搜索“我的用户代理是什么”,然后复制并粘贴那个。

希望能对它进行排序。

【讨论】:

所以我们必须更改配置文件才能更改用户代理字符串?我问的原因是因为我需要维护会话以避免我创建的每个实例都必须登录【参考方案2】:

假设用户代理是问题所在,在 Java 中你可以像这样修改它:

FirefoxProfile profile = new FirefoxProfile();
profile.addAdditionalPreference("general.useragent.override", "some UA string");
WebDriver driver = new FirefoxDriver(profile);

请参阅文档here。

【讨论】:

所以我们必须更改配置文件才能更改用户代理字符串?我问的原因是因为我需要维护会话以避免我创建的每个实例都必须登录

以上是关于通过 Selenium 中的 webdriver 传递用户代理的主要内容,如果未能解决你的问题,请参考以下文章

(最新版)如何正确移除Selenium中的 window.navigator.webdriver

Selenium 中的 WebDriver 和 WebElement 有啥区别?

selenium + webdriver(python)(Xpath)

selenium 中的 ChromeDriver 和 WebDriver 有啥区别?

webdriver(selenium+appium)

selenium webdriver学习--通过idname定位,输入内容,搜索,关闭操作