强力反「反调试」(Anti Anti-Debugger Enhanced)

清除 Function/eval/Worker 等途径注入的 debugger,提供可选的已知反调试库精准防护与控制台防刷屏,并兼容常见人机验证

Vous devrez installer une extension telle que Tampermonkey, Greasemonkey ou Violentmonkey pour installer ce script.

You will need to install an extension such as Tampermonkey or Violentmonkey to install this script.

Vous devrez installer une extension telle que Tampermonkey ou Violentmonkey pour installer ce script.

Vous devrez installer une extension telle que Tampermonkey ou Userscripts pour installer ce script.

Vous devrez installer une extension telle que Tampermonkey pour installer ce script.

Vous devrez installer une extension de gestionnaire de script utilisateur pour installer ce script.

(J'ai déjà un gestionnaire de scripts utilisateur, laissez-moi l'installer !)

Vous devrez installer une extension telle que Stylus pour installer ce style.

Vous devrez installer une extension telle que Stylus pour installer ce style.

Vous devrez installer une extension telle que Stylus pour installer ce style.

Vous devrez installer une extension du gestionnaire de style pour utilisateur pour installer ce style.

Vous devrez installer une extension du gestionnaire de style pour utilisateur pour installer ce style.

Vous devrez installer une extension du gestionnaire de style pour utilisateur pour installer ce style.

(J'ai déjà un gestionnaire de style utilisateur, laissez-moi l'installer!)

Auteur
流萤可爱捏
Installations quotidiennes
1
Installations (total)
180
Notes
2 0 0
Version
1.11.0
Créé
29/03/2026
Mis à jour
02/08/2026
Taille
134 ko
Licence
MIT
S'applique à
Tous les sites

强力反「反调试」(Anti Anti-Debugger Enhanced)

这是一个比较通用的阻止常见反调试的脚本,覆盖范围达80%左右!清除网页通过 debugger 无限断点、Function/eval 动态构造、Worker/SharedWorker/Worklet 等途径实施的调试阻断,同时智能兼容人机验证(Cloudflare Turnstile、reCAPTCHA、hCaptcha、Arkose/FunCaptcha),并提供油猴菜单一键开关。


✨ 功能特性

  • 精准剔除 debugger 语句:内置手写词法分析器,正确跳过字符串、注释、正则、模板字面量,绝不误删字符串里的 "debugger" 文本。
  • 全链路覆盖:主线程 eval / Function / AsyncFunction / GeneratorFunction / setTimeout / setInterval,以及 DOM 注入(appendChildinnerHTMLinsertAdjacentHTMLdocument.write 等)。
  • Worker 深度处理:通过 Blob / createObjectURL / Worker 链路追踪,将清洗逻辑注入 Worker 引导代码,并保持相对 importScripts 的原始基址。
  • SharedWorker 可选覆盖:考虑到唯一 blob: URL 会改变跨页面共享语义,v1.10 起改为显式开关,默认不开启。
  • Worklet 覆盖:清洗 Worklet.addModule 加载的 paint/audio/layout/animation 模块;发现相对模块依赖时安全回退。
  • 人机验证兼容:检测到验证资源时自动回滚全部补丁,避免把验证码 / 登录流程搞坏。
  • 反检测Function.prototype.toString 伪装,隐藏补丁痕迹。
  • 三档模式stable(默认稳健)/ aggressive(激进)/ diagnostic(诊断)。
  • 油猴菜单:一键切换模式、一键禁用 / 启用当前站点,配置持久化。
  • 页面状态提示:每次进入网页都会提示脚本是否正在运行及当前模式;菜单切换后显示对应结果。
  • 可选精准防护:精确识别 disable-devtool 的官方 CDN、自托管文件名、disable-devtool-auto 属性及独有代码指纹,并优先通过公开 isSuspend API 暂停探针。
  • 控制台防刷屏:聚合短时间内的重复、同形及极高频日志;连续刷屏进入静默,安静一个统计窗口后自动恢复。
  • 运行时统计:诊断模式下可查看清洗次数、包裹的 Worker 数等指标。
  • 防重复注入:多脚本管理器 / 多次注入下也不会 Proxy 套 Proxy。

📦 安装

  1. 安装用户脚本管理器:Tampermonkey / Violentmonkey
  2. 从 GreasyFork 安装本脚本。
  3. 打开任意网页即自动生效(默认 stable 模式)。

🚀 使用方式

默认即开箱即用。若某网站仍然疯狂断点,可切到激进模式:

  • 点击浏览器里的脚本管理器图标 → 选择本脚本的菜单命令:
    • 切换模式(stable → aggressive → diagnostic):循环切换并自动刷新,刷新后提示切换结果。
    • 精准防护(开启 / 关闭):独立于三档模式持久化;默认关闭,遇到已知反调试库或控制台持续刷屏时再开启。
    • 切换本站开关(禁用 / 启用):把当前域名加入 / 移出禁用名单并自动刷新;重新启用时同时提示当前模式。

每次进入新页面时,顶层页面底部会短暂显示运行状态:正常运行时显示 stable / aggressive / diagnostic 模式,本站被禁用或因人机验证兼容而跳过时显示“未运行”及原因;内嵌 iframe 不重复弹出。

⚠️ 由于脚本使用 @inject-into page 运行在页面上下文,个别脚本管理器可能不注入同步 GM_* API。此时菜单与持久化会静默失效,但核心反调试功能不受影响,会以源码内默认配置运行。


⚙️ 配置项

打开脚本源码顶部的 CONFIG 对象即可调整:

配置项 默认 说明
MODE 'stable' 运行模式:stable / aggressive / diagnostic
DEBUG_LOG false 控制台调试日志(diagnostic 模式自动开启)
PATCH_EVAL false 代理 eval(激进;会影响 direct eval 的局部作用域)
PATCH_WORKER false 注入 classic Worker 引导(aggressive 自动开启)
PATCH_SHARED_WORKER false 包裹 classic SharedWorker;会改变跨页面共享语义,须手动开启
PATCH_WORKLET false 清洗 Worklet.addModule 模块(激进)
PATCH_BLOB true 追踪脚本型 Blob,在 Worker / script 等代码入口使用清洗副本,不改写普通 Blob 数据
AGGRESSIVE_IMPORT_SCRIPTS false Worker 内 importScripts 用 XHR+eval 拦截(激进)
ALLOW_SYNC_WORKER_FETCH false 允许主线程同步读取未追踪的 Worker/Worklet URL(激进)
BLOCK_CONSOLE_CLEAR true 阻止 console.clear
PRECISE_GUARD false 精准防护总开关;也可在油猴菜单中切换并持久化
GUARD_KNOWN_ANTI_DEBUG_LIBS true 总开关开启时,精确阻断或暂停已知反调试库
GUARD_CONSOLE_FLOOD true 总开关开启时,聚合重复日志并限制明显控制台洪泛
CONSOLE_REPEAT_LIMIT 8 同类控制台消息在统计窗口内允许输出的次数
CONSOLE_FLOOD_LIMIT 120 单个 console 方法在统计窗口内的总调用阈值
CONSOLE_FLOOD_WINDOW_MS 2000 控制台洪泛统计及安静恢复窗口(毫秒)
PATCH_INNER_HTML true 拦截 innerHTML 中的反调试代码
PATCH_REQUEST_ANIMATION_FRAME false 阻断可疑 rAF 回调(激进)
PATCH_DEBUGGER_CALLBACKS false 阻断整段含 debugger 的回调(激进)
HUMAN_VERIFICATION_COMPAT true 检测到人机验证时恢复原生环境
EXPOSE_DEBUG_API false 暴露 window.__ANTI_DEBUGGER__ 调试接口(诊断)
SHOW_STATUS_TOAST true 每次进入页面提示脚本运行状态和当前模式
DISABLE_HOSTS [] 命中的域名完全跳过(支持 example.com / *.example.com
FORCE_AGGRESSIVE_HOSTS [] 命中的域名强制 aggressive

切到 aggressive 时,会自动开启:PATCH_EVALPATCH_WORKERPATCH_WORKLETAGGRESSIVE_IMPORT_SCRIPTSALLOW_SYNC_WORKER_FETCHPATCH_REQUEST_ANIMATION_FRAMEPATCH_DEBUGGER_CALLBACKS


🔍 诊断 API

MODE 设为 'diagnostic'(或将 EXPOSE_DEBUG_API 设为 true)后,控制台可用 window.__ANTI_DEBUGGER__

// 查看运行时统计
__ANTI_DEBUGGER__.getStats();
// => { stripped, workersWrapped, workerFallbacks, bootstrapBuilds,
//      bootstrapCacheHits, workletModulesCleaned, workletRelativeSkips, ... }

// 查看兼容模式状态
__ANTI_DEBUGGER__.getCompatibilityState();

// 手动测试某段代码是否会被判定可疑 / 被清洗
__ANTI_DEBUGGER__.looksSuspicious('setInterval("debugger", 100)');
__ANTI_DEBUGGER__.stripDebugger('function f(){debugger;return 1}');
统计字段 含义
stripped 实际发生清洗的代码片段次数
workersWrapped 包裹的专用 Worker 数
workerFallbacks 临时 Worker URL 构造失败并回退原始 URL 的次数
sharedWorkersWrapped 包裹的 SharedWorker 数
workletModulesCleaned 清洗的 Worklet 模块数
workletRelativeSkips 为保留相对模块依赖而跳过清洗的次数
bootstrapBuilds / bootstrapCacheHits Worker 引导核心的构建 / 缓存命中次数
knownLibrariesDetected 精准防护命中的已知反调试库特征数
knownLibrariesBlocked / knownLibrariesSuspended 插入前阻断的脚本数 / 通过公开 API 暂停的库实例数
consoleCallsSuppressed / consoleFloodBursts 被抑制的控制台调用数 / 进入静默的洪泛批次数
compatActivations 人机验证兼容模式触发次数

🛡️ 人机验证兼容

脚本会在以下情况自动回滚全部补丁,恢复原生环境,避免破坏验证流程:

  • 页面本身即验证页(Cloudflare challenges.cloudflare.com/cdn-cgi/challenge-platform/、reCAPTCHA、hCaptcha、Arkose/FunCaptcha 等)。
  • 通过 <script>/<iframe>/setAttribute/innerHTML/srcdoc 等注入验证资源。
  • 触发与验证相关的 CSP 违规。

⚠️ 已知限制

  • SharedWorker:包裹后通过唯一 blob: URL 构造,跨标签页 / 跨上下文的「共享」语义会退化为每次构造独立,因此 v1.10 不再随 aggressive 自动开启;确有需要时手动开启 PATCH_SHARED_WORKER
  • Module Worker:为避免 classic bootstrap 破坏 ES module 语义,当前保持原生行为。
  • Worklet:作用域高度受限,无法承载完整引导逻辑;跨域模块无法同步读取,或源码含相对 import / export 依赖时会回退原始行为。
  • CSP:若站点异步阻止 blob: Worker 加载,浏览器不会在构造阶段抛错,脚本无法自动重试原始 URL;构造阶段的同步失败会自动回退。
  • 同步读取(激进模式)ALLOW_SYNC_WORKER_FETCH / AGGRESSIVE_IMPORT_SCRIPTS 使用同步 XHR,可能在极端情况下造成短暂卡顿;默认关闭。
  • PATCH_EVAL:代理 eval 会破坏 direct eval 的局部作用域语义,故默认关闭,仅激进模式开启。
  • 精准防护:当前只对 disable-devtool 系列采用高置信度特征;被深度改名、打包进业务 bundle 且不暴露公开 API 的变体仍可能绕过。静态 parser script 可能先开始执行,此时脚本会尽快通过公开 API 暂停,而不会改写已连接节点造成二次加载。
  • 控制台防刷屏:仅在手动开启精准防护后生效。高频业务日志也可能被聚合;需要完整日志时可从油猴菜单暂时关闭精准防护。
  • 无法阻止已经开始执行的内联脚本(MutationObserver 触发时可能已运行),但对后续动态插入的脚本仍然有效。

📝 更新日志

v1.11.0

  • 新增默认关闭的“精准防护”功能,可识别并阻止常见 disable-devtool 类反调试脚本,同时尽量保留网站原有快捷键、右键、复制和拖放功能。
  • 新增控制台洪泛抑制,自动限制重复或高频日志,并在洪泛停止后恢复正常输出。
  • 优化 Worker、SharedWorker、Worklet、evalFunction 的兼容性处理,修复相对路径、模块依赖及共享语义异常。
  • 改进脚本扫描、缓存和包装性能,减少重复解析及页面运行开销。
  • 新增防护状态、阻断结果、API 暂停、日志抑制及回退情况的诊断统计。
  • 补充多模式浏览器回归测试,并默认关闭普通控制台日志。

v1.10.0

  • 新增每页运行状态提示,明确显示脚本是否运行及当前模式。
  • 完善油猴菜单反馈:三种模式切换均有提示,本站启用时同时显示当前模式。
  • Blob 改为在 Worker / script 等代码入口使用清洗副本,避免修改普通文本、JSON 或下载数据。
  • 修复模板插值下等长清洗失效、Worker importScripts 异常后可能重复执行等问题。
  • 修正人机验证页的安装标记和状态提示顺序。

v1.8.0

  • 新增 SharedWorker 覆盖。
  • 新增 Worklet.addModule 模块清洗(paint/audio/layout/animation)。
  • 新增 运行时统计__ANTI_DEBUGGER__.getStats())。
  • 新增 防重复注入守卫
  • 新增 油猴菜单(切换模式 / 站点开关)与配置持久化。
  • 新增 站点白 / 黑名单DISABLE_HOSTS / FORCE_AGGRESSIVE_HOSTS)。
  • 优化 Worker 引导体积:仅序列化 stripDebugger 的真实依赖,移除无用函数。

v1.7.0

  • 词法分析式 debugger 剔除、评分制可疑检测、Blob/Worker 链路增强、人机验证兼容等。

🙏 致谢


📄 许可证

本项目基于 MIT License 开源。