首页 > 其他分享 >js逆向笔记 绕过某网站开发者工具检测

js逆向笔记 绕过某网站开发者工具检测

时间:2025-01-17 22:57:19浏览次数:3  
标签:逆向 浏览器 检测 js 开发者 userAgent 工具 绕过

js逆向笔记 绕过某网站开发者工具检测

在这篇博客中,我将分享我在逆向分析爱企查时的一些发现与绕过技巧。最开始,我是偶然发现了这个网站,它在正常使用浏览器按下 F12 打开开发者工具时,似乎有某种方式禁用了开发者工具。不过,我没有放弃,继续从浏览器的右上角点击手动打开开发者工具。接着,我发现当开发者工具打开时,网站会跳转到一个空白页,并提示:“请关闭浏览器的调试窗口再访问页面!”这引起了我的兴趣,并激发了我开始进行逆向分析的动机。感兴趣的朋友可以去网站探索一番。网站链接如下

aHR0cHM6Ly9haXFpY2hhLmJhaWR1LmNvbS9zP3E9eGlhb21pJnQ9MA==

一、问题的初步发现

打开网站后,我按下了 F12 来打开开发者工具,但发现似乎并没有什么反应。经过一些实验,我发现网站好像禁用了 F12。为了进一步分析,我决定尝试通过浏览器的右上角菜单手动打开开发者工具。令我惊讶的是,当我成功打开开发者工具后,网站立刻跳转到一个空白页面,且显示了一条提示:“ 请关闭浏览器的调试窗口再访问页面!”

这是一个非常有意思的行为,显然网站采用了某种技术手段来防止开发者工具的使用。这让我想深入了解网站是如何检测开发者工具打开的,并尝试找出绕过方法。

二、逆向分析

为了进一步分析,我决定通过 浏览器开发者工具 进行调试。首先,我开始使用 脚本断点 断住了执行的 JS 脚本。通过这一方式,我很快定位到了相关的检测代码,并逐步分析了这段代码的作用。

Qvtd: function(t, e, i) {
    "use strict";
    var a = i("Aso0")
        , s = i.n(a);
    e.a = {
        mounted: function() {
            var t = {
                md5: "65878341e691a6ec",
                disableMenu: !1,
                tkName: "dtk",
                rewriteHTML: "<h3>请关闭浏览器的调试窗口再访问页面!</h3>",
                clearIntervalWhenDevOpenTrigger: !0,
                ondevtoolopen: function(t, e) {
                    e(),
                    setTimeout((function() {
                        window.location.href = "about:blank"
                    }
                    ), 3e3)
                },
                ignore: function(t) {
                    return "open" === localStorage.getItem("devtool") || location.search.includes("qf=monster") || navigator.userAgent.includes("QQBrowser") || [/localhost/, /172\./, /127\.0\.0.1/].some((function(t) {
                        return location.hostname.match(t)
                    }
                    ))
                }
            };
            s()(t)
        }
    }
}

通过阅读这段代码,我们可以发现,ondevtoolopen 函数是关键部分。它被设计成当开发者工具打开时触发,接着会在 3 秒后将页面跳转到 about:blank(即空白页)。从中我们可以看出,开发者工具打开后,网站通过这种方式强制关闭用户的操作。关键在于检测到了浏览器的开发者工具,触发了页面跳转。

三、绕过方法

经过对这段代码的深入分析,我发现,网站主要是通过以下几种方法进行开发者工具检测:

  1. 监听 devtool 状态
    • 通过 localStorage.getItem("devtool") 来判断是否开启了开发者工具。
  2. 检查 location.searchuserAgent
    • 检查 URL 参数是否为 qf=monster,或者浏览器的 userAgent 是否包含 QQBrowser
  3. 匹配本地地址
    • 检查 location.hostname 是否是 localhost127.x.x.x172.x.x.x,这些通常是开发环境中的地址。

为了绕过这些检测,我尝试了以下操作:

  1. 设置 localStorage

    • 在控制台执行以下代码:

    localStorage.setItem(‘devtool’, ‘open’);

    
    这会将 `devtool` 状态设置为 `open`,使得 `ignore` 函数判断为“开发者工具已开启”,从而绕过检测。
    
    
  2. 修改 URL 参数

    • 我还可以通过在地址栏中加入 URL 参数

      qf=monster
      

      来绕过这一检测:

    window.location.search = ‘?qf=monster’;

    
    
  3. 修改 navigator.userAgent

    • 我也通过修改

      userAgent
      

      ,让其包含

      QQBrowser
      

      ,绕过了检测:

    Object.defineProperty(navigator, ‘userAgent’, {
    value: navigator.userAgent + ’ QQBrowser’
    });

    
    
  4. 绕过本地地址限制

    • 如果你在本地开发环境中测试,还可以通过修改

      location.hostname
      

      localhost
      

      来绕过检测:

    Object.defineProperty(location, ‘hostname’, {
    value: ‘localhost’
    });

    
    

四、总结

通过这次逆向分析,我了解到了网站是如何通过 JavaScript 检测开发者工具的打开状态,并采用了页面跳转的方式阻止用户进一步操作。幸运的是,通过修改 localStorage、URL 参数和 userAgent,我成功绕过了这道检测,能够继续访问页面。

这次经历不仅让我深入了解了浏览器开发者工具的检测方法,还让我掌握了一些常见的绕过技巧。作为一个学习者,技术分享不仅是展示自己所学的一个途径,也让我在实践中更加深刻地理解了这些技术的应用。

希望这篇技术分享对大家有所启发,尤其是那些对逆向分析和绕过技术感兴趣的朋友们。如果你有任何问题或想进一步讨论,欢迎留言交流!

标签:逆向,浏览器,检测,js,开发者,userAgent,工具,绕过
From: https://blog.csdn.net/m0_75266682/article/details/145198744

相关文章

  • node.js在线学习系统程序+论文 可用于毕业设计
    本系统(程序+源码+数据库+调试部署+开发环境)带文档lw万字以上,文末可获取源码系统程序文件列表开题报告内容选题背景关于在线学习系统的研究,现有研究主要以系统的部分功能优化、特定课程的线上教学实践为主。在国外,一些发达国家早已开展在线学习系统的建设与应用,取得了显著......
  • THREE.js学习笔记8——Textures
    这个小节主要学习纹理,Texture纹理是覆盖几何形状表面的图像,不同类型的纹理具有多种不同的效果。这些纹理(尤其是金属性和粗糙度)遵循PBR原则基于物理的渲染许多技术往往遵循现实生活中的方向以获得现实的结果成为现实渲染的标准许多软件、引擎和库都在使用它如何加载纹理?......
  • 【华为OD-E卷 - 数组连续和 100分(python、java、c++、js、c)】
    【华为OD-E卷-数组连续和100分(python、java、c++、js、c)】题目给定一个含有N个正整数的数组,求出有多少个连续区间(包括单个正整数),它们的和大于等于x输入描述第一行两个整数Nx(0<N<=100000,0<=x<=10000000)第二行有N个正整数(每个正整数小于等于100)输出......
  • 一个开发者的重构实践
    重构是一个适合小步慢走(或快跑)的过程。除了在编码开始前和编码完成但未进行功能测试前,其他时间不适合进行大刀阔斧的重构。重构最好有单元测试作为保障,并且对重构的功能有充分了解。大的重构往往是通过一系列小的重构逐步浮现的,而且可能会出现反复。1.重构实践步骤第一步:注释......
  • JS — 对象、数组、函数
    对象英文名称:Object。类似于C++中的map,python中的字典,由key:value对构成。value可以是变量、数组、对象、函数等。函数定义中的this用来引用该函数的“拥有者”。例如:test.js中的内容为:letperson={//定义一个对象personname:'kitty',//对象的元......
  • node.js Koa框架学习记录2
    在上一篇文章我们初步学习了写一个简单的接口,这次对目录结构以及统一数据格式,异常错误的处理目录结构优化:前端请求方法错误,我们可以通过在app.use(router.routes())后面追加一个use,告诉前端请求方法错了,而不是404Notfound:app.use(router.routes()).use(router.allowedMe......
  • NodeJS“学雷锋”志愿者管理系统-计算机毕设 附源码 39269
    NodeJS“学雷锋”志愿者管理系统目 录摘要1绪论1.1研究背景与意义1.2开发现状1.3论文结构与章节安排2 “学雷锋”志愿者管理系统系统分析2.1可行性分析2.1.1技术可行性分析2.1.2经济可行性分析2.1.3操作可行性分析2.2系统功能分析2.2.1功......
  • 使用 pdf.js 通过文件流方式加载pdf文件
    关于Pdf.js的基础知识,请参考我的博客 使用pdf.js在网页中加载pdf文件使用pdf.js跨域问题的处理方法    上面两篇博客中介绍的内容都是基于直接加载远程服务器中静态PDF文件(即URL地址)来渲染PDF的,实际业务场景中,如与第三方系统对接过程中,第三方系统不直接公开......
  • JSP美发信息综合服务与管理系统5hxk2(程序+源码+数据库+调试部署+开发环境)
    本系统(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。系统程序文件列表开题报告内容一、研究背景与意义随着人们生活水平的提高,越来越多的人开始注重个人形象和美容美发。传统的手工管理方式已经无法满足现代美发店的需求,因此,开发美......
  • JSP芒果分销系统s94qu--程序+源码+数据库+调试部署+开发环境
    本系统(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。系统程序文件列表开题报告内容一、题目芒果分销系统的设计与实现二、研究背景及意义随着信息技术的飞速发展,农业与信息技术的融合已成为推动农业现代化进程的关键力量。果农及......