返回顶部
首页 > 资讯 > 前端开发 > JavaScript >前端页面禁止别人调试的方法
  • 783
分享到

前端页面禁止别人调试的方法

摘要

1. 前端防止调试的思路与方法 我们都知道 debugger 在控制台被打开的时候就会执行, 前端页面防止调试的方法主要是通过不断 debugger 来疯狂输出断点,让控制台打开后程

1. 前端防止调试的思路与方法

我们都知道 debugger 在控制台被打开的时候就会执行, 前端页面防止调试的方法主要是通过不断 debugger 来疯狂输出断点,让控制台打开后程序就无法正常执行,以下是一个基本防止调式的代码:

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

这里需要说明以下几点:

1. 程序被 debugger 阻止了,我们无法像以往一样在 Source Tab 中的对应 js 代码处添加断点调试,无法调试程序的执行逻辑。

2. 当我们打开控制台就会出被 debugger 阻止,所以想通过 network tab 来查看网页都做了哪些请求也是看不到的。

2. 禁止断点方法及对策

遇到防止调试我们可以禁止断点,在 Chrome 控制台的 Source Tab 页点击 Deactivate breakpoints 按钮或者按下 Ctrl + f8。

 操作动画效果如下所示:

注意:上面的解决方法并没有帮我们解决根本问题,我们需要做的是调试,上面虽然把 debugger 都去掉了,但是我们也无法在通过点击每一行代码左边的行号添加 breakpoint 了,所以根本性的问题并没有解决,只是去除了那碍眼的疯狂 debugger。

如何防止恶意用户禁止断点呢?

将 setInterval(() =>{ debugger;},50); 写在一行中,你即使通过添加 logpoint  为 false 也没用,仍然是疯狂 debugger,即使你可能想到通过左下角的代码格式化来格式一下setInterval(() => {debugger;}, 50); 将它变成多行的也是没用,仍然会在刷新后重新弹 debugger。

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

3. 突破防止调试的方法及对策

在对应的代码行添加logpoint为 false,然后按回车后刷新网页,发现成功跳过无限 debugger,于是我们就可以愉快的自由调试了。

对应的还有一种方法,即通过来添加 add script ignore list 需要忽略执行代码行或文件。

 如果想恢复初始状态,可以通过删除 script ignore list 里已添加的忽略代码。

针对这种操作如何防止恶意用户呢?

我们可以通过将debugger改写成 Function("debugger")(); 的形式来应对,Function 构造器生成的 debugger 会在每一次执行时开启一个临时 js 文件,代码改造如下所示:

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

4. 防止调试方法增强

上面的代码由于没有加密混淆,多少可能还是会被别人读懂一些,我们可以尝试对代码进行加密混淆,如下所示:

eval(function(c,g,a,b,d,e){d=String;if(!"".replace(/^/,String)){for(;a--;)e[a]=b[a]||a;b=[function(f){return e[f]}];d=function(){return"\\w+"};a=1}for(;a--;)b[a]&&(c=c.replace(new RegExp("\\b"+d(a)+"\\b","g"),b[a]));return c}('(()=>{1 0(){2(()=>{3("4")()},5)}6{0()}7(8){}})();',9,9,"block function setInterval Function debugger 50 try catch err".split(" "),0,{}));

为了让对方尽量的难以识别我们的代码,我们将Function("debugger").call()改成 (function(){return false;})["constructor"]("debugger")["call"](); 并且添加条件,当窗口外部宽高和内部宽高的差值大于一定的值 ,我把 body 里的内容全部清空掉。

 操作动画如下所示:

下面附上这份未混淆的来之不易的的代码,你可以把它当作工具函数,在需要不让别人调试的项目中引用,使用时记得加密混淆。

(() => {
    function block() {
        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) {}
})();

通过给 style 标签添加 style="display: block",contenteditable 两个属性实现在页面中便捷的调试样式。

复制下方代码到你的 html 文件中,建议试试。

<!DOCTYPE html>
<body>
    <div>来调试我吧~</div>
    <style style="display: block" contenteditable>
        body {
            background-color: rgb(140, 209, 230);
            color: white;
        }
        div {
            background-color: green;
            width: 300px;
            height: 300px;
            line-height: 300px;
            text-align: center;
        }
    </style>
</body>

到此这篇关于前端页面禁止别人调试的方法的文章就介绍到这了,更多相关前端页面禁止别人调试内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

--结束END--

本文标题: 前端页面禁止别人调试的方法

本文链接: https://lsjlt.com/news/200962.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • 前端页面禁止别人调试的方法
    1. 前端防止调试的思路与方法 我们都知道 debugger 在控制台被打开的时候就会执行, 前端页面防止调试的方法主要是通过不断 debugger 来疯狂输出断点,让控制台打开后程...
    99+
    2023-03-23
    页面禁止调试 网页脚本调试怎么禁用 前端页面禁止调试
  • web前端页面怎么禁止别人调试
    这篇文章主要介绍“web前端页面怎么禁止别人调试”,在日常操作中,相信很多人在web前端页面怎么禁止别人调试问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”web前端页面怎么禁止别人调试”的疑惑有所帮助!接下来...
    99+
    2023-07-05
  • 禁止页面缓存的方法(转)
    1, 在jsp或者servlet中加入2, 在页面中使用HTML标记,如下面:[@more@]...
    99+
    2023-06-03
  • JavaWeb禁止浏览器缓存当前Web页面的方法
    所谓浏览器缓存,是指当第一次访问网页时,浏览器会将这些网页缓存到本地,当下一次再访问这些被缓存的网页时,浏览器就会直接从本地读取这些网页的内容,而无需再从网络上获取。      &...
    99+
    2023-05-30
    java web 浏览器
  • html禁止页面缓存有哪些方法
    小编给大家分享一下html禁止页面缓存有哪些方法,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!   html   只要加在头...
    99+
    2024-04-02
  • 移动端网站页面调试的方法有哪些
    这篇文章主要讲解了“移动端网站页面调试的方法有哪些”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“移动端网站页面调试的方法有哪些”吧!把静态资源指向到本地Mobile 越来越重要,Hybrid...
    99+
    2023-06-10
  • php可以调用别的页面方法吗
    本教程操作环境:windows10系统、PHP7.1版、DELL G3电脑php可以调用别的页面方法吗在php中可以使用 include或require函数指令引入另一个页。include (或 require)语句会获取指定文件中存在的所...
    99+
    2021-01-03
    PHP
  • php可不可以调用别的页面方法
    这篇文章将为大家详细讲解有关php可不可以调用别的页面方法,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。PHP可以调用别的页面的方法;可以利用include或者require语句指令来调用别的页面方法,该...
    99+
    2023-06-29
  • 前端常见面试题之async/await和promise的区别
    目录asyncasync函数定义作用async 函数中 return 值如何接受方式一方式二awaitawait定义作用关于await的注意点[[promiseValue]][pro...
    99+
    2024-04-02
  • JavaScript禁用提示页面的实现方法
    本篇内容主要讲解“JavaScript禁用提示页面的实现方法”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“JavaScript禁用提示页面的实现方法”吧!淘宝曾...
    99+
    2024-04-02
  • Angular刷新当前页面的方法
    这篇文章主要介绍Angular刷新当前页面的方法,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!Angular刷新当前页面的几种方法默认,当收到导航到当前URL的请求,Angular路由器会忽略。<a ...
    99+
    2023-06-14
  • javascript关闭当前页面的方法
    小编给大家分享一下javascript关闭当前页面的方法,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!在javascript中,可以使用close()方法关闭浏览...
    99+
    2023-06-14
  • 打开页面win7会自动下载某些程序软件的禁止方法
      不知道这个功能算不算是一个病毒性的、强制性的操作了当我们打开某些页面的时候,会发现win7系统突然自动的开始下载某些   首先,我们先打开本地组策略编辑器,步骤是点击开始,输入gpedit.msc命令,然后按回车即可...
    99+
    2023-06-05
    win7 自动下载 软件 程序 禁止 页面 方法
  • Django前端BootCSS实现分页的方法
    通过使用bootstrap框架,并配合Django自带的Paginator分页组件即可实现简单的分页效果。 1.创建MyWeb项目 python manage.py starta...
    99+
    2024-04-02
  • Django零基础入门之调用漂亮的HTML前端页面
    引言:    Django如何调用HTML前端页面呢? Django怎样去调用漂亮的HTML前端页面呢?  就直接使用render方法即可!...
    99+
    2024-04-02
  • 前端面试必会网络跨域问题解决方法
    目录什么是跨域跨域解决方法1-代理跨域解决方法2-JSONP跨域解决方法3-CORS概述简单请求简单请求的判定简单请求的交互规范需要预检的请求附带身份凭证的请求一个额外的补充什么是跨...
    99+
    2024-04-02
  • dedecms实现任意页面调用当前会员信息的方法
    本文实例讲述了dedecms实现任意页面调用当前会员信息的方法。分享给大家供大家参考。具体实现方法如下: 1、在你需要调用的页面里面<head></head>之间加入 复制代码代码如下:<s...
    99+
    2022-06-12
    dedecms 任意页面 调用 当前 会员 信息 方法
  • CSS前端页面渲染优化属性will-change的使用方法
    这篇文章给大家分享的是有关CSS前端页面渲染优化属性will-change的使用方法的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。前言当触发scroll、resize这类的滚动事件时,被触发的频率非常高,间隔也特...
    99+
    2023-06-08
  • 优化前端性能:降低页面重绘和回流的方法
    前端性能调优技巧:如何减少页面的重绘和回流 在Web开发中,前端性能优化是一个关键的课题。在用户访问一个网页时,页面的响应速度直接影响了用户体验,而其中一个重要的方面就是页面的加载速度。而页面的加载速度受影响最大的因素就是重绘和...
    99+
    2024-01-26
    前端性能优化 页面重绘 回流缩减
  • 前端h5页面和后端php服务的几种部署方式
    一、背景 和java后端服务的部署不同,前端h5的部署有好几种。 CDN+OSSnginx反向把输出物全部拷贝到后端 所以,这就带来了部署上的歧义,到底该用哪种部署方式呢? 本文以前端h5搭配后端ph...
    99+
    2024-01-21
    前端 php html5 持续部署 开发语言 docker
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作