爱企查无法使用F12问题

起因

最近突然需要找一下自己爱企查的账号cookie,于是上来一个F12结果发现半天按不出来(刚开始在想是不是键盘的F12坏了,但是换了其他的页面就是正常的) 在B站看到了id为”无名的Coder”大佬的视频在此做个学习记录

Hyperlink: js逆向-爱企查:F12检测绕过,头部参数加密_哔哩哔哩_bilibili

图一展示了符合问题描述的实况

开搞

先打开F12(不用管是否正常显示,当然正常显示你就不用继续看了)

之后 Sources -> Event Listeners Breakprints -> ‘Script’ 国语的话应该是 ‘’源代码’’ -> ‘’事件监听器断点’’ -> ‘’脚本’’

图二展示了开始调试的操作步骤

之后尝试调试

图三展示了在开发者工具中调试以匹配关键代码

然后我们把它复制下来,放到VSCode(个人习惯,自己选择)看看具体是在哪个地方

图四展示了查找关键功能代码所在位置

以下介绍两个方法:

01. 导入替换代码

以下是限制功能的代码

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)
        }
        ))
    }
};

解读:

首先其中定义了一个对象 t ,它包含了一些属性和方法,用于检测并防止开发者工具被打开

ondevtoolopen方法

ondevtoolopen: function(t, e) {
    e(),
        setTimeout((function() {
        window.location.href = "about:blank"
    }), 3e3)
}

这是一个回调函数,当检测到出发开发者工具时触发:

  • 调用 e()(可能是一个清理或回调函数)
  • 3 秒后(3e3 毫秒),将页面重定向到 about:blank(空白页)

ignore方法

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)
           })
}

这是一个条件判断函数,用于在某些情况下忽略开发者工具的检测:

  • 如果 localStoragedevtool 的值为 "open"
  • 如果 URL 的查询参数中包含 qf=monster
  • 如果用户代理(navigator.userAgent
  • 如果当前主机名(location.hostname)匹配以下任意一个正则表达式:
    • localhost
    • 127. 开头的 IP 地址(内网 IP)
    • 127.0.0.1(本地回环地址)

对此有两种解决方法(以下代码是ai生成的,因为不是很懂Javascript)
一、自己写脚本并进行替换(未经测试)

// 覆盖检测函数
Object.defineProperty(window, 'devtool', {
  get: () => false,
  configurable: false
});

// 阻止检测脚本执行
window.addEventListener('devtoolschange', e => e.stopImmediatePropagation(), true);

// 设置本地存储标记(如果检测依赖localStorage)
localStorage.setItem('devtool', 'open');

// 重写检测对象
if (window._devt) {
  window._devt.ignore = () => true;
  window._devt.ondevtoolopen = () => {};
}

将原先的代码替换为以上脚本
二、使用油猴脚本

// ==UserScript==
// @name         Disable DevTools Detection
// @namespace    http://tampermonkey.net/
// @version      0.1
// @description  禁用开发者工具检测
// @author       You
// @match        *://目标网站.com/*
// @grant        none
// ==/UserScript==

(function() {
    'use strict';

    // 阻止原始检测脚本加载
    const oldCreateElement = document.createElement;
    document.createElement = function(tagName) {
        const el = oldCreateElement.call(document, tagName);
        if (tagName === 'script') {
            const oldSrc = Object.getOwnPropertyDescriptor(el, 'src');
            Object.defineProperty(el, 'src', {
                get: () => oldSrc?.get.call(el),
                set: (value) => {
                    if (!value.includes('devtool-detector')) {
                        oldSrc?.set.call(el, value);
                    }
                }
            });
        }
        return el;
    };

    // 覆盖检测函数
    window.devtool = { isOpen: false };
    Object.defineProperty(window, 'devtool', {
        get: () => ({ isOpen: false })
    });

    // 设置本地存储标记
    localStorage.setItem('devtool', 'open');
})();

三、一种一劳永逸的方法,但对所有网站失效,可能面临一定的安全风险
console中输入:

localStorage.setItem('devtool','open')

以上方法的原理为:

  • JavaScript的动态性:允许运行时修改对象属性和函数行为。

  • 浏览器沙箱环境:网页脚本无法直接检测扩展或用户手动执行的代码。

  • 检测逻辑的单向依赖:检测脚本通常依赖特定的全局变量或事件,破坏这些依赖即可绕过。

注意事项

  • 这些方法可能随着检测技术升级而失效(如最新的基于 Performance API 的检测)。

  • 部分网站会结合服务端验证(如接口返回加密数据,需前端解密),单纯绕过前端检测可能导致功能异常。

  • 仅供学习浏览器安全原理使用,实际应用需遵守网站规则。


爱企查无法使用F12问题
https://zer0ptr.github.io/2025/07/17/爱企查无法使用F12问题/
Author
zer0ptr
Posted on
July 17, 2025
Licensed under