无限debugger 解决方式

无限debugger的主要作用?
反调试/反爬虫:阻止我们调试和分析目标代码的运行逻辑

无限debugger的基本实现
debugger关键字的应用:

 
  1. Function/eval “debugger”

  2. function debugger

  3. function anonymous({

  4. debugger

  5. })

解决办法:

第一种:手动关闭断点调试

关闭掉debug调试

第二种:使用中间人方法。

主要是借助其他工具将debugger替换成’debuger’,将关键字变成字符串,使关键字失去它的作用第三方的工具主要有:fiddler、mitmproxy等,如果有需要请自行百度学习。

第三种:更换js文件

reres替换本地修改过的文件

思路:首先获取js文件,下载到本地,将文件修改(将debugger删除或者改写),重新请求时使用本地修改过的js文件,具

### 无限 Debugger 的常见表现与解决方法 当浏览器控制台打开时,页面自动进入无限 `debugger` 状态,通常是网站为了防止调试或逆向分析而设置的反调试机制。这种机制会不断触发 `debugger` 语句,导致浏览器进入调试模式并频繁中断执行,从而干扰正常的调试流程。 #### 常见解决方法 1. **禁用断点(Deactivate Breakpoints)** 在 Chrome 浏览器中,控制台右侧有一个“暂停”图标(看起来像一个播放/暂停按钮),点击该按钮可以禁用所有断点。这样即使页面中存在 `debugger` 语句,也不会触发调试中断。随后刷新页面即可正常访问内容[^1]。 2. **覆盖 `debugger` 语句** 可以通过覆盖 `debugger` 语句的执行逻辑来绕过反调试机制。例如,在控制台中执行以下代码,将 `debugger` 替换为空函数: ```javascript (function() { var origDebug = window.debugger; window.debugger = function() {}; })(); ``` 这种方式可以阻止 `debugger` 语句触发调试中断[^2]。 3. **禁用 JavaScript 脚本** 在某些情况下,可以通过禁用特定的 JavaScript 脚本来阻止无限 `debugger` 的执行。在 Chrome 浏览器中,可以右键点击触发 `debugger` 的脚本文件,然后选择“Never pause here”来忽略该脚本的调试中断[^1]。 4. **使用浏览器扩展工具** 使用如 **uBlock Origin** 或 **Tampermonkey** 筜浏览器扩展,可以拦截或修改网页中的 JavaScript 行为。例如,通过 Tampermonkey 编写自定义脚本,覆盖或删除触发 `debugger` 的代码逻辑,从而避免无限调试中断。 5. **修改网页源代码(临时)** 在开发者工具中,可以直接修改网页源代码,删除或注释掉触发 `debugger` 的代码段。例如,找到类似以下代码的段落并将其移除: ```javascript setInterval(function () { check() }, 4000) var check = function () { function doCheck(a) { if (('' + a / a)['length'] !== 1 || a % 20 === 0) { ;(function () {}['constructor']('debugger')()) } else { ;(function () {}['constructor']('debugger')()) } doCheck(++a) } try { doCheck(0) } catch (err) {} } check() ``` 这种方式适用于临时调试,但页面刷新后修改会失效[^4]。 #### 防止无限 Debugger 的代码分析 网站通常使用如下代码实现无限 `debugger` 机制: ```javascript setInterval(function () { check() }, 4000) var check = function () { function doCheck(a) { if (('' + a / a)['length'] !== 1 || a % 20 === 0) { ;(function () {}['constructor']('debugger')()) } else { ;(function () {}['constructor']('debugger')()) } doCheck(++a) } try { doCheck(0) } catch (err) {} } check() ``` 该代码通过 `setInterval` 定时执行 `check()` 函数,并在 `doCheck()` 函数中不断触发 `debugger` 语句。这种机制会干扰调试器的正常运行,导致浏览器频繁中断执行[^4]。 --- ###
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

程序007

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值