当前位置: 首页 > news >正文

JS禁止web页面调试

前言

由于前端在页面渲染的过程中 会调用很多后端的接口,而有些接口是不希望别人看到的,所以前端调用后端接口的行为动作就需要做一个隐藏。

禁用右键菜单

document.oncontextmenu = function() {console.log("禁用右键菜单");return false;
};

禁用F12

 document.onkeydown = document.onkeyup = document.onkeypress = function(event) {let e = event || window.event || arguments.callee.caller.arguments[0];if (e && e.keyCode == 123) {e.returnValue = false;return false;}
};

禁用开发者工具

实际开发中有多少实现方案,这里我们使用的是 无限debugger

大概实现思路:

因为 debugger; 打断点代码 只有在 控制台被打开的时候 才会执行。
所以 写一个无限debugger, 当控制台被打开时,程序被 debugger 阻止,
故而 网页的请求也是看不到的,也 无法进行 手打断点调试。

基础版

(() => {function ban() {setInterval(() => {debugger;}, 50);}try {ban();} catch (err) { }
})();

增强版

Function 构造器生成的 debugger 会在每一次执行时开启一个 临时 js 文件

(() => {function ban() {setInterval(() => {Function('debugger')();}, 50);}try {ban();} catch (err) { }
})();

终极版

1、提升 增强版 的写法

Function('debugger')();改写为:
(function () {return false;
}
['constructor']('debugger')
['call']());

2、在 增强版 的基础上 加上 DOM尺寸判断,进而 检测 控制台是否被打开

(() => {function block() {// 控制台的 高度 或者 宽度 大于 200px时 则 满足条件if (window.outerHeight - window.innerHeight > 200 || window.outerWidth - window.innerWidth > 200) {document.body.innerHTML = "检测到非法调试,请关闭后刷新重试!";}setInterval(() => {(function () {return false;}['constructor']('debugger')['call']());}, 50);}try {block();} catch (err) { }
})();

说句题外话:
写到这 突然想到一句对于程序员来说很搞笑的话: 一个Bug是Bug, 一堆Bug能work。
请添加图片描述
当然,我们的目标就是消灭每一个Bug!!!加油

http://www.lryc.cn/news/546808.html

相关文章:

  • GIt分支合并
  • Sqli-labs
  • unreal engine gameplay abiliity 获取ability的cooldown剩余时间
  • 【GenBI优化】提升text2sql准确率:建议使用推理大模型,增加重试
  • 【六祎 - Note】SQL备忘录;DDL,DML,DQL,DCL
  • 高频 SQL 50 题(基础版)_1341. 电影评分
  • JavaScript 变量命名规范
  • 解决 uView-UI和uv-ui 中 u-tabs 组件在微信小程序中出现横向滚动条的问题
  • 20250304解决在飞凌的OK3588-C的Linux R4下解决使用gstreamer保存的mp4打不开
  • build gcc
  • 【每日论文】How far can we go with ImageNet for Text-to-Image generation?
  • STM32 两个单片机之间的通信
  • Linux 下使用traceroute来进行网络诊断分析
  • 基于vue框架的游戏商城系统cq070(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。
  • SpringBoot接入DeepSeek(硅基流动版)+ 前端页面调试(WebSocket连接模式)
  • idea实现热部署
  • 记一次误禁用USB导致键盘鼠标失灵的修复过程
  • 0x03 http协议和分层架构
  • 【leetcode hot 100 189】轮转数组
  • 医药行业哪些招聘管理系统有AI功能?
  • .net8 使用 license 证书授权案例解析
  • golang的io
  • 全向广播扬声器在油气田中的关键应用 全方位守护安全
  • 76.读取计时器运行时间 C#例子 WPF例子
  • 嵌入式开发:傅里叶变换(5):基于STM32,实现CMSIS中的DSP库
  • 探秘基带算法:从原理到5G时代的通信变革【六】CRC 校验
  • MySQL——DQL、多表设计
  • XML 编辑器:全面指南与最佳实践
  • 【USRP】NVIDIA Sionna:用于 6G 物理层研究的开源库
  • DeepSeek开源周Day6:DeepSeek V3、R1 推理系统深度解析,技术突破与行业启示