爬虫技巧----突破前端反调试(无限debugger)

在采集某些网站时,目标网站会采取反调试措施,如无限循环命中debugger断点。文章介绍了几种解决方法,包括禁用浏览器断点、利用中间人(如Fiddler)或浏览器插件修改响应代码、手动替换代码,还提到了更简单的选择永不再此处暂停的方式。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >


转载请注明出处

需求描述

在采集某些网站时,目标网站为了防止别人分析调试前端代码,采取了反调试措施。其中一种做法是当你按F12进入浏览器控制台后,浏览器会自动命中debugger断点,并且无限循环,导致无法调试。以某网站为例。如下图:

按F12进入控制台
在这里插入图片描述

解决方法

1.禁用浏览器断点

在这里插入图片描述
点击图中按钮,之后将不会再命中任何断点。这种方法虽然可以防止无限循环命中debugger断点,但是也存在很大的缺陷,因为对于其他代码,我们还是需要断点调试功能的。所以这个方法仅限于静态分析。

2.利用中间人修改响应代码

在前面的Fiddler教程系列文章中,已经介绍了Fiddler的基础及进阶使用。利用Fiddler修改响应,删除响应代码中的debugger即可达到目的
实现的核心代码很简单:如下
在这里插入图片描述
实际使用中发现,位于响应html页的debugger被删除了,但是仍然会弹出断点。分析页面得到,debugger断点位置一共有2处 第一处的debugger以明文形式存在,Fiddler删除的就是这部分。通过分析另一处debugger位置,发现debugger是通过eval去实现的,响应中并没有直接出现debugger字段,所以没有被替换掉。
在这里插入图片描述
代码经过强混淆,读者看到的函数名称是和我不一样的。

3.利用浏览器插件修改响应代码

具体原理和使用Fiddler是相同的,通过浏览器插件将请求重定向以达到修改代码的目的。也存在相同的问题

4.手动替换代码

既然修改响应结果无法满足需求,那只能从代码中寻找突破了。
以本文的网站为例,查看debugger断点处的调用栈堆,找到调用位置。其实在上文中间人方式结尾处已经发现了。是通过eval去实现断点的。我们先构造一个空方法
在这里插入图片描述
将目标网站的方法偷梁换柱
在这里插入图片描述
由于网站代码强混淆,所以函数名称会不一样。下面放个GIF图
在这里插入图片描述
完美解决 但是注意不要刷新,页面刷新后需要重新替换。

5.更简单的方式

找到命中debugger的位置,选择永不再此处暂停(nerve pause here)

在这里插入图片描述

评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值