作者:微信小助手
发布时间:2025-07-11T21:13:36
// 禁用右键菜单document.addEventListener('contextmenu', e => e.preventDefault());// 禁用F12、Ctrl+Shift+I等快捷键document.addEventListener('keydown', e => { if (e.key === 'F12' || (e.ctrlKey && e.shiftKey && e.key === 'I')) { e.preventDefault(); }});
❌ 缺点:用户仍可通过浏览器菜单栏打开开发者工具。
// 利用窗口大小变化检测DevToolswindow.addEventListener('resize', () => {if (window.outerWidth - window.innerWidth > 100|| window.outerHeight - window.innerHeight > 100) {alert("检测到开发者工具!");window.close(); // 尝试关闭窗口}});
❌ 缺点:
全屏切换时的尺寸变化可能被误判;
独立打开控制台页面时无法监听到;
setInterval(() => {(function (a) {return (function (a) {return Function('Function(arguments[0]+"' + a + '")()');})(a);})("bugger")("de", 0, 0, (0, 0));}, 1000);
❌ 缺点:用户可禁用断点(Deactivate breakpoints)绕过
// 利用debugger检测控制台是否打开setInterval(() => {const start = Date.now();debugger;if (Date.now() - start > 100) {alert("禁止调试!");window.location.href = "about:blank"; // 跳转空白页}}, 1000);
❌ 缺点:
Deactivate breakpoints)绕过。
优化
// 利用console.table在控制台打开时耗费时间更长检测控制台是否打开function initData() {for (var o = (function () {for (var w = {}, D = 0; D < 500; D++) w["".concat(D)] = "".concat(D);return w;})(),i = [],c = 0;c < 50;c++) i.push(o);return i;}let largeObjectArray = initData()setInterval(() => {const start = Date.now();console.table(largeObjectArray)if (Date.now() - start > 100) {window.location.href = "about:blank"; // 跳转空白页}}, 1000);
❌ 缺点:
网站安全不能只依赖前端技术,前端只能“防君子不防小人”。有一定技术能力的用户都可以绕过前端防护,并反编译前端代码。还是得靠后端服务来确保网站的安全。
关注公众号,获取更多前端技术问题。动动小手,点个赞吧