复制代码
function checkDevTools(options) {
const isFF = ~navigator.userAgent.indexOf("Firefox");
let toTest = '';
if (isFF) {
toTest = /./;
toTest.toString = function() {
options.opened();
}
} else {
toTest = new Image();
toTest.__defineGetter__('id', function() {
options.opened();
});
}
setInterval(function() {
options.offed();
console.log(toTest);
console.clear && console.clear();
}, 1000);
}

checkDevTools({
opened: function() {
document.body.innerHTML = 'Dev Tools is on';
},
offed: function() {
document.body.innerHTML = 'Dev Tools is off';
}
});
复制代码

 


通过此代码可以监听到是否打开开发者调试窗口。如果打开那么可以移除一些敏感信息,或者防爬虫设定。

后续,又有一种兼容性较好的版本

复制代码
setInterval(function() {
check()
}, 4000);
var check = function() {
function doCheck(a) {
if (("" + a / a)["length"] !== 1 || a % 20 === 0) {
(function() {}
["constructor"]("debugger")())
} else {
(function() {}
["constructor"]("debugger")())
}
doCheck(++a)
}
try {
doCheck(0)
} catch (err) {}
};
check();
 
复制代码

 

1
2
3
4
5
6
7
8
9
10
let num = 0;
const devtools = new Date();
devtools.toString = function () {
  num++;
  if (num > 1) {
    console.log('Console is opened');
    window.location.href = "http://www.baidu.com";
  }
};
console.log(devtools);

  

posted on   ygunoil  阅读(2010)  评论(0编辑  收藏  举报
编辑推荐:
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
阅读排行:
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 零经验选手,Compose 一天开发一款小游戏!
· 通过 API 将Deepseek响应流式内容输出到前端
· AI Agent开发,如何调用三方的API Function,是通过提示词来发起调用的吗
< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5
点击右上角即可分享
微信分享提示