【问题标题】:Java jsoup html parsing robot index / bot detection, noindexJava jsoup html解析机器人索引/bot检测,noindex
【发布时间】:2016-11-15 06:12:20
【问题描述】:

首先,这不是一个重复的问题,因为我已经检查了几乎所有的 503 / 机器人索引问题。他们都没有解决我的问题。我正在尝试从 indiegala.com 获取赠品清单,但该网站有某种保护措施可以防止机器人和机器人。我的目的并不违法,我只是想获得赠品清单然后检查游戏是否有蒸汽交易卡。但是你知道,indiegala 给了我一个机器人索引。目前我正在使用该代码;

       String url = "https://www.indiegala.com/giveaways";
    try {
        String content = Jsoup.connect(url).userAgent("Mozilla/5.0 (Windows NT 6.3; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/51.0.2704.103 Safari/537.36").ignoreHttpErrors(true).followRedirects(true).get().html();
        System.out.println(content);
    } catch (IOException ex) {
        System.out.println(ex.toString());
    }

要查看输出(站点的源代码,在我的代码中,变量“内容”),您可以运行我提供的代码,我无法在此处添加输出,因为它有点长。但是看起来是这样的;

<head>
 <meta name="ROBOTS" content="NOINDEX, NOFOLLOW" />
</head>

那么我怎样才能通过这个保护呢?我的程序可以假装像人一样通过这种保护吗?

【问题讨论】:

    标签: java jsoup bots noindex


    【解决方案1】:

    这就是我的情况。这可能会有所帮助。机器人检测器检测到我的浏览器代理并显示了众所周知的验证码“请显示我不是机器人”。首先,通过使用位于this address 的 chrome 插件,显示传递给网站的 Header,并且知道 cookie 和 userAgent。我刚刚复制了代码中显示的 cookie 和 userAgent,每次检测到机器人时,我都会使用常驻浏览器手动绕过验证码。

    Doc = Jsoup.connect(URL_String)
      .userAgent("Mozilla/5.0 (Windows NT 6.3; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/62.0.3202.94 Safari/537.36")    
      .header("cookie","AWSALB=7ygHW4oBnXOkLMVFehmoTM8F1lLfDiTJVVeP5DTIw4dpGgQ4o2F5mYYm4bvCkJul1nkWqAjq9s0pKojKFqdP7wRm/NX/Ye2ntYKwtlOhVvA4dwSM8QTn1uwi4jgI; Expires=Fri, 24 Nov 2017 11:37:10 GMT; Path=/")
      .timeout(0)
      .get();
    

    【讨论】:

      【解决方案2】:

      我查看了您的案例,并研究了如何绕过机器人检测。

      您需要的是cookies。见以下代码:

      String url = "https://www.indiegala.com/giveaways";
      
      Document doc = Jsoup.connect(url)
                  .userAgent("Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/51.0.2704.103 Safari/537.36")
                  .header("cookie", "incap_ses_436_255598=zI1vN7X6+BY84PhGvPsMBjKChVcAAAAAVhJ+1//uCecPhV2QjUMw6w==")
                  .timeout(0)
                  .get();
      

      这看起来像是网站需要的特定 cookie,将其添加到标题中已成功为我提供了实际的网站内容 :)

      注意:一般如果你遇到这样的情况,你可以很容易地使用 Chrome 开发者工具来检查 Chrome 发送的请求,然后在你的 Jsoup 请求中复制它:)

      【讨论】:

      • 感谢您的回答 :) 当我尝试此代码时,它给了我“403 HTTP 错误获取 URL。状态 = 403”。然后我尝试添加ignoreHttpErrors(true)。代码可以正常工作,但仍然给我机器人索引:/ 我想我需要自己的 cookie :) 但我不知道如何为自己获得一个 :)
      猜你喜欢
      • 2013-12-11
      • 1970-01-01
      • 1970-01-01
      • 2011-11-12
      相关资源
      最近更新 更多