[英]Extracting information from page with Jsoup
我正在嘗試使用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運算符 (^)計算端口號。 要了解發生了什么,您需要了解XOR運算符,找到在源代碼中內聯加載的小腳本(提示:div內的id為ind =“ incontent”的script標記)。 這是我得到的,但這可能是動態生成的腳本,因此它可能因調用而異:
<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
如果您非常需要它們,只需訂閱讓您准備使用襪子代理列表的眾多服務之一:)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.