前端页面禁止debugger调试并跳转空白页面----文心一言官网实现方式

技术点:setInterval定时器+Object.defineProperty

背景:

某天打开文心一言想看看接口返回结构是怎样的,熟练的打开浏览器开发者工具查看网络请求。

发现出现了以下debugger断点

这难不倒我,去掉断点调试,继续下一步不就行了?心中暗暗自喜,一顿操作猛如虎,一看居然是二百五。什么鬼?怎样跳转空白页面了?我怎么看数据结构?

它是怎样做到检测debugger模式,并且跳转空白页面的?

出于好奇,带着问题我进行了研究,原理很简单,几行代码就可以实现

作用:

通过检查是否打开开发者调试工具,做一些相应的逻辑判断。防止被人恶意调试页面代码,发现漏洞

原理:

1.通过setInterval定时器轮询执行debugger,并记录执行时的时间

2.当操作浏览器跳过debugger继续执行时,获取当前时间

3.当前时间减去执行时的时间大于某个值时,则跳转到空白页面

代码解析:

  //    禁用浏览器debuggerfunction disableDebugger() {const obj = Object.create(null);// 记录当前时间let t = Date.now();//监听对象属性的获取Object.defineProperty(obj, 'is_debug', {get: () => {// 当对象属性的取值方法被触发时,判断时间间隔是否大于50ms,替换为空白页if (Date.now() - t > 50) {location.replace('about:blank')}},});// 定时打印is_debug触发属性的get方法进行判断setInterval(() => {// 记录开始debugger时间t = Date.now();//触发debugger//通过构造函数 Function 来创建一个新的函数,这个新函数的内容是调用debugger,(function debug() {})['constructor']('debugger')();// 触发obj.is_debug的get方法console.log(obj.is_debug);}, 100);}disableDebugger()

疑问:

1.为什么通过console.log(obj.is_debug)获取值,从而触发Object.defineProperty get方法,而不是直接判断时间触发跳转?

答:增加代码阅读难度,防新手。哈哈,顺便复习一下defineProperty的使用

2.为什么使用构造函数调用debugger,直接调用不行吗?

答:增加代码阅读难度,防新手;可以

总结:通过js防止别人debugger代码其实是伪代码,只能防君子,防不了小人;防新手防不了大神;先打开调试工具,去除断点设置,再打输入网页地址,该方法就会失效。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/459150.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

《数电》理论笔记-第2章-组合逻辑电路

一,集成门电路 1TTL门电路 TTL门电路中双极型三极管构成,它的特点是速度快、抗静电能力强集成度低、功耗大, 目前广泛应用于中、小规模集成电路中。 TTL门电路有 74 (商用) 和 54 (军用) 两大系列,每个系列中又有若干子系列。 2 CMOS门电路 …

AI-数学-高中-24-三角函数一般形式的各参数含义

原作者视频:三角函数】12三角函数一般形式的各参数含义(易)_哔哩哔哩_bilibili 1.函数中的A标识符:表示曲线中间平衡位置的振幅,值域为正负A:[-A,A]。 2.函数中的B标识符:决定曲线纵向上下平移…

自用metadata.pegasus.txt bat生成脚本

下面代码保存为一个bat文件,放在存放rom的文件夹下运行 echo off setlocal enabledelayedexpansion :menu cls echo Please select a game ROM type: echo 1. FC echo 2. PSP echo. set /p choice"Enter your choice (1 or 2): " if "%choice%…

Laykefu客服系统 任意文件上传

【产品介绍】 Laykefu 是一款基于workermangatawayworkerthinkphp5搭建的全功能webim客服系统,旨在帮助企业有效管理和提供优质的客户服务 【漏洞介绍】 Laykefu客服系统/admin/users/upavatar.html接口处存在文件上传漏洞 【资产测绘Query】 fofa语法&#xf…

C#上位机与三菱PLC的通信02--MC协议介绍

1、协议介绍 三菱 PLC MC 协议是一种用于三菱 PLC 与上位机之间进行数据通信的协议,也称为 Mitsubishi Communication Protocol。该协议支持串口、以太网等多种通讯方式,可实现实时数据的采集和交换。三菱PLC的MC协议是一种数据通信协议,它用…

相机图像质量研究(6)常见问题总结:光学结构对成像的影响--对焦距离

系列文章目录 相机图像质量研究(1)Camera成像流程介绍 相机图像质量研究(2)ISP专用平台调优介绍 相机图像质量研究(3)图像质量测试介绍 相机图像质量研究(4)常见问题总结:光学结构对成像的影响--焦距 相机图像质量研究(5)常见问题总结:光学结构对成…

问题 | IT行业有哪些证书含金量高?

IT行业有哪些证书含金量高? Cisco认证(CCNA,CCNP,CCIE):思科是全球最大的网络设备供应商之一,它的认证证书在网络和通信领域被广泛认可。CCNA是初级认证,CCNP是高级认证,而CCIE是专…

关于网络常见的十道面试题

什么是TCP/IP五层模型?它们的作用是啥?基于TCP/IP实现的应用(层协议)有哪些? TCP/IP五层模型,从上向下分别是: 应用层:应用程序本身,应用层的作用是负责应用程序之间的…

16、prometheus + grafana + alertmanager

16、prometheus grafana alertmanager k8s 手撕方式安装 prometheus grafana alertmanager k8s版本:k8s-1.29.1 prometheus grafana alertmanager 监控报警 1、k8s 手撕方式安装 prometheus mkdir ~/prometheus-ymlkubectl create ns monitoringcat > ~/…

BeginCTF2024 RE 部分复现

8. arc 上面一托混淆,左边似乎是三个东西相乘 单独取出最左边一托打印,可以得到大数组 接下来要解密,原代码非常混乱,我们先整理一下,简单去混淆 print (all([[data][a][d] e for a, b in enumerate([[int(a) for a …

16:定时器和计数器

定时器和计数器 1、定时器和计数器的介绍2、定时器是如何工作3、寄存器4、51单片机定时器简介(数据手册)5、定时器中的寄存器(数据手册)5.1、TCON(定时器控制寄存器)5.2、TMOD(工作模式寄存器&a…

2024美赛数学建模ABCDEF题思路代码

--------------------2024美国大学生数学建模竞赛(美赛)思路&代码---------------------------- 赛题翻译:2024美赛ABCDEF赛题翻译 问题A(数据分析题):资源可用性和性别比例(MCM&#xff09…