在不打开发者工具的情况下,debugger是不会执行将页面卡住,而恰恰是利用debugger的这一点,如果你打开开发者工具一定会被debugger卡住,那么上下文时间间隔就会增加,在对时间间隔进行判断,就能巧妙的知道绝对开了开发者工具,随后直接跳转到空白页。
test
setInterval(function() {
var startTime = performance.now();
// 设置断点
debugger;
var endTime = performance.now();
// 设置一个阈值,例如100毫秒
if (endTime - startTime > 100) {
window.location.href = 'about:blank';
}
}, 100);
但请注意,完全禁止用户调试是不可能的,因为最终用户可以在自己的浏览器中操作。以下是一些常见的限制措施:
1、 禁用右键菜单:
2、 禁用键盘快捷键:
使用 JavaScript 禁用常见的开发者工具快捷键,如 F12、Ctrl+Shift+I 等。
document.onkeydown = function(e) { if (e.keyCode == 123 || (e.ctrlKey && e.shiftKey && e.keyCode == 73)) { return false; }};
3、 混淆代码:
使用 JavaScript 混淆工具,使代码难以阅读和理解。
4、 警告信息:
在控制台中输出警告信息,告知用户调试行为被监控。
请记住,这些方法只能增加调试的难度,并不能完全防止技术熟练的用户进行调试。