本文主要介紹交流一下裁判文書網的爬去規則,我主要是由於公司要求而去分析這個網站的,一看是看該網站服務器各類卡,蛋疼。用python的selenium模塊去寫太麻煩了,作不到大量爬取,無可奈何本身不斷研究,終於攻破了該網站的js代碼參數python
思路主要經過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文件裏找到了這段代碼:cookie
vl5x的值是是用getKey()函數算出來的,而getKey裏面傳入得參數是你每次登錄網站,自動給你分配得動態cookies而產生得。函數
這樣咱們就能夠獲得vl5x動態參數。接下來就是比較麻煩得guid參數了,guid實際上是一個動態的隨機生成參數,附上python代碼:post
而後拿這個guid參數取請求該網站的getcode網址,拿到number參數。學習
這樣咱們三個參數同時拿到,一次性向服務器發送請求,獲取數據網站
這樣咱們就能夠直接獲取大量的司法文書數據了,展現一下效果ui
你們能夠有問題能夠和我交流學習,這個技術分享出來,但願能夠幫到更多的人。