Loading... 方法很多提供两种 ### 方法1 Worker 版 ```html <!doctype html> <html lang="zh-CN"> <head> <meta charset="utf-8" /> <meta name="viewport" content="width=device-width,initial-scale=1" /> <title>Anti-DevTools → Baidu</title> <script> (function () { 'use strict'; const REDIRECT_URL = 'https://blog.11dz.cn?devjs'; const POLL_INTERVAL = 500; // 轮询频率 const WORKER_TIMEOUT = 250; // Worker 探测超时 let redirected = false; function redirect() { if (redirected) return; redirected = true; location.replace(REDIRECT_URL); // 防回退 } // 核心:Worker 探针(无需“放行”) let worker = null; try { const code = ` self.onmessage = function (e) { if (e.data === 'probe') { self.postMessage('pong1'); debugger; // DevTools 开启时在此暂停,仅挂住 Worker self.postMessage('pong2'); } }; `; const blob = new Blob([code], { type: 'application/javascript' }); const url = URL.createObjectURL(blob); worker = new Worker(url); } catch (_) { worker = null; } function probeWorker(timeoutMs) { if (!worker) return Promise.resolve(false); return new Promise((resolve) => { let done = false; const onMsg = (e) => { if (e.data === 'pong2' && !done) { done = true; cleanup(false); // 收到第二次回包 => 未暂停 => 视为未开 } }; const timer = setTimeout(() => { if (!done) { done = true; cleanup(true); // 超时 => 多数为断住 => 视为已开 } }, timeoutMs); function cleanup(isOpen) { worker.removeEventListener('message', onMsg); clearTimeout(timer); resolve(isOpen); } worker.addEventListener('message', onMsg); try { worker.postMessage('probe'); } catch (_) { worker.removeEventListener('message', onMsg); clearTimeout(timer); resolve(false); } }); } async function checkAndAct() { if (redirected) return; const open = await probeWorker(WORKER_TIMEOUT); if (open) redirect(); } // 拦截常见打开方式:F12 / Ctrl+Shift+I(J) / Cmd+Opt+I(J) addEventListener('keydown', (e) => { const k = e.key.toLowerCase(); const modI = (e.ctrlKey && e.shiftKey && k === 'i') || (e.metaKey && e.altKey && k === 'i'); const modJ = (e.ctrlKey && e.shiftKey && k === 'j') || (e.metaKey && e.altKey && k === 'j'); if (k === 'f12' || modI || modJ) { e.preventDefault(); e.stopPropagation(); redirect(); } }, true); // 禁右键“检查” addEventListener('contextmenu', (e) => { e.preventDefault(); e.stopPropagation(); }, true); // 初次与持续检测 addEventListener('DOMContentLoaded', () => { checkAndAct(); }, { once: true }); const t = setInterval(checkAndAct, POLL_INTERVAL); // 触发点(可加速命中) addEventListener('visibilitychange', () => { checkAndAct(); }, true); addEventListener('focus', () => { checkAndAct(); }, true); addEventListener('beforeunload', () => clearInterval(t), { once: true }); })(); </script> </head> <body> <p>运行中</p> </body> </html> ``` > Worker 版:受 CSP 约束最大(`worker-src`/`script-src` 对 `blob:`)。 ### 方法2 ```html <script disable-devtool-auto src='https://cdn.jsdelivr.net/npm/disable-devtool'></script> <script > document.addEventListener('keydown', function(event) { // 检查 F12 键 if (event.key === 'F12') { event.preventDefault(); } // 检查 Ctrl + Shift + I 组合键 if (event.ctrlKey && event.shiftKey && event.key === 'i') { event.preventDefault(); } // 检查 Ctrl + Shift + J 组合键 if (event.ctrlKey && event.shiftKey && event.key === 'j') { event.preventDefault(); } // 检查 Ctrl + Shift + C 组合键 if (event.ctrlKey && event.shiftKey && event.key === 'c') { event.preventDefault(); } }); document.addEventListener('contextmenu', function(event) { event.preventDefault(); }); var ConsoleManager={ onOpen(){ }, onClose(){ }, init(){ var self = this; var x = document.createElement('div'); var isOpening = false,isOpened=false; Object.defineProperty(x, 'id', { get(){ if(!isOpening){ self.onOpen(); isOpening=true; } isOpened=true; } }); setInterval(function(){ isOpened=false; console.info(x); console.clear(); if(!isOpened && isOpening){ self.onClose(); isOpening=false; } },200) } } //检测到打开 直接跳转到其他网址 或者做其他方式自己改 ConsoleManager.onOpen = function(){ location.href="https://blog.11dz.cn?devjs"; } ConsoleManager.init(); DisableDevtool({ ondevtoolopen: (type) => { const info = 'devtool opened!; type =' + type; }, }) </script> ``` > 库版:脚本体量大但对 CSP 友好(不依赖 `blob:`),只要能执行就能跑 怎么说呢,这些东西并不能防止页面被调试,但是可以对小白或者大佬造成一些干扰 最后修改:2025 年 09 月 20 日 © 允许规范转载 打赏 赞赏作者 微信 赞 0 如果觉得我的文章对你有用,请随意赞赏
此处评论已关闭