还在为页面不断debugger而烦恼吗?三分钟让你解决烦恼

当在爬取或查看网站前端代码时,遇到控制台频繁断点导致页面卡顿,本文分享如何禁止断点以继续调试,并探讨不同情况下的解决方案,包括简单重定义方法和使用条件断点。此外,还提供了应对反调试技巧。

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

小编前两天遇到了一个问题,现在来重现一下:
在我爬xx网站的前端代码,我打开控制台要看Network,结果一打开控制台就不断的debugger,100ms一次,就让我很头疼,完全看不到页面内容 图下:

在这里插入图片描述

然后小编冷静分析
每次我再断点停下来的时候页面就会跳到source这个tab页面,也能够看到他的debugger代码,
其实实现起来也不难,就一行代码

(function() {var a = new Date(); debugger; return new Date() - a > 100;}())

看起来是不是很简单,但是却很有效果
就是不停的打断你,然后跳到source页面阻止我看到他的debugger代码,不断的产生不可回收的对象,占用内存,造成内存泄漏,没过多久浏览器就会卡顿,所以带来的影响还是挺大的,我就准备解决一下这个问题
解决问题
其实这个问题解决起来也是很简单那就是:禁止断点
chrome控制台的source Tab页点击Deactivate breakpoints按钮或者按下ctrl+f8图下:
在这里插入图片描述

这样就O了,问题就解决了,但是这个方法有点杀敌一千自损八百的意思,毕竟这样禁止断点我们以后也没办法调试网站了,那有什么办法可以满足我们既能阻止网站一直debugger还能让我们继续调试网站的代码呢,那就要看网站怎么实现不断debugger了有的网站就做的比较简单,类似:

setInterval(startDebug, 100); // 举个例子
function startDebug() { debugger; };

像这种情况的话就比较好解决,我们随便重新定义一下这个方法就行了,如下:

function startDebug() {};

也有些网站就厉害一点,用匿名函数来做的,例如:

setInterval(function () { debugger }, 100); // 举个例子

就在我为这个头疼的时候我一个朋友给我出了个解决方案:用条件断点来应对

setInterval(function () { debugger }, 100); // 举个例子

小编试了下,确实还ok但是又局限性,先说可以应对的情况,图下:

在这里插入图片描述

再来看看不能应对的情况,图下:

在这里插入图片描述

就是说条件断点的使用情况和集体代码的书写风格有关系,另外我发现Add conditional breakpoint 下面的Never pause here 也能在突破反调试的时候起到做用,局限性和Add conditional breakpoint 是一样的,用两个图来展示一下
work的情况:

在这里插入图片描述

不能work的情况:

在这里插入图片描述

以上就是小编今天带来的内容
小编本身就是一名python开发工程师我自己花了三天时间整理了一套python学习教程从最基础的python脚本到web开发,爬虫,数据分析,数据可视化,机器学习,等,这些资料有想要的小伙伴 点击 即可领取

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值