本文主要介紹交流一下裁判文書網的爬去規則,我主要是因為公司要求而去分析這個網站的,一看是看該網站服務器各種卡,蛋疼。用python的selenium模塊去寫太麻煩了,做不到大量爬取,迫不得已自己不斷研究,終於攻破了該網站的js代碼參數

思路主要通過python去破解網站js的加密數據。該網站請求數據都是通過post請求的,分析一下header,會發現,它是一個post請求,請求的表單數據包括param、index、page、order、direction、vl5x、number、guid這幾個參數。很顯然,param是查詢字符串,index是頁碼,page是一頁展示的數據量,order是排序方式,其中,vl5x、number、guid是js代碼加密生成得可變參數。一次性向對方服務器發送請求后獲取相應得數據得。


現在最關鍵得是如何解密這三個參數?我主要用得是python得PyV8模塊去調度js代碼,列出代碼中使用得python模塊。

找一個瀏覽器里已經用過的vl5x去post ListContent,返回的是remind key,因此這個vl5x值是實時計算生成的。
到底這個值是怎么計算的呢,既然瀏覽器能算出vl5x的值,那算法應該隱藏在網頁的JS文件中。好吧,繼續找,在Lawyee.CPWSW.List.js文件里找到了這段代碼:

vl5x的值是是用getKey()函數算出來的,而getKey里面傳入得參數是你每次登陸網站,自動給你分配得動態cookies而產生得。


這樣我們就可以得到vl5x動態參數。接下來就是比較麻煩得guid參數了,guid其實是一個動態的隨機生成參數,附上python代碼:

然后拿這個guid參數取請求該網站的getcode網址,拿到number參數。


這樣我們三個參數同時拿到,一次性向服務器發送請求,獲取數據

這樣我們就可以直接獲取大量的司法文書數據了,展示一下效果

大家可以有問題可以和我交流學習,這個技術分享出來,希望可以幫到更多的人。
作者:再敲一串代碼
鏈接:https://www.jianshu.com/p/da54d322ba31
來源:簡書
簡書著作權歸作者所有,任何形式的轉載都請聯系作者獲得授權並注明出處。