Python 爬蟲進(jìn)階必備 | 某外賣平臺(tái) token 加密邏輯
網(wǎng)站鏈接
aHR0cHM6Ly9oNS53YWltYWkubWVpdHVhbi5jb20vd2FpbWFpL21pbmRleC9ob21l
網(wǎng)站分析
搜索的post,提交參數(shù)中有一個(gè)_token的加密參數(shù)

通過搜索關(guān)鍵詞_token:有兩個(gè)文件,在兩個(gè)文件中搜索token關(guān)鍵字,最終定位到一個(gè)js文件內(nèi),并在所有的關(guān)鍵詞可疑點(diǎn)上都打上斷點(diǎn)
然后最終定位到這里,這個(gè)n.data._token = (0, c.Z)(n.url, n.data), delete n.appendMTSI);就是加密的位置,我們點(diǎn)進(jìn)去看js

經(jīng)過分析,鎖定這個(gè)A就是加密邏輯的函數(shù)

進(jìn)入到這個(gè)函數(shù)中,基本確認(rèn)這里就是加密邏輯的入口函數(shù)了

然后我們把js復(fù)制下來放在本地去執(zhí)行分析
js分析
扣下來的js會(huì)有很多環(huán)境缺失的報(bào)錯(cuò),補(bǔ)上window,document,navigator環(huán)境就可以了
這里還有個(gè)點(diǎn),要把這個(gè)對(duì)象的這兩個(gè)值也傳過來,不然也會(huì)報(bào)錯(cuò)

直接在js上方手動(dòng)寫死,聲明就可以
var?Rohr_Opt?=?Object;
Rohr_Opt.Flag?=?101701;
Rohr_Opt.LogVal?=?"rohrdata";
然后就是在外部去調(diào)用函數(shù),直接用window.變量把函數(shù)提升到全局作用域,就可以直接在外部去調(diào)用了

最后直接在外部,傳參調(diào)用,就能得到加密后的值了
//?調(diào)用:
console.log(window.meituan_token('url參數(shù)'))
//?運(yùn)算結(jié)果為:
eJyrViryTFGyMjQwNDcw1FEqSy1SslIy1DPQM1PSUSopBsqYGVuYGhiampubWhrrKCWji1noKCUVhbkoWUUbm5vqWBgaxYIEgoB8hACCZWQCRCAVnkAFSolJ+aUlVkk5iXnZQNuUgOK5IUBxIJ0NpROhdAmM7wt0HlBtcWZ6HpCV6lUREpru6ejonu4YFGhrq1QLAMYrNQY=
小結(jié)
這個(gè)token不是很難,另外還有一個(gè)加密參數(shù),我們下篇文章再說
