爬取某二手書網(wǎng)數(shù)據(jù) randomcodesign解密
聲明:本文只作學(xué)習(xí)研究,禁止用于非法用途,否則后果自負(fù),
如有侵權(quán),請告知?jiǎng)h除,謝謝!本人純粹技術(shù)愛好,若侵犯貴公司的權(quán)益,請告知
今天看到群里有人說孔網(wǎng)的數(shù)據(jù)抓取不到,一直返回空數(shù)據(jù),好奇看了下
1.通過抓包獲取到數(shù)據(jù)包

2.將數(shù)據(jù)包進(jìn)行重發(fā)看到,即使是重發(fā)的數(shù)據(jù)也是返回空的

3.于是從cookie里入手
randomcodekey:固定的,并有api返回
TY_SESSION_ID:固定的,但沒搜索到有api返回
randomcode、randomcodesign:變化的,randomcode由上一個(gè)api返回,randomcodesign大概是通過randomcode加密得到的
F12 搜索randomcodesign關(guān)鍵詞,可以看大randomcodesign的值是e,e又是通過JSEncrypt加密得到的

4.打上斷點(diǎn),刷新頁面,console里看KFZ.tools.cookies("randomcode")的值和t.encrypt(String(e))的值,再與抓包的數(shù)據(jù)做對比,可以很清楚的看到兩個(gè)值是一樣的。

5.扣js代碼

這個(gè)執(zhí)行的步驟是創(chuàng)建JSEncrypt對象,放入公共的key和randomcode值得到e,e又通過t.encrypt(String(e))得到并復(fù)制到randomcodesign

將JSEncrypt全部復(fù)制下來,將rqEncrypt的調(diào)用也復(fù)制下來,在js的頭部補(bǔ)上`window=global`,復(fù)制一個(gè)randomcode運(yùn)行代碼即可得到randomcodesign

6.還有一個(gè)參數(shù)TY_SESSION_ID,同樣的方式搜索,生成的方式很簡單,復(fù)制出來就可以用

7.在抓包工具中搜索randomcode是哪個(gè)返回的,randomcodekey也是從這個(gè)接口中返回

在請求中是沒有任何加密的,可以確認(rèn)這個(gè)就是最先請求并返回相關(guān)的數(shù)據(jù)的了

8.模擬請求,看相關(guān)參數(shù)能不能正常返回,測試結(jié)果是可以的

請求圖書數(shù)據(jù),將js代碼通過execjs調(diào)用生成randomcodesign和TY_SESSION_ID


參數(shù)生成正常,就看能不能獲取到數(shù)據(jù)了

請求后數(shù)據(jù)是正常返回的,就說明已經(jīng)可以了
**如有侵權(quán)請聯(lián)系刪除**