Python爬蟲進階必備 | 極X助手加密演算法分析

  • 2019 年 10 月 4 日
  • 筆記

極X助手

aHR0cHM6Ly93d3cuamlkYWlob21lLmNvbS9vZmZpY2VyLyMvbG9naW4=

先抓包看看這次要分析的參數。【圖1-1】

圖1-1

看到【圖1-1】里是沒有加密參數名的。所以為了快速定位到加密的位置,我們試試 XHR 斷點。

切換到 控制台 – Source 選項卡 ,如【圖1-2】位置填入下面的內容。

圖1-2

接著我們再發起一次請求,可以看到斷點打上了。【圖1-3】

圖1-3

我們點擊左下角的{}格式化 JS 看看斷點斷上的位置有沒有我們需要的內容。【圖1-4】

圖1-4

我們可以看到這裡函數 y傳入一個參數tt中包含我們需要的提交數據【圖1-5】。但是在這個斷點位置並不能找到參數加密的地方,所以我們需要點擊右側的堆棧往上看看。

圖1-5

我們通過查看堆棧資訊,找到了這裡【圖1-6】。發現在這裡出現了 params相關的的操作,所以這裡的可能包含的就是我們需要的加密位置,我們根據提示進去看看這裡的加密邏輯是什麼樣的。

圖1-6

可以看到這裡把經過處理的密碼和用戶名傳入後,再次做了另一次加密處理後得到了變數i

var r = t.randomKey(16), i = t.aesEncrypt(JSON.stringify(e), r);  

圖1-7

我們分別把變數i需要的參數分別跟進去看看生成規則。【圖1-8】是變數r的生成規則是一串隨機的字元串。

圖1-8

接下來是加密變數i的加密方法【圖1-9】。

圖1-9

接下來只需要把這些參數的方法複製到編輯器中進一步的補全就可以了。

Tip: 這裡的參數e是我們傳入的用戶名和密碼,在【圖1-6】的 54-55 行中傳入,且密碼經過了一層MD5的加密。

這裡很多朋友糾結於類似 i.enc.Utf8.parse 這裡的i如何補全,其實這裡的i 就是我們常用的CryptoJS,只要引入後,直接替換就可以了,不用扣取整個JS。