創(chuàng)新互聯(lián)建站-專業(yè)網(wǎng)站定制、快速模板網(wǎng)站建設(shè)、高性價比江達(dá)網(wǎng)站開發(fā)、企業(yè)建站全套包干低至880元,成熟完善的模板庫,直接使用。一站式江達(dá)網(wǎng)站制作公司更省心,省錢,快速模板網(wǎng)站建設(shè)找我們,業(yè)務(wù)覆蓋江達(dá)地區(qū)。費(fèi)用合理售后完善,十余年實(shí)體公司更值得信賴。
本文章中所有內(nèi)容僅供學(xué)習(xí)交流,抓包內(nèi)容、敏感網(wǎng)址、數(shù)據(jù)接口均已做脫敏處理,嚴(yán)禁用于商業(yè)用途和非法用途,否則由此產(chǎn)生的一切后果均與作者無關(guān),若有侵權(quán),請聯(lián)系我立即刪除!
aHR0cHM6Ly93d3cubXBzLmdvdi5jbi9pbmRleC5odG1s
加速樂是知道創(chuàng)宇推出的一款網(wǎng)站CDN加速、網(wǎng)站安全防護(hù)平臺。
加速樂的特點(diǎn)是訪問網(wǎng)站一般有三次請求:
根據(jù)我們上面講的加速樂的特點(diǎn),我們想要獲取到真實(shí)的 HTML 頁面,需要經(jīng)過以下三個步驟:
進(jìn)入網(wǎng)站,打開開發(fā)者人員工具進(jìn)行抓包,在 Network 中我們可以看到,請求頁面發(fā)生了三次響應(yīng) index.html,且前兩次返回狀態(tài)碼為 521,符合加速樂的特點(diǎn):
直接查看 response 顯示無響應(yīng)內(nèi)容,我們通過 Fiddler 對網(wǎng)站進(jìn)行抓包,可以看到第一個 index.html 返回的響應(yīng)內(nèi)容經(jīng)過 AAEncode 加密,大致內(nèi)容如下,可以看到一堆顏表情符號,還挺有意思的:
document.cookie 里的顏表情串實(shí)際上是第一次 __jsl_clearance_s 的值,可以直接通過正則提取到加密內(nèi)容后,使用execjs.eval()
方法即可得到解密后的值:
import re
import execjs
AAEncode_text = """以上內(nèi)容"""
content_first = re.findall('cookie=(.*?);location', AAEncode_text)[0]
jsl_clearance_s = execjs.eval(content_first).split(';')[0]
print(jsl_clearance_s)
# __jsl_clearance_s=.109|-1|7n4kX8Rwzc8wTjrbHmWHj9GXCtI%3D
抓包到的第二個 index.html 返回的是經(jīng)過 OB 混淆的 JS 文件,我們需要對其進(jìn)行調(diào)試分析,但是直接在網(wǎng)頁中通過 search 搜索很難找到該 JS 文件的位置,這里推薦兩種方式對其進(jìn)行定位:
右鍵點(diǎn)擊抓包到的第二個狀態(tài)碼為 521 的 index.html 文件,然后按照以下方式將其保存到本地:
保存到本地后會發(fā)現(xiàn) JS 文件被壓縮了不利于觀察,可以通過以下網(wǎng)站中的 JS 格式化工具將其格式化:https://spidertools.cn/#/formatJS,將格式化后的代碼粘貼到編輯器中進(jìn)行處理,可能需要一些微調(diào),例如首尾 Script 標(biāo)簽前后會多出空格,在 < script > 后添加debugger;
如下所示:
', resp_second.text)[0]
params = json.loads(go_params)
return params
def get_third_cookie():
with open('jsl.js', 'r', encoding='utf-8') as f:
jsl_js = f.read()
params = get_second_cookie()
# 傳入字典
third_cookie = execjs.compile(jsl_js).call('cookies', params)
cookies.update(third_cookie)
def main():
get_first_cookie()
get_third_cookie()
resp_third = requests.get(url=url, headers=headers, cookies=cookies)
resp_third.encoding = 'utf-8'
print(resp_third.text)
if __name__ == '__main__':
main()