【问题标题】:Extracting information from page with Jsoup使用 Jsoup 从页面中提取信息
【发布时间】:2014-02-01 08:15:55
【问题描述】:

我正在尝试使用 Jsoup 库从 here 中提取信息。 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);
    }

【问题讨论】:

    标签: java parsing jsoup


    【解决方案1】:

    首先

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

    第二

    这边不通过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>
    

    现在您可以解析数据并重新创建具有相同值的变量。只需解析端口字段并解释小异或计算。例如:

    document.write(SmallBlind^BigProxy^47917);
    

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

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

    第三

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2022-01-03
      • 2014-11-23
      • 1970-01-01
      • 2019-09-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-05-08
      相关资源
      最近更新 更多