切换主题
Agent 的隐身术:反 Bot 检测六层技术栈——智能体基建系列
做过自动化的人大概都遇到过这样的场景:脚本逻辑全对、代理没问题、接口都正常,结果一访问就弹出"检测到异常流量";或者辛辛苦苦写好的采集任务,跑了半小时账号就被封。问题往往不在业务逻辑,而在你从一开始就被识别成了机器人。
智能体基建系列前几篇解决的是"Agent 能干什么":开发框架、记忆系统、桌面客户端、企业协作平台。这一篇回答另一个问题:Agent 要动手干活,怎么不被人机检测一眼识破。反 bot 检测不是爬虫的专利,任何需要自动化登录、自动化操作、批量采集的智能体场景,都会撞上这堵墙。
赛道边界
反 bot 检测规避技术,指的是让自动化浏览器或 Agent 在目标站点眼中"看起来像真人"的一整套技术栈。它不等于验证码识别(那是图像与推理问题),也不等于代理服务(那是 IP 声誉问题),更不等于爬虫框架本身。
要理解这个赛道,先看检测方从哪几个维度识别机器人:
- 行为层:鼠标轨迹、键盘时序、滚动速度是不是人
- 指纹层:navigator、WebGL、Canvas、字体、音频指纹是不是真设备
- 协议层:是不是被 CDP/WebDriver 驱动、有没有自动化标志
- 网络层:TLS 指纹、IP 声誉、HTTP 头是否自洽
反检测技术就是沿着这四个维度,从外到内逐层加固。判断一个工具属不属于这个赛道,看三个特征:
- 解决的是人机对抗问题:目标是绕过行为分析、指纹识别、自动化痕迹检测
- 在浏览器或协议的某一层动手:JS、CDP 协议、浏览器内核、TLS 握手,至少动一层
- 服务于自动化场景:让脚本或 Agent 能稳定跑下去
按这个口径,纯代理、纯验证码服务都不算。真正落在这个赛道里的工具,从浅到深可以分成六层,每一层都在解决上一层解决不了的问题。
六层技术栈:一个洋葱模型
整个赛道可以理解成一个洋葱。最外层是页面能直接观察到的 JS 属性,最内层是浏览器引擎和网络协议。检测方从外往里剥,反检测方从里往外藏。谁藏得更深,谁就活得更久。这六层不是严格单向隔离的:现实工程里大部分工具都是多层叠加,比如 CloakBrowser 同时做引擎级补丁、CDP 痕迹清理、TLS 指纹和行为拟人,fingerprint-suite 同时管 JS 指纹和 HTTP 头。分层是为了理解,不是让你逐层单独选用。

第一层:JS 注入补丁
这一层是最早的形态:在页面加载前注入 JS,改写 navigator.webdriver、UA、plugins、WebGL vendor 等可观察属性。实现简单,生态成熟,是大多数人接触反检测的起点。
代表项目:
- puppeteer-extra-plugin-stealth(7.4k Star,MIT):生态最成熟的模块化 JS 补丁,从 navigator 到 WebGL、media codecs 全覆盖
- playwright-stealth(978 Star 上游版,MIT):移植自 puppeteer 插件,官方文档自承"仅能绕过最简单检测,是 PoC 起点"
- selenium-stealth(740 Star,MIT):Selenium 专属方案,2021 年起基本停更
这一层的问题在于:补丁本身成了新的指纹。现代 WAF 会检查属性描述符是否被改成了 configurable、注入时序、被 patch 的堆栈痕迹。JS 补丁用的人越多,暴露特征越明显。到 2026 年,它更多是"垫底"而非独立方案:对付普通网站够用,对上 Cloudflare、DataDome 这类硬目标基本失效。
第二层:CDP 协议补丁
比 JS 属性更深一层的是协议痕迹。自动化浏览器通过 CDP(Chrome DevTools Protocol)被驱动,而 CDP 本身会留下记号——最典型的是 Runtime.enable 调用,Cloudflare、DataDome 都能探测到。JS 补丁管不到这一层,因为这是协议层面的事。
代表项目:
- patchright(3k Star,Apache-2.0):Playwright 的 AST 级源码补丁,核心修复 Runtime.enable 泄漏,改用隔离的执行上下文,还清理了 CDP 侧 console 相关可探测痕迹、去掉了自动化标志
- rebrowser-patches(1.3k Star):puppeteer-core 和 playwright-core 的 drop-in 补丁,关掉 Runtime.enable 泄漏
- nodriver(4k Star):undetected-chromedriver 的官方继任者,纯 CDP、无 WebDriver、无 Selenium、全异步。在某社区 2026 年小规模对比基准里,七个被测工具中它是少数能完整通过 Cloudflare gate 的实现
- zendriver(1.4k Star,AGPL-3.0):nodriver 的社区 fork,修了一批上游没合入的 bugfix,加了 Docker 支持
- undetected-chromedriver(12.8k Star,GPL-3.0):老牌王者,二进制级 patch ChromeDriver,自动下载匹配驱动。官方上游 2025 年年中后基本停止维护,open issues 超过 1100 个;社区有第三方 fork 继续维护,但新项目不建议直接选用原版。
这一层的价值在于修"自动化痕迹"而非"指纹"。它和下一层是互补关系:协议补丁管痕迹,内核补丁管指纹。要注意,CDP 补丁只能消除一部分自动化标记,WebGL、Canvas 这类硬件指纹它管不了,那是引擎内核层的事。社区共识是:简单站点用 stealth 插件,硬目标需要 patchright、nodriver 这类 CDP 补丁,或者直接上引擎内核。
第三层:反指纹引擎内核
再深一层,直接改浏览器引擎源码再编译。这是 2026 年公认的主流路线。
代表项目:
- CloakBrowser(30.8k Star):赛道的绝对头部。71 个以上 C++ 补丁覆盖 canvas、WebGL、audio、fonts、GPU、WebRTC、网络计时和 CDP 输入。项目方公开自测里 reCAPTCHA v3 拿到 0.9 分(原版 Playwright 0.1),Cloudflare Turnstile、FingerprintJS、BrowserScan 30/30 全过。drop-in 兼容 Playwright 和 Puppeteer,自带 humanize 行为拟人开关。需要说明:CloakBrowser 内核是闭源的,只对外分发预编译二进制,并非开源 Chromium fork;License 明确禁止撞库、批量注册

- Camoufox(7.5k Star):Firefox 系内核的代表,C++ 级指纹注入,用 BrowserForge 生成分布一致的指纹,还能隔离 Playwright 注入的 JS 沙箱,防 JS 层面的检测。WebGL 干净是它的卖点。局限是 Kasada、PerimeterX 这类高级 WAF 会测 SpiderMonkey 引擎行为,这个伪造不了(普通 Cloudflare 不会触发)
- fortress(445 Star,BSD-3-Clause):社区实验项目,引擎级 C++ 修正 30 多个表面,getter 一律报告 [native code],realm 不变,宣称自带 29 个 MCP 工具给智能体用
- ChromiumFish(139 Star,MIT):社区实验项目,指纹硬化的 Chromium fork,宣称内置 C++ 层 AI Agent,还做了 canvas-bridge,把 canvas 在真实 Windows GPU 上渲染后回传像素,规避 Linux headless 软件渲染露馅
- BotBrowser(2.5k Star,MIT):跨平台 Chromium 源码级修改,配 GUI 管理台,宣称 98%+ 成功率,但仓库 2025 年初后停滞
- invisible_playwright(1.8k Star,MIT):社区项目,Stealth-patched Firefox,Playwright API 100% 兼容,改两行代码就能用
为什么这条路线 2026 年成为主流?因为 JS 补丁和协议补丁都还有"痕迹",引擎级补丁没有。JS 补丁会暴露属性描述符和注入时序,协议补丁仍要经过 CDP 通道,引擎内核从二进制层就无懈可击。但这不等于终点:Kasada、PerimeterX 这类高级 WAF 已经在用 JS 运行时探针、微任务时序、JIT 引擎行为做检测,内核级补丁照样可能被探针捕获,只是把门槛抬高了一大截。
第四层:TLS/网络层指纹
再往里是网络层。TLS 握手发生在 HTTP 头之前,浏览器用什么密码套件、什么扩展顺序,会形成 JA3/JA4 指纹。这一层纯 JS 或浏览器方案都修不了,必须在 TLS 库层面动手。
代表项目:
- curl_cffi(5.5k Star,MIT):Python 绑定 curl-impersonate,能伪装成 Chrome、Firefox、Safari 的 TLS 指纹,支持 HTTP/3、代理轮换,零浏览器开销,适合纯 API 采集场景
- tls-client(2k Star,BSD-4-Clause):Go 语言的 net/http 式 TLS 指纹客户端,支持主流浏览器 profile
- curl-impersonate:原版(lwthiker,6k Star)2024 年 3 月起停更,活跃维护的是 lexiforest 的 fork,别踩原版的坑
这一层有个关键认知:TLS 指纹只修一层。它不解决 IP 声誉、JS 挑战,也不解决 UA 与 TLS 指纹不一致的问题。反过来,UA 和 TLS 指纹对不上,比不伪装更容易被标记——伪装到一半比不伪装更显眼。
第五层:指纹生成与注入
不是所有方案都要直接驱动浏览器。有一类工具专门负责"生成"一套自洽的设备指纹,供上层注入使用。
代表项目:
- fingerprint-suite(2.1k Star,Apache-2.0):Apify 的 npm 工具集,用贝叶斯生成网络生成相互关联的指纹头和指纹数据,可以注入到 Playwright、Puppeteer
- BrowserForge(1k+ Star,Apache-2.0):fingerprint-suite 的 Python 重实现,常配合 Camoufox 使用
这一层的核心价值是"指纹一致性"。不再是单点伪造,而是让引擎、UA、TLS、硬件参数由同一个 seed 生成,全链路自洽。这也是 2026 年主流方案的基本功。
第六层:商业 SaaS 与托管服务
最外圈是商业层,把上面所有能力打包成服务,适合不想维护军备竞赛的团队。
- 托管抓取 API:Bright Data(部分第三方测试集里成功率最高,98% 左右;该数字受目标站点、IP 池质量、防护厂商影响,不是所有网站都能达到)、Oxylabs、Scrapfly、ZenRows、Zyte 等,把指纹、代理、渲染、验证码打包成全栈
- 反检测浏览器 SaaS:Multilogin(企业标杆,引擎级内核)、GoLogin、AdsPower、Dolphin Anty、Kameleo(移动指纹仿真专精)等,本质是"指纹管理 + 多账号隔离 + 代理"
2026 年有个明显变化:开源引擎内核开始直接挑战商业反检测浏览器。CloakBrowser Manager 把自己定位成 Multilogin、GoLogin、AdsPower 的开源自托管替代,开源和闭源的军备竞赛蔓延到了反检测这个最敏感的领域。
趋势:反检测浏览器正在 Agent 化
反检测浏览器正在变成"智能体浏览器基建"。fortress 宣称自带 29 个 MCP 工具,ChromiumFish 把 AI Agent 内建在 C++ 层,HeadlessX 提供 MCP 端点,社区里还有 cloakbrowser-mcp 这类实验性桥接层。这些大多是社区实验项目,尚未经过大规模第三方验证,别当成工业级成熟方案。对做智能体的人来说,这意味着反检测能力正在从"自己写脚本绕过"变成"框架里直接带一个隐身浏览器"。
另外行为拟人成为标配:humanize 开关、Bézier 曲线鼠标、真实键盘时序、滚动物理——指纹补完了,行为层也得补上。光有真指纹、动作全是直线匀速,照样一眼假。
避坑指南
几个容易踩的坑,写下来供参考:
- 别信"30/30 全过":所有 100% 通过的数字,都是在公开检测面板(Sannysoft、CreepJS、BrowserScan、FingerprintJS)上测的,不等于能稳定突破生产级 WAF。Akamai、Kasada、PerimeterX 有主动探针,且补丁会随 Chrome 更新失效
- TLS 只修一层:curl_cffi 能过 TLS 指纹检测,但 IP 声誉、JS 挑战、UA 矛盾照样暴露。伪装到一半,比不伪装更显眼
- 注意项目是否还活着:undetected-chromedriver 12.8k 星但官方上游已停滞、原版 curl-impersonate 6k 星但 2024 年停更、BotBrowser 2025 年后无提交。Star 高不代表在维护
- 许可证要看清楚:nodriver 的 GitHub 仓库 LICENSE 是 Unlicense(公共领域),但作者在 PyPI 发布包时附加了自定义非商业条款,两者并不一致。只看 GitHub 就贸然商用容易踩坑,动手前务必核对 PyPI 上的条款;CloakBrowser 的免费版二进制是闭源专有 License,明确禁止撞库、批量注册
- 合规是硬约束:反检测工具是双用途技术,多数项目的 License 或 README 都明示禁止未授权访问。请只用于授权测试、自有系统和合规采集
写在最后
给个极简选型结论:简单站点、PoC 验证,用 stealth 插件就够了;要过 Cloudflare 这类硬目标,上 patchright 或 nodriver 补协议层;预算和场景允许,直接上 CloakBrowser、Camoufox 这类引擎内核,相对一劳永逸;纯 API 采集不渲染 JS,用 curl_cffi 做 TLS 层伪装;不想维护这场军备竞赛,就买商业托管服务。
反 bot 检测是这个系列里最特殊的一块拼图:它不增加 Agent 的能力,只增加 Agent 的生存率。个人 Agent 和网站站长在卷同一件事——让"真人"和"机器"的边界越来越难分。
如果你觉得文章对你有用,可以关注我下一篇带你走进CloakBrowser。


