一、什么是無限debugger
????????有些網站為了防止爬蟲或其他惡意行為,會故意設置無限debugger作為一種簡單的反爬機制,它會在開發者工具打開的情況下不斷暫停執行。這對于想要分析其他代碼邏輯、排查問題或進行正常開發調試工作的開發者來說極為不便。
二、解決無限debugger問題的常用方法
(1)禁用所有斷點
????????在瀏覽器開發者工具的Sources面板中,通常有一個按鈕可以一鍵禁用所有已設置的斷點,這樣頁面就不會再因為任何斷點而暫停執行。
(2)禁用特定斷點
????????如果知道導致無限循環的是某個具體的斷點,可以在源代碼行號旁邊點擊該斷點圖標以禁用它,或者右鍵單擊選擇“Never pause here(永不在此處暫停)”。
(3)設置條件斷點
????????只有當變量值符合預設條件時,調試器才會在那一行暫停,所以可以設置條件為false這樣的話就永遠不會執行debugger語句。
(4)使用中間人抓包工具替換特征字符串
????????通過Fiddler、Charles、Reqable等網絡代理工具,在接收到的JavaScript文件內容中查找并替換掉包含debugger關鍵字的地方,使其失效。
(5)利用瀏覽器Overrides功能
對于某些支持overrides功能的瀏覽器(如Chrome),你可以將本地修改過的JavaScript文件映射到線上資源,從而避免執行含有debugger語句的原始代碼。
(6)重寫關鍵函數
置空法:通過全局搜索定位后注釋或刪除相關代碼。
Hook法:Hook相關函數來移除或阻止debugger語句的執行。