Python 爬蟲進階必備 | 某菠菜網(wǎng)站請求驗證碼 data 參數(shù)加密邏輯分析
今日網(wǎng)站
這個網(wǎng)站同樣來自群友投稿
aHR0cDovL ViMy5pZ3V aS5jb20vIy8=
需要分析的是刷新驗證碼提交的 data 參數(shù)

加密定位
先搜索 data 參數(shù),結(jié)果里檢索的到 200+ 的匹配項,所以暫時跳過這種定位方式

不過這個頁面的請求是 xhr 請求,所以還是用老方法 xhr 斷點看看

打上斷點之后重新刷新頁面

斷點是斷在y.send的位置,這個是請求發(fā)出的地方,網(wǎng)上看堆棧可以看到堆棧里大多都是angular.js相關(guān)的內(nèi)容
“Angular 是一款十分流行且好用的 Web 前端框架,目前由 Google 維護
既然是框架內(nèi)容,先暫時不看繼續(xù)向上看,可以看到下面幾個需要注意的堆棧

這里有好幾個vm,點擊eval對應的堆棧點進去可以看到下面這樣的代碼

雖然這樣里的代碼經(jīng)過了混淆,不過還是可以通過關(guān)鍵字,分析出這里是一個post 請求構(gòu)造的代碼
1 的位置可以看出這是一個 post 方法
2 的位置是構(gòu)建參數(shù) packet
3 的位置可以看出是完成上面packet參數(shù)提交并完成請求提交,回調(diào)的地方
分析到這,打上斷點重新刷新看看

url 不是驗證碼請求的鏈接就放過
ps:其他請求可能也會走這個接口,為了準確性我們只分析需要的鏈接

直到這個位置的 url 顯示的是我們需要的鏈接

可以看到這里的參數(shù) packet 是下面這樣的

經(jīng)過cp之后,經(jīng)過幾層邏輯
傳到下面的結(jié)果和前面分析的請求提交的是類似的


這樣我們就找到了加密的位置了。
加密分析
根據(jù)上面的操作找到加密的位置了,就繼續(xù)放過全部斷點重新進一次加密邏輯
這次要跟一次邏輯,看看經(jīng)過 cp之后都經(jīng)過了什么操作,全部摳出來就完事了
先看cp
cp這個方法里先做了一次判斷,進到JSON.stringify

之后傳入到下面的邏輯中
lz[_$_480d[1704]](data_to_cp, 3, on_finish, on_progress)

這里的lz[_$_480d[1704]]是yt函數(shù),經(jīng)過yt函數(shù)之后得到的結(jié)果是bit array
之后又進入到bth這個方法中

得到bth的結(jié)果后,將這個結(jié)果hash然后將hash的結(jié)果與原結(jié)果拼接
var data = hex + md5(hex)
這樣我們就要扣出yt與bth即可,得出運行的結(jié)果如下

好了,今天的文章就到這里了,咱們下次再會~
對了,看完記得一鍵四連,這個對我真的很重要。
