一、什么是无限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语句的执行。