Python 爬蟲進(jìn)階必備 - 以 aqistudy 為例的無限 debugger 反調(diào)試?yán)@過演...
點擊上方“咸魚學(xué)Python”,選擇“加為星標(biāo)”
第一時間關(guān)注Python技術(shù)干貨!
今日網(wǎng)站
aHR0cHM6Ly93d3cuYXFpc3R1ZHkuY24v
這個站是看到讀者在其他群里問以為又改版了,所以打開瞅瞅
本篇文章只演示反調(diào)試的繞過,其他內(nèi)容之前文章講過了。
請自行翻閱
Python爬蟲進(jìn)階必備 | 關(guān)于某監(jiān)測網(wǎng)站的內(nèi)容加密分析
JS逆向 | 分析某監(jiān)測網(wǎng)站的 debugger 反爬措施
debugger 的繞過
最后附視頻演示
打開網(wǎng)站,發(fā)現(xiàn)網(wǎng)站禁用了 F12 和 右鍵


這樣的反調(diào)試可以通過 Ctrl + Shift + i 打開控制臺
打開控制臺之后看到提示debugger

這樣的 debugger ,可以在堆棧里翻看上一層堆??纯茨芊裰每蘸瘮?shù)來防止進(jìn)入 debugger

通過堆??梢钥吹?code style="font-size:14px;background-color:rgba(27,31,35,.05);font-family:'Operator Mono', Consolas, Monaco, Menlo, monospace;color:rgb(71,193,168);">txsdefwsw這個方法調(diào)用了debugger

這個方法是在首頁調(diào)用的,試了下txsdefwsw = function(){}
發(fā)現(xiàn)還是會出現(xiàn)調(diào)用,再看堆棧,發(fā)現(xiàn)原來還有setInterval循環(huán)調(diào)用了檢測邏輯


可以看到上圖的堆棧,最頂層是city_realtime.php
在這個堆棧里找到了兩個eval

所以這個網(wǎng)站的整套邏輯我猜是下面這樣的
1、請求目標(biāo)網(wǎng)站
2、目標(biāo)網(wǎng)站加載首頁(首頁中包含上圖的兩個?eval)
3、eval?中包含檢測邏輯
4、訪客打開控制臺,被已經(jīng)加載的檢測邏輯檢測,完成反調(diào)試
知道這個套路之后我們要這么反反調(diào)試?
1、本地代理這個首頁,替換首頁的eval
這個法子的工具用 Fiddler 或者 Reres ,用規(guī)則匹配到這個頁面然后替換就好了,網(wǎng)上的資料很多或參考之前的文章
Python爬蟲進(jìn)階必備 | 關(guān)于 ReRes 的一篇教程
2、使用如下視頻的方法調(diào)試,可以在 vm 的生命周期內(nèi)不用理會 debugger
有讀者試過視頻中的方法,但是就是不行,這是為啥?
這里可能是忽略了一個小細(xì)節(jié),這個可以在代碼中找到答案

這里檢測了 window 的內(nèi)外長寬,當(dāng)我們打開控制臺,原有展示的頁面就小了,所以只要把控制臺調(diào)整成一個新的窗口就可以規(guī)避,接著使用視頻展示的就可以了。
除此之外,還有讀者好奇eval里面的dxYKI84fjg還有d1JR0RXxxgp邏輯在哪,進(jìn)不到具體邏輯里

可以像我這樣在控制臺輸入函數(shù)名,然后點擊回顯的內(nèi)容就可以自動跳到對應(yīng)的邏輯了,這個方法適用于沒有重寫過toString方法的函數(shù)。
關(guān)于 debugger 反調(diào)試的形式很多,但是檢測的方法大同小異,重要的是理解他為什么會出現(xiàn) debugger ,先知道原理才知道如何繞過。
以上,就是今天的全部內(nèi)容了,我們下次再會~
對了,看完記得一鍵四連,這個對我真的很重要。
