Python 爬蟲進階必備 | 某藥品商城加密參數(shù) ex1 加密邏輯分析
第一時間關注Python技術干貨!

圖源:極簡壁紙
今日網(wǎng)站
aHR0cHM6Ly9kaWFuLnlzYmFuZy5jbi8jL2luZGV4Q29udGVudD9zZWFyY2hLZXk9JUU2JTg0JTlGJUU1JTg2JTkyJUU3JTgxJUI1Jl90PTE2MzI2MTgxODk4MzY=
這個站來自交流 4 群
發(fā)現(xiàn)大佬越來越多了,群里有問個站都有大佬做過了

牛哇牛哇~

加密定位
需要分析的值在下圖中用紅框標注

這個值每次請求都不一樣,并且這個名字較短不好通過檢索參數(shù)名檢索到
試過通過檢索ex來定位發(fā)現(xiàn)關聯(lián)的結果也非常多,所以老老實實用 xhr 斷點分析,用 js 堆棧分析也可以,但是分析的步驟差別不大

下好斷點之后刷新,頁面就斷住了

逐個分析,直到下面這個位置

可以看到這里用到了interceptors,關于這個的用法之前的很多文章都寫了
大概率是在這個位置里進行的了請求的封包,所以我們斷點需要打在這個位置

進一步分析可以看到下面這個位置

這里可以看到我們請求包中提交的其他參數(shù),但是沒有看到要分析的ex1
但是可以看到所有的參數(shù)都經過了O方法的處理,處理之后n中就生成了ex1

所以O就是加密生成的位置

“懶得一步步定位的看這里
直接搜 e.split("").map
加密分析
單步到O中可以看到

這里就是參數(shù)生成的地方,傳入了參數(shù)e
并且這里用到了T還有w兩個方法
function O() {
var e = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : {}
, t = k
, n = P
, a = E
, i = T();
return e[t + n + a] = function(e) {
for (var t = B.b.split("").map(function(e) {
return Number(e)
}), n = e.split("").map(function(e) {
return Number(e)
}), a = 7 * n.reduce(function(e, t) {
return e + t
}, 0) % 10, i = [], r = 0, o = 0; o < n.length; o++)
i[o] = (n[o] + t[r]) % 10,
r = (r + 1) % t.length;
for (var c = t.length % n.length, s = Array.apply(null, {
length: 10
}), l = 0; l < c; l++)
s[l] = i[i.length - l - 1];
s[c] = a;
for (var u = c + 1; u < i.length + 1; u++)
s[u] = i[i.length - u];
return w(s.join(""))
}(i),
t = null,
n = null,
a = null,
e
}
之后全部都是計算
所以直接拷貝代碼到編輯器里面,把參數(shù)整好,調用運行

這里需要把T補齊
這里的T是一個時間戳減去了值

補齊之后再次運行報w未定義

再把s補齊
function w(e) {
for (var t = [], n = function () {
for (var e = [], t = 0; t < 36; t++)
t >= 0 && t <= 9 ? e.push(t) : e.push(String.fromCharCode(t + 87));
return e
}(); e;) {
var a = e % 36;
t.unshift(n[a]),
e = parseInt(e / 36)
}
console.log(t.join(""))
return t.join("")
}
補齊之后就可以輸出值了

這個參數(shù)不是很難,但是就是定位比較麻煩,并且用字符串拼接的方式完成參數(shù)賦值生成。
我是沒有更新就在摸魚的咸魚
以上就是今天的全部內容了
收到請回復~
我們下次再見。
對了,看完記得一鍵四連,這個對我真的很重要。
