java - 使用 Jsoup 从页面中提取信息

标签 java parsing jsoup

我正在尝试从 here 中提取信息与 Jsoup 库。无法获取js元素之后的信息。
我使用 Opera DragonFly 查看此页面的每个 td 元素。这是结果:

<td class="t_port">
      <script type="text/javascript">
      //<![CDATA[
        document.write(Socks^GrubMe^51959);
      //]]>
      </script>
     "1080
                "
    </td>

当我使用任何浏览器的查看代码功能时,他返回给我相同的代码行,但没有“1080” - 我正在寻找的信息。当我尝试使用 Jsoup 抓取此页面时,我会得到相同的结果。 js 代码或多或少相似。喜欢:

document.write(SmallBlind^NineBeforeZero^64881);

document.write(ProxyMoxy^DexterProxy^29182);

或者类似的东西

 document.write(Defender^Agile^57721);


了解此服务的策略我想这个 js 代码会阻止此必要的信息并稍后通过编辑 DOM 添加“1080”类型的信息动态加载它。 有什么建议获取此信息吗?

PS:这是我的代码:

Document doc = Jsoup.connect(socks4URL).post();
    Elements ips = doc.select("table.proxytbl td.t_ip");
    for (Element e : ips) {
        System.out.println("e is " + e.text());
    }
    Elements ports = doc.select("table.proxytbl td.t_port");
    for (Element e : ports) {
        System.out.println("port is " + e);
    }

最佳答案

第一

我认为该网站使用这种技术正是为了阻止像您这样的人抓取他们的信息。话虽如此,我只是假设你明白这一点并放弃。

第二个

此端不通过ajax加载端口信息。它只是在脚本标签中定义了一些全局变量并使用按位 XOR operator (^) 计算端口号。要了解发生了什么,您需要了解 XOR 运算符,找到源代码中内联加载的小脚本(提示:div 内带有 id="incontent"的脚本标记)。这是我得到的,但这可能是动态生成的脚本,因此它可能与调用不同:

<script type="text/javascript">
//<![CDATA[
  BigProxy = 13097;BigGoodProxy = 42249^BigProxy;GrubMe = BigGoodProxy^BigProxy;Defender = 16593^BigGoodProxy;Polymorth = 32164^60129;Xorg = Defender^BigProxy;DexterProxy = Defender^Defender;SmallBlind = 56306^22478;Agile = 7797^61126;Socks = BigProxy^SmallBlind;DontGrubMe = BigProxy^45134;Xinemara = 64225^38807;HttpSocks = Socks^BigGoodProxy;BigBlind = GrubMe^41530;NineBeforeZero = 8868^38743;SmallProxy = HttpSocks^Socks;ProxyMoxy = Polymorth^41915;
//]]>
</script>

现在您可以解析数据并使用相同的值重新创建变量。只需解析端口字段并解释少量的 XOR 计算即可。例如:

document.write(SmallBlind^BigProxy^47917);

根据上面的脚本SmallBlind=35900和BigProxy=13097(经过评估!)

所以微积分为35900 ^ 13097 ^ 47917 = 1080

第三

如果您非常需要它们,只需订阅众多服务之一即可为您发送准备使用的 socks 代理列表:)

关于java - 使用 Jsoup 从页面中提取信息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21495764/

相关文章:

java - 尝试将日期列表(从数据库激活)转换为格式(yyyy-mm)

Java设计: Polymorphic List

java - 具有特定 Product Flavors 依赖性的 android-library

python - 如何使 pyparsing 语法依赖于实例属性?

java - 使用 jsoup 连接到 URL 时出现异常

java - 在Java中引用dll

javascript d3.js 日期字符串解析问题

c# - 解析法国日期

android - jsoup 未知主机异常

java - 登录端点?