我目前正在使用java apache commons构建一个Web蜘蛛。我正在抓取基本的Google搜索查询,例如https://google.com/search?q=word&hl=en
在大约60次查询后,我被阻止了,似乎他们认出我是机器人而且我得到了503服务不可用的响应
现在重要的部分: 如果我使用firefox / chrome访问同一站点,我会得到所需的结果。 如果我使用相同的http标头(用户代理,cookie,缓存等)向我的应用程序发出GET请求,我仍然被阻止。
如何 Google是否知道我是通过应用程序还是Chrome浏览器进行连接,只有IP和HTTP-Header作为信息?(也许我错了) ?) 是否有更多参数可以识别我的应用程序?谷歌看到的东西,我不知道吗?
(也许很重要:我使用Chrome开发者工具和httpbin.org来比较浏览器和应用程序的标题。)
非常感谢
答案 0 :(得分:1)
由于您没有指定发送60个查询的速度,我假设处于高速率。这就是谷歌阻止你的原因。有好几次我从Chrome快速完成谷歌搜索,一段时间后它要求验证码,然后很快就会阻止。
请参阅自定义搜索API和此帖有关服务条款Replacement for Google API
的信息有关已阻止搜索的常见问题解答:Google FAQ