2016-10-30 80 views
3

所以。我很困惑。 我在做SINGLE请求使用谷歌机器人系统

headers = { 
    'User-Agent':'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_10_3) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/54.0.2840.71 Safari/537.36', 

} 
    response = requests.get('https://www.google.com/search?num=1&q=Philippines Loans&oq=Philippines Loans&&start=10',headers=headers).text 

但是它希望我填写captcha。我在浏览器上做出了同样的确切请求。它工作得很好没有验证码。当我通过python发出请求时,它怎么会不起作用?如果我通过脚本提出请求,谷歌如何检测天气?如果我提出了100个请求,我会理解。但我只提出一个请求,但仍然会引发错误。同样的要求,我在我的谷歌浏览器工作得很好。我认为这与用户代理有关。显然不是。可能是什么情况?我还应该通过什么?是不是requests.get通过谷歌浏览器手动获取请求相同?是什么使它不同?之前,它让我填写captcha我做了超过500个没有睡眠定时器的请求。

+0

如果您启动匿名会话并确保没有cookie,您仍然可以通过浏览器获得响应吗?顺便说一句 - 直到最近我才能通过发送适当的有效载荷登录Google。现在我有o解析登录页面。我敢打赌,他们在Matrix中改变了一些东西。 –

+0

尝试使用bing代替。 – thesonyman101

+0

通常谷歌获得单个IP请求的查询限制保护(与同一网络上的不同机器)。玩缓存不是唯一的请求。 **谷歌已经与缓存工作!** – dsgdfg

回答

0

您发布的代码适合我。

谷歌会监控你的IP和来自它的流量。如果你在做不人道的请求数量,那么谷歌会在一段时间内将你的IP列入黑名单,并要求你解决验证码问题。如果您等待几个小时,您应该停止看到标题。

解决此问题的唯一方法是使用代理服务器,但是您会发现您可以在网上找到的大多数免费代理服务器都已被Google列入黑名单。所以,如果你想要一个有点可靠的实现,你必须设置你自己的代理服务器(s)与提供商,允许您旋转IP或代替租用专用代理服务器。这些往往是相当昂贵的。

+0

这是没有意义的,为什么我仍然可以使用谷歌浏览器使用相同的IP查询,而不必填写captcha?但必须使用python_requests填写captcha? – Dilli

+0

请记住,除了User-Agent之外,还有更多的请求。 你有许多不同的HTTP头(除了User-Agent之外)由浏览器设置,默认情况下,python请求不会为你设置。这其中包括cookies。 另外请记住,chrome可能会发送HTTP-Headers,它甚至不会在开发工具中告诉您。 – MoorzTech