谷歌封锁Selenium Webdriver

1 投票
2 回答
2599 浏览
提问于 2025-05-01 04:53

我有一个脚本,想用 selenium 在谷歌页面上搜索一些东西来测试。每次我打开 Webdriver 时,都会出现一个验证码的表单:

fp = webdriver.FirefoxProfile()
driver = webdriver.Firefox(firefox_profile=fp)
driver.get('https://www.google.com/search?q=asdf')

但是如果我在浏览器中打开完全相同的页面,像是这个链接 https://www.google.com/search?q=asdf,就没有问题。为什么谷歌会出现验证码?我可以用 webdriver 发送什么参数,让它看起来像个正常的浏览器,这样就不会出现验证码呢?

需要注意的是,我尝试过添加我的用户代理,但还是出现了同样的错误:

fp = webdriver.FirefoxProfile()
fp.set_preference("general.useragent.override","Mozilla/5.0 (Macintosh; Intel Mac OS X 10.8; rv:32.0) Gecko/20100101 Firefox/32.0")
driver = webdriver.Firefox(firefox_profile=fp)

这是我在正常浏览器中的请求头的一个例子:

在这里输入图片描述

暂无标签

2 个回答

0

使用requests库传递所有的请求头:

headers = {
    "Host": "www.google.com",
    "User-Agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.8; rv:32.0) Gecko/20100101 Firefox/32.0",
    "Accept": "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8",
    "Accept-Language": "en-US,en;q=0.5",
    "Accept-Encoding": "gzip, deflate",
    "Cookie": "PREF=ID=0df7e6fbda0c09d3:U=bfc47b624b57a0e9:FF=0:TM=1414961297:LM=1414961298:S=2FtJad1BEeJ0M5XS; NID=67=t5zTrFVtG4cLZH2kVmsQEbqDRFJisM86z1s27zx0A6vTR0MWqg69DaY39muso6fIEgqnli7IaEv1Rge1ZxBG0Nr1_3KH1aLu_z1-Ar48oiVDFFSVX4KDRgWnHQWjUfHC",
    "Connection": "keep-alive",
    "Cache-Control": "max-age=0",
}
1

你需要设置用户代理。
可以参考这个SO ANSWER

这和使用set_preference有关。

撰写回答