前言
偶然一次爬取xx官方医疗信息平台数据,发现只要打开过控制台出现循环debugger关了之后,该平台就会启动无限循环数据导致页面很卡,为了探索改技术原理百度了好多都感觉不是理想有的也不兼容(如下代码我的最新chrome无效)。
(function () {
var re = /x/;
var i = 0;
console.log(re);
re.toString = function () {
alert("请关闭控制台");
return '第 ' + (++i) + ' 次打开控制台';
};
})();
控制台打开会触发什么
首先我们要了解控制台打开会做什么?根据我知识面的了解,打开控制台我肯定会触发debugger进行程序阻塞,
利用debugger阻塞
好了我们是不是可以利用这个阻塞做点什么?是的阻塞肯定会产生时间差我们可以利用时间差来判断是否阻塞了,代码如下:
var firstTime
var lastTime
setInterval(() => {
firstTime = Date.now()
debugger
lastTime = Date.now()
if (lastTime - firstTime > 10) {
console.log('这里可以屏蔽当前dom或者启动无限数据循环')
}
}, 100)
结语
由于文笔不行就直接上代码,可能不是很完善,但是目前满足基本需求,希望对目前有需求的提供个思路。