攻防前端F12防调试进阶
⚠️重要提醒无论怎么加固前端防护永远不能100%杜绝源码查看只能提高破解门槛增加逆向成本。核心业务、密钥、算法必须放后端。目标对抗前面提到的破解手段控制台修改、油猴脚本、打印预览、地址栏javascript伪协议、定时器绕过等。1. 思路总览基础版漏洞点仅仅赋值oncontextmenu如果网页/油猴使用addEventListener注册右键事件可以覆盖绕过。防护变量、函数暴露在全局作用域控制台可以直接修改变量关闭检测。CtrlP打印预览页面内容完全暴露。debugger可以被开发者工具“禁用所有断点”直接废掉。防护逻辑只执行一次外部脚本可以直接重写oncontextmenu、checkDevTools函数。浏览器地址栏javascript:伪协议可以直接执行破解代码。升级手段使用捕获阶段注册contextmenu事件高优先级拦截使用IIFE闭包把检测变量、函数私有化不暴露到window全局增加media print媒体查询打印模式清空页面内容时间差反调试对抗直接禁用debugger断点循环定时校验防护逻辑一旦被篡改立刻恢复监听页面事件阻断伪协议书签篡改禁止选中文本增加复制难度。2. 升级版完整HTML页面代码!DOCTYPEhtmlhtmllangzh-CNheadmetacharsetUTF-8title加固版前端防调试演示/titlestyle/* 打印预览模式下清空页面内容对抗CtrlP破解 */mediaprint{body *{display:none!important;}}/* 禁止页面选中文本 */body{user-select:none;-webkit-user-select:none;}/style/headbodydivh2加固版增强前端简易防调试/h2p增强对抗控制台篡改、油猴脚本、打印预览、伪协议书签/p/divscripttypetext/javascript// IIFE闭包所有变量、函数私有不暴露到window全局控制台无法直接修改变量(function(){constthreshold160;letdevToolsOpenfalse;// --------------------------// 1.多重拦截右键捕获阶段优先执行对抗addEventListener注册的右键事件// --------------------------functionbindContextMenu(){document.oncontextmenufunction(){returnfalse;};// capturetrue 捕获阶段优先执行优先级高于普通事件监听document.addEventListener(contextmenu,function(e){e.preventDefault();e.stopImmediatePropagation();returnfalse;},true);}// --------------------------// 2.键盘快捷键拦截 F12 CtrlU CtrlShiftI/J// --------------------------functionbindKeyDown(){document.onkeydownfunction(event){vareevent||window.event;if(e.keyCode123){e.preventDefault();returnfalse;}if(e.ctrlKeye.keyCode85){e.preventDefault();returnfalse;}if(e.ctrlKeye.shiftKeye.keyCode73){e.preventDefault();returnfalse;}if(e.ctrlKeye.shiftKeye.keyCode74){e.preventDefault();returnfalse;}};}// --------------------------// 3.窗口尺寸检测开发者工具// --------------------------functioncheckDevTools(){constwidthThresholdwindow.outerWidth-window.innerWidththreshold;constheightThresholdwindow.outerHeight-window.innerHeightthreshold;if(widthThreshold||heightThreshold){if(!devToolsOpen){devToolsOpentrue;document.body.innerHTMLdiv stylecolor:red;font-size:24px;text-align:center;margin-top:100px请勿打开开发者工具/div;}}else{devToolsOpenfalse;}}// --------------------------// 4.时间差反调试对抗直接禁用debugger断点// --------------------------functionantiDebugger(){conststartperformance.now();debugger;constendperformance.now();// 如果debugger被触发时间会明显变长时间差过大代表开发者工具打开if(end-start100){document.body.innerHTMLdiv stylecolor:red;font-size:24px;text-align:center;margin-top:100px请勿打开开发者工具/div;}}// --------------------------// 5.定时巡检防止外部脚本、油猴脚本篡改防护逻辑被篡改就立刻恢复// --------------------------functionwatchProtectLogic(){bindContextMenu();bindKeyDown();}// 初始化执行bindContextMenu();bindKeyDown();// 定时器循环setInterval(checkDevTools,500);setInterval(antiDebugger,1000);setInterval(watchProtectLogic,800);})();/script/body/html3. 各个加固点原理与代码解析3.1 多重阻止右键捕获阶段原版仅仅设置document.oncontextmenu油猴/插件可以通过addEventListener后注册事件绕过。document.addEventListener(contextmenu,function(e){e.preventDefault();e.stopImmediatePropagation();returnfalse;},true);true代表捕获阶段执行比普通冒泡阶段事件优先级更高stopImmediatePropagation()阻止页面上其他所有contextmenu事件回调执行配合定时watchProtectLogic定时重新绑定就算外部脚本清除事件800ms后自动恢复。3.2 闭包私有化变量函数全部逻辑包裹在(function(){ ... })()闭包内部。devToolsOpen、threshold、checkDevTools不会挂载到window控制台无法直接访问、修改这些变量不能直接通过控制台修改devToolsOpenfalse关闭检测。漏洞依然可以通过重写setInterval、或者禁用JS绕过。3.3 对抗打印预览CtrlPcss媒体查询打印样式mediaprint{body *{display:none!important;}}当用户按下CtrlP唤起打印预览页面所有元素直接隐藏看不到任何内容。漏洞浏览器修改打印设置关闭“使用页面样式”可以绕过。3.4 时间差反调试对抗禁用debugger断点conststartperformance.now();debugger;constendperformance.now();if(end-start100){// 判定打开调试工具}原理如果开发者工具关闭debugger语句直接跳过执行时间极短如果开发者工具打开哪怕勾选了禁用所有断点处理debugger语句依然会消耗额外时间通过performance.now()高精度时间判断时间差识别调试状态。3.5 定时巡检恢复防护逻辑setInterval(watchProtectLogic,800);每隔800ms重新绑定右键、键盘拦截事件。油猴脚本、控制台执行代码清除右键事件之后最多800ms页面会自动重新恢复禁止右键增加破解难度破解者需要持续不断覆盖事件。3.6 user-select禁止选中文本user-select:none;-webkit-user-select:none;禁止鼠标框选页面文字普通用户无法直接复制文本。注意快捷键CtrlA依然有概率选中文本不能完全杜绝复制。4. 仍然存在的漏洞浏览器禁用JavaScript全部防护直接失效这是浏览器底层权限JS无法阻止。view-source:协议直接在地址栏查看原始HTML源码JS完全拦截不到。抓包工具 Fiddler / Charles直接拿到HTTP响应原始HTML。开发者工具设置调试工具为独立窗口窗口尺寸检测逻辑失效。浏览器打印设置关闭页面CSS样式打印预览依旧可以看到内容。可以使用代理、无头浏览器(Puppeteer)后台获取页面DOM内容。截图 OCR识别文字绕开一切JS交互限制。结论前端JS只能做防普通人复制不能做安全保护。5. 防护等级对比破解手段基础版简易防护升级版进阶防护控制台设置document.oncontextmenunull✅直接破解短时间生效800ms自动恢复油猴脚本清除右键事件✅直接破解定时自动恢复破解需要持续劫持CtrlP打印预览泄露内容✅直接破解打印模式隐藏页面内容开发者工具禁用debugger断点✅直接绕过debugger增加时间差检测提升绕过成本控制台修改全局变量关闭检测✅直接修改闭包私有化控制台拿不到内部变量Shift右键绕过右键拦截✅可以绕过捕获阶段事件大部分场景拦截禁用JavaScript全部失效全部失效view‑source协议看源码全部失效全部失效6. 生产环境实战建议不要把密钥、核心算法、业务校验写在前端JS前端一切都可以被篡改。该类防护适合资讯展示页面防止普通访客随手复制、截图式复制不能用于保护敏感业务。如果需要真正保护内容图片资源加水印重要文本接口后端鉴权返回关键校验逻辑全部放在后端不要过度堆砌反调试代码大量debugger、循环检测会造成页面CPU占用升高影响普通用户性能体验。

相关新闻

浏览器3D建模革命:如何在5分钟内用Chili3D创建你的第一个专业模型

浏览器3D建模革命:如何在5分钟内用Chili3D创建你的第一个专业模型

浏览器3D建模革命:如何在5分钟内用Chili3D创建你的第一个专业模型 【免费下载链接】chili3d A browser-based 3D CAD application for online model design and editing 项目地址: https://gitcode.com/GitHub_Trending/ch/chili3d 你是否曾经因为传统3D建模…

2026/10/25 22:13:30 阅读更多 →
青浦全屋定制源头工厂哪家强?排名来啦!

青浦全屋定制源头工厂哪家强?排名来啦!

一、行业痛点分析在青浦全屋定制源头工厂领域,存在着诸多技术挑战。首先,定制家具的设计与实际空间的适配性难以精准把握,数据表明,约60%的客户对定制家具的空间利用效果不满意。其次,产品质量参差不齐,部分…

2026/10/23 20:09:33 阅读更多 →
终极Claude Desktop中文汉化指南:3分钟让AI助手说中文的完整教程

终极Claude Desktop中文汉化指南:3分钟让AI助手说中文的完整教程

终极Claude Desktop中文汉化指南:3分钟让AI助手说中文的完整教程 【免费下载链接】claude-desktop-zh-cn Claude Desktop Chinese Patch (macOS & Windows) 项目地址: https://gitcode.com/gh_mirrors/cl/claude-desktop-zh-cn 还在为Claude Desktop的英…

2026/10/25 10:20:03 阅读更多 →

最新新闻

Electron桌面应用开发实战:从环境搭建到打包发布全流程

Electron桌面应用开发实战:从环境搭建到打包发布全流程

做前端这些年,我大部分时间都在跟浏览器标签页打交道,直到第一次把桌面应用跑起来,才发现原来自己一直被限制在地址栏和刷新按钮围起来的框框里。Electron这个词,最开始是在某段时间频繁出现在同事的讨论里,一个用HTML…

2026/10/27 17:33:32 阅读更多 →
滑盖智能锁T109深度解析:结构原理、安装调试与故障排查

滑盖智能锁T109深度解析:结构原理、安装调试与故障排查

简介:亚太天能T109滑盖智能锁产品说明书是一份PDF格式的官方技术文档,主要面向智能锁安装人员、终端用户及售后维护者,帮助快速掌握产品安装、配置与常见故障处理。全包仅1个PDF文件,大小4.37MB,内容结构清晰&#xff…

2026/10/28 7:28:00 阅读更多 →
PMSM弱磁控制原理与Simulink建模:高速AGV驱动系统设计指南

PMSM弱磁控制原理与Simulink建模:高速AGV驱动系统设计指南

上个月我在调试一台高速AGV的驱动系统,整车要求空载跑到8m/s,电机转速已经拉到额定点,驱动器的输出电压也顶到了母线电压极限附近。再往上踩速度指令,转速纹丝不动,三相电流反而开始震荡。那会儿我的第一反应就是&…

2026/10/27 7:21:53 阅读更多 →
C++核心知识点:从内存管理到STL的实战指南

C++核心知识点:从内存管理到STL的实战指南

C 这门语言我前前后后折腾了十几年,用它写过嵌入式驱动、做过游戏服务端,也搭过基础组件库。每次看到新人一头扎进"C 核心知识点"这个搜索词,我其实挺感慨的——这门语言的难点从来不是语法多,而是知识点之间的耦合太深…

2026/10/27 18:20:50 阅读更多 →
T109滑盖智能锁怎么装?安装调试与故障排查全攻略

T109滑盖智能锁怎么装?安装调试与故障排查全攻略

简介:亚太天能T109滑盖智能锁产品说明书以PDF格式发布,适合智能锁用户、安装人员与售后维修人员阅读。内容围绕T109系列指纹密码刷卡锁展开,先介绍前面板、后面板、锁体、机械钥匙、电池盒盖等部件名称与功能,再给出完整安装步骤&…

2026/10/27 6:20:47 阅读更多 →
LLM知识降熵:从信息垄断到理解权下放

LLM知识降熵:从信息垄断到理解权下放

你有没有过这种经历:翻开源码注释、论文摘要或者一份专业报告,每个字都认识,连在一起却像天书。想找人聊聊,身边要么没人懂,要么懂的懒得跟你解释。后来我试着把同一段内容丢给一个大语言模型,几秒钟之后&a…

2026/10/28 7:29:02 阅读更多 →

日新闻

周新闻

月新闻

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/27 13:55:19 阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/27 7:21:50 阅读更多 →
黑夜航拍船只数据集训练YOLOV5模型全流程解析

黑夜航拍船只数据集训练YOLOV5模型全流程解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/27 19:19:37 阅读更多 →