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

10 投票
2 回答
12977 浏览
提问于 2025-04-17 07:09

我正在用Python和Selenium做一个网站抓取的项目。当我通过浏览器打开首页时,一切正常。

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

我觉得它可能能检测到user-agent(不太确定这个词怎么说),并且能够检查浏览器的属性或者其他什么东西。

有没有办法通过webdriver()传递这些属性,这样就能加载正确的首页了。

谢谢

2 个回答

1

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

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

详细说明可以在这里找到。

29

在Python版本的webdriver中,想要更改用户代理(user agent),需要修改浏览器的配置文件。我只在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))。

如果你不确定自己的用户代理字符串是什么,可以在一个能正常显示页面的浏览器中搜索“我的用户代理是什么”,然后复制粘贴那个字符串就可以了。

希望这些信息对你有帮助。

撰写回答