参考资料

  1. HTML 外部样式
  2. HTML 有序列表
  3. HTML 字体, 字体颜色 ,字体大小
  4. HTML/MarkDown互转有哪些
  5. HTML使用表格 布局
  6. HTML 音频(Audio)
  7. HTML 内联 元素
  8. html图像标签详细说明以及案例

如何禁用网页端开发者工具

禁用网页端开发者工具的方法及代码示例

1. 使用 debugger 语句干扰调试

setInterval(function() {
    debugger;
}, 100);

效果:不断触发断点,干扰调试。


2. 禁用右键菜单(防止右键检查)

document.addEventListener('contextmenu', function(e) {
    e.preventDefault();
});

效果:阻止右键菜单,增加打开开发者工具的难度。


3. 禁用快捷键(如 F12、Ctrl+Shift+I)

document.addEventListener('keydown', function(e) {
    if (
        e.key === 'F12' ||
        (e.ctrlKey && e.shiftKey && e.key === 'I') ||
        (e.ctrlKey && e.shiftKey && e.key === 'J') ||
        (e.ctrlKey && e.key === 'U')
    ) {
        e.preventDefault();
    }
});

效果:阻止常见开发者工具快捷键。


4. 检测窗口大小变化(开发者工具通常会影响窗口)

window.addEventListener('resize', function() {
    if (window.outerWidth - window.innerWidth > 100 || window.outerHeight - window.innerHeight > 100) {
        document.body.innerHTML = '开发者工具已禁用';
        window.close(); // 尝试关闭窗口
    }
});

效果:检测窗口变化,判断是否打开开发者工具。


5. 重写 console 方法(干扰日志输出)

console.log = function() {};
console.error = function() {};
console.warn = function() {};

效果:阻止 console 输出,干扰调试信息。


6. 使用 Object.defineProperty 修改 window 属性

Object.defineProperty(window, 'console', {
    get: function() {
        throw new Error('Console is disabled');
    }
});

效果:访问 console 时抛出错误。


7. 检测开发者工具打开状态(基于 Date 计算)

setInterval(function() {
    const startTime = performance.now();
    debugger;
    const endTime = performance.now();
    if (endTime - startTime > 100) {
        alert('开发者工具已打开!');
        window.location.href = 'about:blank'; // 跳转空白页
    }
}, 1000);

效果:利用 debugger 执行时间判断是否在调试。


8. 无限循环 debugger(更激进的方式)

(function() {
    while (true) {
        debugger;
    }
})();

效果:无限触发断点,导致页面卡死。


9. 禁用页面内容选择(防止复制代码)

document.addEventListener('selectstart', function(e) {
    e.preventDefault();
});

效果:阻止用户选择文本,增加分析难度。


10. 代码混淆(增加逆向难度)

使用工具(如 JavaScript Obfuscator)混淆代码,使其难以阅读和调试。


总结

  • 这些方法可以增加打开开发者工具的难度,但无法完全阻止(用户仍可通过浏览器设置绕过)。

  • 主要用于保护前端代码防止简单调试,但不应依赖其作为安全措施。

  • 适用于防爬虫、防简单逆向等场景。