当我尝试在C#中使用HttpWebRequest下载谷歌搜索结果页面时,如果我使用简单的搜索词,一切都很好,比如
http://www.google.com/search?q=stackoverflow但是,当我试图使它变得更复杂时,例如
http://www.google.com/search?q=inurl%3A%22goethe%22%20filetype%3Apdf这意味着
inurl:"goethe" filetype:pdf,我将收到一个503错误,因为Google认为我是一个机器人。有什么变通方法吗?
编辑: UserAgent设置为"Mozilla/5.0“。
发布于 2012-03-23 23:03:11
好吧..。如果您的搜索是以编程方式完成的,那么Google恰好是正确的。你是一个机器人:-)
干杯!
发布于 2012-03-23 23:23:52
我不认为这与你的查询有多复杂有太大关系。唯一重要的是他们是否认为你是个机器人。如果你以非常高的速度提交查询,那么Google会认为你是一个机器人,所以有几种可能的解决方案:
的速率
另外,需要注意的是,如果你在没有保存cookie的情况下进行web请求,那么这可能是Google认为你是机器人的另一个“信号”。你还应该非常小心,不要让谷歌阻止代理,因为你正在刮大G。很难找到免费的代理,如果你滥用它们,它们就会被关闭,所以要做一个好公民!
祝好运!
发布于 2012-03-24 03:04:14
尝试Google Custom Search APIs and Tools.这将允许您检索搜索结果,而不必担心被拒绝访问(最多限制)。
或者,模仿典型搜索查询的所有细微差别。例如,在我的浏览器中,搜索inurl:"goethe" filetype:pdf会导致this URL被请求。
然后是cookie和其他http报头。让它看起来更像是浏览器在请求它。
https://stackoverflow.com/questions/9841374
复制相似问题