无限debugger的几种处理方式

不少网站会在代码中加入‘debugger’,使你F12时一直卡在debugger,这种措施会让新手朋友束手无策。

js中创建debugger的方式有很多,基础的形式有:

①直接创建debugger

debugger;

②通过eval创建debugger(在虚拟机中创建)

eval('debugger');

③通过Function创建debugger(在虚拟机中创建)

Function('debugger').call()
Function('debugger').apply()
Function().constructor('debugger').apply('action')

而我们遇到的debugger,多数是在这些形式的基础上,或配合定时器,或加上循环,甚至经过ob混淆。。。

对于过无限debugger,常用的方法有以下这些:

1、一律不在此处暂停

2、添加条件断点

 在debugger处添加一个结果为false的条件,让这个断点不会被运行

3、替换文件

 如果debugger是在js文件中,直接替换文件,删掉debugger,一劳永逸

4、hook

对于一些在虚拟机(VM)中生成的debugger,使用‘一律不在此处暂停(Never pause here)’后会出现网站变的很卡的情况,因为有些网站做了检测,这么做会卡爆你的浏览器。这个时候我们就需要hook。

根据debugger创建方式的不同,使用不同的hook代码

4.1、hook evel

eval_back = eval
eval = function (args) {if (args.includes('debugger')) {return null} else {return eval_back(args);}
}

4.2、hook constructor

Function.prototype._constructor = Function.prototype.constructor;
Function.prototype.constructor = function() {if(arguments.toString().includes('debugger')){return null}return Function.prototype._constructor.apply(this,arguments);
}

4.3、hook setInterval

setInterval_back = setInterval
setInterval = function(a,b){if(a.toString().includes('debugger')){return null;}return setInterval_back(a, b);
}

要注意注入hook代码要在执行debugger之前,所以要先在debugger前面的地方打断点,再刷新页面注入hook代码

5、油猴插件

有些网站,刷新之后会新开虚拟机,之前打下的断点就没有了,无法在执行debugger之前注入hook。对于这种情况,可以用油猴写hook脚本来监控网站,不用提前打断点。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/521780.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

VR数字化线上展馆降低企业投入成本和周期

VR云展会是一种全新的展览形式,它利用虚拟现实技术,将实体展览搬到线上,让观众可以在家中就能参观各种展览。这种新型的展览方式有许多亮点,下面就来详细介绍一下。 首先,VR云展会打破了地域限制。传统的实体展览通常只…

Sublime Text for Mac/Win:跨平台编程利器,让代码编辑更高效

在当下这个数字化、信息化的时代,编程已经成为越来越多人的必备技能。而对于编程者来说,一款好的代码编辑器不仅能提升工作效率,还能为创作过程增添乐趣。今天,我要向大家推荐的,就是这样一款强大的跨平台代码编辑器—…

RocketMQ如何保证消息的顺序性?

和Kafka只支持同一个Partition 内的消息的顺序性一样,RocketMQ中的也提供了基于队列(分区)的顺序消费。即同一个队列内的消息可以做到有序,但是不同队列内的消息是无序的! 当我们作为MQ生产者需要发送顺序消息时,需要在send方法中,传入一个MessageQueueSelector。 Mes…

docker 部署prometheus+grafana

首先进行部署docker 配置阿里云依赖: curl -o /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-7.repo # 配置centos 7的镜像源 yum install -y yum-utils device-mapper-persistent-data lvm2 # 安装一些后期或需要的的一下依…

S32 Design Studio PE工具配置ADC

工具配置 我这个K1芯片有两个ADC驱动,也就有两个components,点开之后每个components都有四个选项卡converter转换器、channel通道、compare比较器、average求平均。 配置引脚 配置之前,得先配置好引脚,哪个引脚用来采集ADC。 每…

从2个角度来简单讨论一下伦敦金走势图怎么看

进入伦敦金市场之后,投资者无时无刻都在思考着一个问题,那就是伦敦金走势怎么看?关于这个问题,其实在市场中有很多的文章和视频去介绍,在书店里也有很多投资前贤所写的书籍讨论过这个问题。但是他们都有一个特征&#…

微信作为私域营销的载体有哪些优势?

私域流量的本质就是: 降低我的获客成本,提高我产品服务的复购率,增加我和用户之间的粘性,挖掘用户的终身价值。 私域流量的优势: 1、更精准; 2、节约成本,减少广告成本; 3、有利于品…

MES集成警报灯系统,Http远程控制系统设计

layout: post title: MES集成警报灯系统,Http远程控制系统设计 tags: [MES,警报灯,远程控制,网页控制,http协议,系统集成] categories: [产品方案,系统集成] date: 2024-3-3 14:10:15 cover: /assets/xaoxuu/blog/2020-0927a1x.svg description: 核心功能设计 警报灯实机演…

2575. 找出字符串的可整除数组(Go语言)

https://leetcode.cn/problems/find-the-divisibility-array-of-a-string/ 在看题解之前,我的代码是以下这样: package mainimport ("fmt" )func main() {fmt.Println(divisibilityArray("998244353", 3)) }func divisibilityArray…

网站维护中的风险及应对策略

在现代数字化时代,企业对网站的维护至关重要,但维护期间也存在着风险和潜在威胁。本文将探讨网站维护中可能面临的风险,并提供一些应对策略以降低这些风险对企业的影响。 一、数据泄露: 在网站维护期间,未经适当保护的…

Matplotlib进阶学习:基于Matplotlib实现设置Times New Roman字体

Matplotlib进阶学习:基于Matplotlib实现设置Times New Roman字体 🌈 个人主页:高斯小哥 🔥 高质量专栏:Matplotlib之旅:零基础精通数据可视化、Python基础【高质量合集】、PyTorch零基础入门教程&#x1f4…

渲染农场与并行处理:大规模渲染任务的高效解决方案

随着数字技术与计算机图形学的突飞猛进,大规模渲染任务已成为电影制作、游戏开发、建筑设计以及科学计算等诸多行业的常态化需求。面对这些日益增长的需求,渲染农场与并行处理技术凭借其卓越的效率和精准度,已然成为应对这些挑战的核心高效解…