Java jsoup html解析机器人index/bot检测、noindex

标签 java jsoup bots noindex

首先,这不是一个重复的问题,因为我已经检查了几乎所有的503/机器人索引问题。他们都没有解决我的问题。我正在尝试从 indiegala.com 获取赠品列表,但该网站有某种保护措施来防止机器人。我的目的并不违法,我只是想获得赠品列表,然后检查游戏是否有 Steam 交易卡。但要知道,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>

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

最佳答案

我已经查看了您的案例,并找到了如何绕过机器人检测的方法。

您需要的是cookie。参见下面的代码:

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,将其添加到 header 中已成功为我提供了实际的网站内容:)

注意:通常,如果您遇到这样的情况,您可以轻松地使用 Chrome 开发者工具来检查 Chrome 发送的请求,然后将其复制到您的 Jsoup 请求中:)

关于Java jsoup html解析机器人index/bot检测、noindex,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38338418/

相关文章:

java - 在 macOS BigSur 中更改 Java 版本

java - 使用 jsoup 收集倒数计时器并为 android 设置一个计时器

java - JSoup 无法获得 Google 搜索结果的正确日期范围

java - 编写一个 reddit 机器人

java - Spring 无法使用 JPA 保存/更新实体

java - IllegalStateException:同一线程,不同源(GUI)

ubuntu - FCEUX 模拟器不显示工具菜单

javascript - Discord js 添加对机器人消息的 react

java - Jackson 1.8.5 的日期解析问题

java - 有没有一种有效的方法来测试元素是否与 Jsoup 中的选择器匹配?