JS逆向实战:破解无限debugger终极方案

引言

大家好,还是原来的爬虫练习平台,本篇文章分享无限 debugger 的终极破解方案。

antispider8

antispider8地址:https://antispider8.scrape.center

antispider8说明:

JavaScript 反爬,增加了接口处的无限 debugger 和定时循环 debugger。

打开后,发现每隔一段时间就会自动断下,即使点了继续执行,过了大概一秒还是会自动断下,无法继续调试。

image-20250204135923634

忽略 debugger

image-20250204140117140

image-20250204140150069

这个时候,如果使用的是 chrome 浏览器,有一个小技巧可以直接屏蔽掉 debugger,在断点断下后,我们点击图片中箭头指向的位置,点击右键会发现有一个一律不在此处暂停的选项,点击它。

image-20250204140233078

点击后,会发现正常的断点都是蓝色的,选择一律不在此处暂停按钮后,断点的颜色变成了黄色,这个时候,我们点击 F8 或者继续执行按钮,让代码继续走下去就会发现,刚才的无限 debugger 再也不会断下来了。并且我们手动下的断点还是可以正常使用的,不影响正常的调试。

image-20250204141002673

点击下一页,发现还有一个 debugger 在发送请求的地方,正好不用我们自己找了,查看了一下 token 的生成方式,发现和之前没什么区别,这里就不重复写了。

其他方案

忽略 debugger 的方案在大多数情况下是有效的,不过现在很多网站这样处理也无法跳过了,更不用说同时还会有其他的混淆,例如格式化检测,内存爆破,动态生成代码等等。

其实无限 debugger,说起来除了上面的方案之外,还有其他更加有效的方案:

  • 一种是使用 AST 将代码中的 debugger 语句去掉,从 JS 源代码上直接根除 debugger 语句,需要使用抓包工具当中间人动态替换 JS 文件。这种方式可能无法完全去除 debugger,毕竟 JS 有五花八门的混淆方式。

  • 还有一种是从浏览器下手,既然从 JS 上无法做到一劳永逸,就我们直接修改浏览器的 V8 引擎,从源代码的角度直接将所有的 debugger 在编译 JS 的时候去掉,需要掌握编译开源 chromium 的技巧和修改 V8 代码的能力。这种方式基本上可以说一劳永逸,但是操作起来超级麻烦,编译 chromium 需要配置很多环境,下载一些工具链,占用 20G+的磁盘空间和好多个小时的编译时间,性价比低。

  • 如果不想重新编译 chromium,还有一种方案可以从直接修改 chrome 的二进制文件,将 debugger 关键字直接修改为其他关键字,但是这种操作局限性比较多,毕竟直接修改了二进制文件,会破坏浏览器的完整性,可能会有其他的问题。

  • 还有一种就是我要说的终极方案,性价比高,操作简单,那就是:换 Firefox 浏览器!

使用 Firefox 浏览器

可能很少有人知道,Firefox 的 121.0 新增了一个功能,可以在不用修改浏览器代码的情况下,完全忽略 debugger 语句的功能,也就是从浏览器底层直接忽略 debugger 语句,而且这个功能是有开关的。

我们先下载一个 Firefox 试一下:

image-20250204220427151

打开 Firefox,并且访问 antispider8 的地址,Firefox 没有做任何自定义设置,可以看到自动暂停在了 debugger 语句上,但是大家注意右上角我框出来的位置,断点默认勾选了在调试器语句上暂停,我们取消勾选试试。

image-20250204220633417

取消勾选后,点击 F8 继续运行,发现已经不会在 debugger 语句处暂停了,大功告成!

总结

对于无限 debugger 来说,直接换 Firefox 可能是最简单最方便的方案了,如果只有无限 debugger 的话,其实到这里基本就结束了。但是由于 JS 一般都会有多种反调试和混淆方案,并且一般大公司一般不会用无限 debugger 的方案,因为太容易跳过了,但是如果我们遇到的话,最简单的方案就是换 Firefox,节省时间,提高效率。

本文章首发于个人博客 LLLibra146’s blog

本文作者:LLLibra146

更多文章请关注公众号 (LLLibra146):LLLibra146

版权声明:本博客所有文章除特别声明外,均采用 © BY-NC-ND 许可协议。非商用转载请注明出处!严禁商业转载!

本文链接
https://blog.d77.xyz/archives/f56f18c3.html