Java Http Get请求-实际发送的数据是什么?

Java Http Get请求-实际发送的数据是什么?,java,http,https,web-crawler,apache-commons-httpclient,Java,Http,Https,Web Crawler,Apache Commons Httpclient,我目前正在用JavaApacheCommons构建一个Webspider。我正在抓取基本的谷歌搜索查询,比如 不知怎的,在大约60个查询被阻止后,他们似乎认出我是一个机器人,我得到了一个503服务不可用的响应 现在重要的部分是: 如果我使用firefox/chrome访问同一个站点,我会得到想要的结果。 如果我使用相同的http头用户代理、cookie、缓存等对我的应用程序发出GET请求,我仍然被阻止 当只有IP和HTTP头作为信息时,Google如何知道我是通过应用程序还是Chrome浏览器连

我目前正在用JavaApacheCommons构建一个Webspider。我正在抓取基本的谷歌搜索查询,比如

不知怎的,在大约60个查询被阻止后,他们似乎认出我是一个机器人,我得到了一个503服务不可用的响应

现在重要的部分是: 如果我使用firefox/chrome访问同一个站点,我会得到想要的结果。 如果我使用相同的http头用户代理、cookie、缓存等对我的应用程序发出GET请求,我仍然被阻止

当只有IP和HTTP头作为信息时,Google如何知道我是通过应用程序还是Chrome浏览器连接?也许我错了? 是否有更多参数可识别我的应用程序?谷歌看到而我没有的东西

可能很重要:我正在使用Chrome开发者工具和httpbin.org来比较浏览器和应用程序的标题


非常感谢

因为您没有指定发送这60个查询的速度,所以我假设发送速度很高。这就是谷歌阻止你的原因。有好几次我在chrome上快速搜索谷歌,它会在一段时间后要求验证码,然后很快就会被拦截

请参阅定制搜索的API和这篇关于服务条款的文章


关于被阻止搜索的常见问题解答:

谢谢,这可能就是我最初被阻止的原因。。尽管如此,如果我事后从我的应用程序发出一个请求,我仍然会被阻止,而使用浏览器工作正常。。谷歌如何区分这两者?我应该在单个请求之间等待多长时间。。我在5秒前尝试了5+随机,但还是被阻止了,在答案中添加了一些参考链接