登封建设局网站,虚拟主机建立网站,个人网站网页首页,河北省建设厅网站网上建设大厅debugger 是 JavaScript 中定义的一个专门用于断点调试的关键字#xff0c;只要遇到它#xff0c;JavaScript 的执行便会在此处中断#xff0c;进入调试模式。 有了 debugger 这个关键字#xff0c;就可以非常方便地对 JavaScript 代码进行调试#xff0c;比如使用 JavaSc…debugger 是 JavaScript 中定义的一个专门用于断点调试的关键字只要遇到它JavaScript 的执行便会在此处中断进入调试模式。 有了 debugger 这个关键字就可以非常方便地对 JavaScript 代码进行调试比如使用 JavaScript Hook 时可以加入 debugger 关键字使其在关键字的位置停下来以便查找逆向突破口。 但有时候debugger 会被网站开发者利用使其成为阻挠我们正常调试的拦路虎——无限 debugger。 结合案例来体验如何绕过无限 debugger。
案例介绍 案例网址https://antispider8.scrape.center/打开这个网站一般操作和之前的网站没有啥不同。但是一旦打开开发者工具就会发现它立即进入了断点模式如图所示 我们既没有设置任何断点也没有执行任何额外的脚本它就直接进入了断点模式。这时候我们可以点击 Resume script execution恢复脚本执行按钮尝试跳过这个断点继续执行如图所示 不管点击多少次按钮它仍然一次次地进入断点模式无限循环下去我们称这样的情况为无限 debugger。 解决办法是有的。首先介绍一下无限 debugger 的实现原理。实现原理 找到无限 debugger 的源头。在 Sources 面板中可以看到debugger 关键字出现在一个 JavaScript 文件里这时点击左下角的格式化按钮如图所示 发现这里通过 setInterval 循环每秒执行 1 次 debugger 语句。 当然还有很多类似的实现比如无限 for 循环、无限 while 循环、无限递归调用等它们都可以实现这样的效果原理大同小异。 知道了原理那么解决的办法也有多种我推荐一种方法是利用开发者工具 Overrides 面板选项卡替换文件实现。替换文件 利用它可以将远程的 JavaScript 文件替换成本地的 JavaScritp 文件这里我们只需在新的文件里面把 debugger 这个关键字删除或者注释掉。 修改如下 setInterval((function() {//debugger ; //可以直接删除此行或者注释此行console.log(debugger)}), 1e3),打开 Sources 面板下的 Overrides 面板将修改后的完整 JavaScript 文件复制你去修改的内容如图所示 注释完之后重新刷新网页这时候发现不会进入无限 debugger 模式了。 关于 Overrides 选项卡的用法可以用小蜜蜂 AI 的智慧问答获取更多详细信息网址:https://zglg.work。