dell網(wǎng)站的網(wǎng)站設(shè)計特色優(yōu)化營商環(huán)境 提升服務(wù)效能
分析請求
請求中有m和q是密文,看一下堆棧,定位到這里。注意到這里window.i
是+=所以這里要動態(tài)傳入。
q函數(shù)是簡單的字符串拼接,m是r函數(shù)然后傳入了時間戳和o那下斷點調(diào)試一下
可以看到這里實際是調(diào)用的z函數(shù)。這里看一new的n是什么,可以在這里看到這是一個rsa
加密
同時還定位到了encode函數(shù)。然后可以嘗試扣代碼了,因為rsa
為非對稱算法,所以現(xiàn)當(dāng)作標(biāo)準(zhǔn)的如果不對,在返回來扣取這部分。下面是改寫的js代碼:
encode = function(t, e) {var i = e ? e + "|" + t : t;return encodeURIComponent(RSA_Public_Encrypt(i))
}
function main(i,o){let t = Date.parse(new Date());;let list = {"m": encode(t, o),"q": i+o + '-' + t + "|",};return list;
}
編寫python代碼嘗試調(diào)用main函數(shù)請求,得到下面的結(jié)果:
這里回到剛才的瀏覽器中,摳取代碼。
扣取代碼
將瀏覽器代碼復(fù)制到本地時,發(fā)現(xiàn)這堆東西,順手還原一下:
然后就在下面看到了navigator,window被賦值為空,這里直接設(shè)置window為global,刪掉navigator,在全局搜索一下navigator,window,看一下有哪里調(diào)用檢測的。然后手動將他們參照瀏覽器修改,同時這里發(fā)現(xiàn)一段jsfuck混淆的代碼,扔然復(fù)制到瀏覽器,然后修改對應(yīng)的值;
再次運行就出值了,然后使用py調(diào)用嘗試一下。發(fā)現(xiàn)只能獲取第一頁的數(shù)據(jù)。比較一下有什么區(qū)別。
這里推測是i的問題,因為第一次i是空,那么每次都傳空試一下。
注釋掉這行+=的代碼,發(fā)現(xiàn)就可以正常得到數(shù)據(jù)了,但很明顯這里和瀏覽器是對不上的,是一個風(fēng)控點,這里就不再向下推測了。