C# 对于复杂的搜索查询,Google Search返回503错误

C# 对于复杂的搜索查询,Google Search返回503错误,c#,search,httpwebrequest,C#,Search,Httpwebrequest,当我尝试在C#中使用HttpWebRequest下载Google搜索结果页面时,如果我使用简单的搜索词(如 http://www.google.com/search?q=stackoverflow 但是当我试着让它更复杂的时候,例如 http://www.google.com/search?q=inurl%3A%22goethe%22%20filetype%3Apdf 也就是说 inurl:"goethe" filetype:pdf ,我将收到一个503错误,因为谷歌认为我是一个机器人。有

当我尝试在C#中使用HttpWebRequest下载Google搜索结果页面时,如果我使用简单的搜索词(如

http://www.google.com/search?q=stackoverflow
但是当我试着让它更复杂的时候,例如

http://www.google.com/search?q=inurl%3A%22goethe%22%20filetype%3Apdf
也就是说

inurl:"goethe" filetype:pdf
,我将收到一个503错误,因为谷歌认为我是一个机器人。有什么解决办法吗


编辑:UserAgent设置为“Mozilla/5.0”。

很好。。如果您的搜索是以编程方式完成的,那么Google恰好是对的。。你是一个机器人:-)


干杯

我认为这与你的查询有多复杂没有多大关系。唯一真正重要的是他们是否认为你是机器人。如果你以很高的速度提交查询,那么谷歌会认为你是一个机器人,因此有几种可能的解决方案:

  • 降低发送查询的速率
  • 此外,需要注意的是,如果您在不保存cookies的情况下发出web请求,那么这可能是Google认为您是机器人的另一个“信号”。你也应该非常小心,不要让谷歌阻止代理,因为你正在刮大G。很难找到免费的代理,如果你滥用它们,那么他们会被关闭,所以做一个好公民

    祝你好运

    试试这将允许您检索搜索结果,而不必担心被拒绝访问(最高限制)

    或者,模拟典型搜索查询的所有细微差别。例如,在我的浏览器中,搜索
    inurl:“goethe”文件类型:pdf将导致被请求。

    然后是cookie和其他http头。让它看起来更像是浏览器在请求它。

    很好-正确。:)不过我真的很想得到结果。有趣的是,我可以连续做100次像“stackoverflow”这样的简单查询,但只要我使用“intitle”参数,Google就会给我发送一个503。“文件类型”虽然有效,但我能在不到一分钟的时间内收到900个PDF文件的结果页。@dm Google在检测您是否使用“机器人”查询内容时,不会只看一件事,他们会查看多个因素,您可能会偶然发现一个组合,他们认为这是机器人活动的明确指标。很难判断是什么触发了谷歌的拦截机制。