Python 尽管谷歌禁止使用常规浏览器,但它仍能正常工作

Python 尽管谷歌禁止使用常规浏览器,但它仍能正常工作,python,selenium,web-scraping,selenium-chromedriver,Python,Selenium,Web Scraping,Selenium Chromedriver,不久前,我用python和Selenium(chromedriver)制作了一个scraper,从谷歌趋势中获取一些数据。它工作得很好,但有时我会被阻止,出现错误429,请求太多。禁令可以持续几天(oof)。奇怪的是,使用我的普通浏览器,我仍然可以毫无问题地发出相同的请求,所以我想这不是IP禁令谷歌如何识别每个浏览器?为什么我的常规浏览器不会同时出现429错误?我对禁令的原因(显然在短时间内有太多请求)不感兴趣,而是对每个浏览器如何独立处理感兴趣Google trends知道是同一个浏览器发出请

不久前,我用
python
Selenium
(chromedriver)制作了一个scraper,从谷歌趋势中获取一些数据。它工作得很好,但有时我会被阻止,出现错误429,请求太多。禁令可以持续几天(oof)。奇怪的是,使用我的普通浏览器,我仍然可以毫无问题地发出相同的请求,所以我想这不是IP禁令谷歌如何识别每个浏览器?为什么我的常规浏览器不会同时出现429错误?我对禁令的原因(显然在短时间内有太多请求)不感兴趣,而是对每个浏览器如何独立处理感兴趣Google trends知道是同一个浏览器发出请求,如何?

Selenium
在没有cookie的情况下运行新浏览器-因此,如果服务器使用cookie接受用户,则Selenium需要更多代码来运行
配置文件。除此之外,服务器还可以检查请求之间的时间间隔,并使用它来阻止您-这就是为什么一些模块(如
scrapy
)在请求之间使用随机延迟的原因。真正的人类不能在1秒内加载100页,而且加载的页面之间不能延迟1ms。人类总是需要更多的时间,而这个时间更随机
Selenium
使用一些JavaScript来控制浏览器,一些服务器可以检测到此JavaScript代码并阻止
Selenium
。同样,刮板在大多数情况下工作正常,只有当我发出太多请求时,才会出现错误429(因此没有cookie)。我可以等半个小时再做一个新的请求,但429仍然阻止了我。我想知道的是,为什么我的常规chrome浏览器在刮板被阻塞时可以访问趋势。如果他们知道这是一个刮刀,他们可以直接禁止它。他们没有,刮刀大部分时间都在工作。但是刮刀比真人工作得更快,比真人工作得更正常-而且谷歌有大笔资金创建复杂的系统来识别机器人/脚本-它甚至可以使用Machime学习、神经网络来实现这一点。不是真的,你可以添加一行简单的代码,比如
time.sleep(30)
每次请求之后,如果没有,则是微不足道的。唯一的问题是,趋势中的请求似乎有一个硬上限。但这不是我要问的。谷歌趋势知道是同一个浏览器,这就是我要问的。它怎么知道的。