Python 爬蟲進階必備 | 關(guān)于投訴平臺網(wǎng)頁參數(shù) signature 加密邏輯分析
今日網(wǎng)站
aHR0cHM6Ly90b3VzdS5zaW5hLmNvbS5jbi9jb21wYW55L3ZpZXcvP2NvdWlkPTYzODQ5MTI0MzE=
很久沒有寫原創(chuàng)了,其實我私底下囤了不少原創(chuàng)的文章,不過都不是爬蟲相關(guān)的。。。
關(guān)于今天這個網(wǎng)站的分析流程還是老三樣,直接開搞。
抓包與加密定位

這個網(wǎng)站的下拉翻頁是 ajax 加載的,所以可以直接在 xhr 翻頁里面找到這個請求
打開請求的參數(shù),可以看到有幾個比較明顯的加密參數(shù)是需要分析的

我們這里主要分析的是第三個參數(shù)signature
直接檢索下參數(shù),看看相關(guān)的結(jié)果(因為是 xhr 請求,用 xhr 斷點也行,往上翻兩個堆棧就能找到)

結(jié)果很少,點進這個文件繼續(xù)在文件中檢索

可以看到match到 9 個相關(guān)的值,可以逐一分析一下,不會分析也沒有關(guān)系,每個檢索項都打上斷點即可
稍微看了下邏輯,這個 js 沒有做混淆處理,斷點可以直接打在下面這個位置上

主要邏輯是下面這行代碼
("&signature=").concat(t)
var?t?=?s([u,?d,?l,?window.couid,?e,?c,?h["type"?+?e]].sort().join(""))
加密分析
從上一個環(huán)節(jié)已經(jīng)得出了 signature 的代碼所以接下來只要分析出上面t賦值等式的代碼就完成了
結(jié)合上下文的代碼,其中比較簡單的幾個未知變量可以直接答案了
u?#?當(dāng)前時間,參見?14469?行的代碼?(new?Date).getTime()
l?#?固定值,一串字符串$d6eb7ff91ee257475%
window.couid?#?查詢的id
e?#?類型,在這個例子中為固定值1
c?#?是pagesize,即一頁有幾條
h["type"?+?e]]?#?這個是頁數(shù)
出去上面的簡單的值外,就只剩下d還有s兩個未知了
變量 d 是一個函數(shù)
d?=?function(e,?t,?r)?{
????????var?n?=?""
??????????,?i?=?t
??????????,?a?=?["0",?"1",?"2",?"3",?"4",?"5",?"6",?"7",?"8",?"9",?"a",?"b",?"c",?"d",?"e",?"f",?"g",?"h",?"i",?"j",?"k",?"l",?"m",?"n",?"o",?"p",?"q",?"r",?"s",?"t",?"u",?"v",?"w",?"x",?"y",?"z",?"A",?"B",?"C",?"D",?"E",?"F",?"G",?"H",?"I",?"J",?"K",?"L",?"M",?"N",?"O",?"P",?"Q",?"R",?"S",?"T",?"U",?"V",?"W",?"X",?"Y",?"Z"];
????????e?&&?(i?=?Math.round(Math.random()?*?(r?-?t))?+?t);
????????for?(var?o?=?0;?o?????????????n?+=?a[Math.round(Math.random()?*?(a.length?-?1))]
????????}
????????return?n
????}(!1,?16)
這個d,拿出來就能用

函數(shù)s是追進去是下面這個圖中的方法

往上翻看到下面這個邏輯

我盲猜一手 sha256
我們把s()包裹的這串邏輯[u, d, l, window.couid, e, c, h["type" + e]].sort().join("")執(zhí)行出來的結(jié)果拿出來看看

再拿到網(wǎng)頁加密的網(wǎng)站上測試一下

猜對了,這樣就完成了這個加密參數(shù)的邏輯分析了。
總結(jié)
有讀者說這個是玄學(xué),我講講大致的思路。
看到加密先多刷新幾遍,看看加密參數(shù)的值,摸清出加密參數(shù)的規(guī)律,像我們今天分析的這個值,針對不同長度的值產(chǎn)生相同長度的值大概率是哈希類的加密算法,所以想 AES 之類的分組算法就排除了。
再結(jié)合分析邏輯,結(jié)合你看到的代碼,用加密器輔助驗證你的猜想(像我上面那樣測試)可以解決 80% 的徒勞分析。
Love&Share?
[ 完 ]
對了,看完記得一鍵四連,這個對我真的很重要。


對了,看完記得一鍵四連,這個對我真的很重要。