JS逆向實戰——某東h5st_5.1(補環境)
- 聲明
- 網站
- 流程分析
- 結果展示
- 總結
聲明
本文章中所有內容僅供學習交流,抓包內容、敏感網址、數據接口均已做脫敏處理,嚴禁用于商業用途和非法用途,否則由此產生的一切后果均與作者無關,若有侵權,請聯系我立即刪除!
網站
aHR0cHM6Ly9zZWFyY2guamQuY29tL1NlYXJjaD9rZXl3b3JkPSVFNiU4OSU4QiVFNiU5QyVCQSZzdWdnZXN0PTEuaGlzLjAuMCZ3cT0lRTYlODklOEIlRTYlOUMlQkEmc3RvY2s9MSZwdmlkPWNkYzhjOWI4ZGM1OTRiNDg5NTlmYzc5ZTViMDM1Nzg2JmlzTGlzdD0wJnBhZ2U9MyZzPTU2JmNsaWNrPTAmbG9nX2lkPTE3NDU2NTU5MDE2NzEuOTM1Mg
今天水一篇某東的h5st_5.1版,但是內容不會講的很詳細,說一下我覺得的關鍵內容,不想收到某東的私信,有問題可以直接私信,下面進入正題。
流程分析
搜索h5st可以直接定位到生成位置,發現是個異步,使用py調用時可以先將異步轉同步,或者打印結果后強制停止程序,返回結果調用,我是用的是第二種方法,使用subprocess庫。
參數中的body是請求體中的body經過SHA256加密而成,標準庫,網上找套加密源碼套上就行。
接下來講一下補環境,需要的環境不是很多,就不講的很細了,主要是不方便,容易受到警告。下面列舉一下需要的一些環境。
document.all、canvas、head、getContext_2d等
比較重要的檢測就是document.all,下面放出我補的代碼
const { debug } = require('console')
const { he } = require('faker/lib/locales')
const v8 = require('v8');
const vm=require('vm');
const { prototype } = require('events');
v8.setFlagsFromString('--allow-natives-syntax');
let undetectable = vm.runInThisContext("%GetUndetectable()");
v8.setFlagsFromString('--no-allow-natives-syntax');HTMLAllCollection = function HTMLAllCollection() { };
window.HTMLAllCollection = HTMLAllCollection;all = undetectable;
all.__proto__ = HTMLAllCollection.prototype;
all.length = 3173;
別的環境常規補就沒什么問題了,長度和網頁的差不多就可以去測了,基本沒什么問題。如果實在過不了可以hook隨機數等,最終生成的加密和網頁一致就包沒問題啦,下面放出hook代碼。
Date.now = function now() {return 17375265789541
};
Date.parse = function () {return 1661986251253
};
Date.prototype.valueOf = function () {return 1661986251253
};
Date.prototype.getTime = function () {return 1661986251253
};
Date.prototype.toString = function () {return 1661986251253
};
Performance.prototype.now = function now() {return Number('1661986251253'.slice(8))
}
Math.random = function random() {return 0.08636862211354912
};
window.crypto.getRandomValues = function getRandomValues(array32, ...args) {return array32;
}
結果展示
最終也是可以成功翻頁拿到數據
總結
需要完整代碼的可以私信我,逆向分析中有任何疑問也可以私信我一起討論學習,謝謝大家!!!