【问题标题】:403 error while getting the google result using jsoup [duplicate]使用jsoup获取谷歌结果时出现403错误[重复]
【发布时间】:2013-01-06 05:00:49
【问题描述】:

我正在尝试使用以下代码获取 Google 结果:

Document doc = con.connect("http://www.google.com/search?q=lakshman").timeout(5000).get();

但我得到了这个例外:

org.jsoup.HttpStatusException: HTTP error fetching URL. Status=403,URL=http://www.google.com/search?q=lakshman

403 错误意味着服务器禁止访问,但我可以在 Web 浏览器中加载此 URL。为什么Jsoup会报403错误?

【问题讨论】:

标签: java jsoup http-status-code-403


【解决方案1】:

您只需将 UserAgent 属性添加到 HTTP 标头,如下所示:

Jsoup.connect(itemUrl)
     .userAgent("Mozilla/5.0 (Macintosh; Intel Mac OS X 10_9_2) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/33.0.1750.152 Safari/537.36")
     .get()

【讨论】:

  • 谢谢!效果很好!
【解决方案2】:

Google 不允许使用机器人,您不能使用 jsoup 连接 google。 您可以使用Google Web Search API (Deprecated),但您每天可以提出的请求数量将受到限制。

【讨论】:

    【解决方案3】:

    其实你可以通过添加一个用户代理来规避 403 错误

    doc = Jsoup.connect(url).timeout(timeout)
                        .userAgent("Mozilla")
    

    但这违反了我认为的谷歌政策。

    编辑:Google 捕获机器人的速度比您想象的要快。但是,您可以将其用作临时解决方案。

    【讨论】:

      【解决方案4】:

      试试这个:

      Document doc =con.connect("http://www.google.com/search?q=lakshman").ignoreHttpErrors(true).timeout(5000).get();
      

      万一 userAgent 不起作用就像它不适合我一样。

      【讨论】:

        【解决方案5】:

        在某些情况下,您需要设置推荐人。这对我有帮助。

        完整源码here

            try{
        
                String strText = 
                        Jsoup
                        .connect("http://www.whatismyreferer.com")
                        .referrer("http://www.google.com")
                        .get()
                        .text();
        
                System.out.println(strText);
        
            }catch(IOException ioe){
                System.out.println("Exception: " + ioe);
            }
        

        【讨论】:

          【解决方案6】:

          替换语句

          Document doc =con.connect("http://www.google.com/search?q=lakshman").timeout(5000).get();
          

          带声明

          Document doc=Jsoup.connect("http://www.google.com/search?q=lakshman").userAgent("Chrome").get();
          

          【讨论】:

            猜你喜欢
            • 2020-08-09
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2016-03-07
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多