js逆向?qū)W習(xí)之旅 ——加速樂(lè)解密

最近很焦慮...覺(jué)得爬蟲(chóng)越來(lái)越難,遇到j(luò)s加密基本都是歇菜,一開(kāi)始還可以用selenium、pyppeteer啥來(lái)獲取一下,且不說(shuō)慢和耗資源的問(wèn)題,有的網(wǎng)站直接給你檢測(cè)(taobao、hbwjw等),搞不好網(wǎng)段還給你封掉,還是得學(xué)習(xí)啊,邊學(xué)邊記錄吧,覺(jué)得有用看到了點(diǎn)個(gè)贊哦!有不足的也要提醒我喲!筆芯~

以(https://www.mps.gov.cn/)為例(僅供學(xué)習(xí)交流,請(qǐng)勿用作商用):

1. 打開(kāi)chrome抓個(gè)包(注:一定要選上preserve log選項(xiàng),此處有重定向)

抓包

可以看到第一次請(qǐng)求首頁(yè)返回狀態(tài)碼是521,然后自動(dòng)重載了頁(yè)面后成了200,所以我們對(duì)比下兩次的請(qǐng)求


第一次請(qǐng)求


第二次請(qǐng)求

很明顯兩次請(qǐng)求頭在cookie上有變化,猜測(cè)是cookie不一決定了不同的請(qǐng)求結(jié)果,我們?cè)儆胷equests模擬一下請(qǐng)求看看(這里cookie的決定參數(shù)只有兩個(gè),所以我刪了一下,可自行嘗試)


對(duì)比兩次請(qǐng)求響應(yīng)結(jié)果

由此我們可判斷關(guān)鍵是獲取參數(shù)__jsl_clearance的值(__jsluid_s的值第一次請(qǐng)求已返回),第二次請(qǐng)求亂碼:可以用requests.content.decode("utf-8")就好啦!

2. 分析第一次響應(yīng)內(nèi)容

把script標(biāo)簽里的內(nèi)容拿出來(lái),格式化,這段代碼的關(guān)鍵是eval那塊,但是沒(méi)有返回值,所以我們修改一下


格式化響應(yīng)


我安裝了node直接執(zhí)行了,后面放python執(zhí)行js的圖

拿到執(zhí)行后的數(shù)據(jù),終于看到了生成cookie的js代碼了!??!

執(zhí)行后返回生成cookie的js

3. 修改加密參數(shù)js塊

因?yàn)樯蠄D不是很友好,所以我們?cè)俑母?..


修改后的js

執(zhí)行結(jié)果我就不放了,已經(jīng)破案了,兄弟們?。?!快去驗(yàn)證一下!

完美?。。?/div>

哈哈哈哈,最后一個(gè)圖放我的demo吧,用execjs來(lái)執(zhí)行js


demo

碼字不易,跪求各路兄弟點(diǎn)贊!?。∫晃冶瑐€(gè)照吧。。





















嘿嘿.....想啥呢?!在線擼貓吧還是!?。?!

喵大錘
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

友情鏈接更多精彩內(nèi)容