当前位置: 首页 > 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!!!加油

相关文章:

  • ⭐算法OJ⭐字符串与数组【动态规划 DP】(C++实现)最长公共子序列 LCS + 最短公共超序列 SCS
  • 洛谷 P11830 省选联考2025 幸运数字 题解
  • 【编程题】7-3 树的同构
  • VS Code(Cursor)远程开发调试教程(超详细)
  • 自己的网页加一个搜索框,调用deepseek的API
  • 深入理解UDP:一种高效但不可靠的传输层协议、揭示其工作原理
  • 《2025软件测试工程师面试》接口测试篇
  • spark 常见操作命令
  • leetcode 148. 排序链表
  • 交叉编译 perl-5.40.0 perl-cross-1.5.3
  • 记浙江大华校招Java面试
  • Linux基础开发工具(vim编译器,yum与apt软件安装)
  • 计算机基础面试(操作系统)
  • Angular Superresolution with Antenna Pattern Errors论文阅读
  • 《数字图像处理》第一章绪论笔记:从“一图胜千言”到技术基石
  • C++-第十八章:线程相关内容
  • 如何用 TikTok 的创作工具提升你的视频质量?
  • Magic 1-For-1: 在一分钟内生成一分钟视频片段(基于Python实现,视频生成模型)
  • SpringBoot 多环境配置
  • leetcode141.环形链表,142环形链表ii
  • c 网站开发架构/厦门seo代理商
  • 市政府网站建设方案/百度指数电脑端查询
  • 网站开发的流程是怎样的/seo外包方法
  • 食品网站源码/百度的网址是什么呢
  • 东营网站建设公司/qq代刷网站推广免费
  • 在线做动图的网站/石家庄百度快照优化排名