CloakBrowser:从 C++ 源码层打补丁,让自动化浏览器通过所有主流反爬检测
最近发现一个开源项目,叫 CloakBrowser。
项目地址:https://github.com/CloakHQ/CloakBrowser | 官网:https://cloakbrowser.dev
做过爬虫或自动化的人应该都遇到过这个问题:Cloudflare 拦截、reCAPTCHA 打低分、FingerprintJS 识别出机器人。
市面上的解决方案大多是 JS 注入或者改配置参数,用一段时间就失效了。
CloakBrowser 的思路完全不同。
[!info] 项目速览
项目 CloakBrowser 原理 直接修改 Chromium C++ 源码,编译进二进制 最新版本 v0.5.10(基于 Chromium 151,87 处源码级补丁) 兼容性 与 Playwright / Puppeteer API 完全兼容 测试成绩 reCAPTCHA v3 0.9 分、Cloudflare Turnstile 通过 开源协议 Wrapper 为 MIT;二进制有独立许可(免费使用,禁止再分发)
目录
- 0.1 它到底做了什么
- 0.2 为什么其他方案会失效
- 0.3 用起来有多简单
- 0.4 几个值得关注的功能
- 0.5 对抗最顽固的站点
- 0.6 一些使用细节
- 0.7 和同类工具的对比
- 项目状态与许可
- 数据核实说明
1. 它到底做了什么
直接改 Chromium 的 C++ 源码,重新编译成二进制。
不是在浏览器启动后注入 JS 去伪造 navigator.webdriver,也不是靠 --disable-blink-features=AutomationControlled 这种 flag,而是在编译阶段就把指纹信息改掉,包括 canvas、WebGL、音频、字体、GPU、屏幕尺寸、WebRTC、网络时序、CDP 输入行为等。截至 v0.5.10,共内置 87 处源码级补丁(免费旧版 Chromium 146 为 58 处)。
检测系统看到的是一个"真实的浏览器",因为它本来就是一个真实的浏览器。
官方实测结果(最新 Pro 构建,已对 30+ 检测站点验证):
| 检测项 | 原版 Playwright | CloakBrowser |
|---|---|---|
| reCAPTCHA v3 分数 | 0.1(机器人) | 0.9(人类) |
| Cloudflare Turnstile | 失败 | 通过 |
| FingerprintJS | 被识别 | 通过 |
| BrowserScan | 被识别 | 4/4 正常 |
navigator.webdriver |
true |
false |
navigator.plugins.length |
0 | 5(真实插件列表) |
| UA 字符串 | HeadlessChrome |
Chrome/151.0.0.0(无无头泄漏) |
| CDP 检测 | 被识别 | 未识别(isAutomatedWithCDP: false) |
| TLS 指纹 | 不匹配 | 与真实 Chrome 一致(ja3n/ja4/akamai) |
2. 为什么其他方案会失效
playwright-stealth、undetected-chromedriver、puppeteer-extra 这类工具的共同问题是:补丁打在表面,检测系统盯的也是表面。
Chrome 每次更新,JS 注入的方式可能就失效了。更麻烦的是,反爬系统已经开始检测"补丁本身",比如某些特定的 JS 覆盖模式、flag 组合,反而成了机器人的特征。
CloakBrowser 的源码级补丁不存在这个问题,因为没有任何运行时注入的痕迹——指纹在编译阶段就写进了二进制。
3. 用起来有多简单
这是它最大的优点之一:API 和 Playwright 完全兼容,改一行 import 就够了:
# 之前
from playwright.sync_api import sync_playwright
pw = sync_playwright().start()
browser = pw.chromium.launch()
# 之后
from cloakbrowser import launch
browser = launch()
剩下的代码一行不用改。
JavaScript 同样支持(Playwright 与 Puppeteer 双兼容):
import { launch } from 'cloakbrowser'; // Playwright
const browser = await launch();
const page = await browser.newPage();
await page.goto('https://protected-site.com');
await browser.close();
import { launch } from 'cloakbrowser/puppeteer'; // Puppeteer
const browser = await launch();
const page = await browser.newPage();
await page.goto('https://protected-site.com');
await browser.close();
安装也很直接:
pip install cloakbrowser
# 或
npm install cloakbrowser playwright-core
.NET / C# 也有官方客户端(NuGet 包 CloakBrowser),API 同样对齐 Playwright。
第一次运行会自动下载约 200MB 的定制 Chromium 二进制(下载后校验 Ed25519 签名),之后缓存在本地,不需要额外配置。
4. 几个值得关注的功能
4.1. 指纹管理
每次启动会自动生成随机指纹种子,GPU 型号、屏幕尺寸、硬件参数全部自动伪造,每次启动都是一个新身份。
如果需要模拟"回访用户"(对 reCAPTCHA Enterprise 很重要),可以固定种子:
browser = launch(args=["--fingerprint=12345"])
同一个种子每次产生完全一致的指纹,在同一个站点反复访问时不会显得可疑。默认情况下,Linux 上运行还会伪装成 Windows 平台(更常见的指纹,更难被聚类识别),也支持 --fingerprint-platform=macos 切换成 macOS 身份。
4.2. 人类行为模拟
加一个参数,鼠标移动、键盘输入、滚动行为全部变成人类模式:
browser = launch(humanize=True)
鼠标走贝塞尔曲线、键盘有每个字符的时间间隔、偶尔打错字再自我纠正、滚动有加速和减速过程。底层自动替换,无需修改业务代码。还支持 human_preset="careful" 预设和 human_config 自定义参数(如错字率、打字间隔)。
4.3. 代理 + 时区自动匹配
这个细节很多人忽略。用了代理但时区还是 UTC、语言还是 en-US,这本身就是机器人信号。
browser = launch(proxy="http://user:pass@proxy:8080", geoip=True)
geoip=True 会通过代理出口 IP 自动检测时区和语言,同时自动注入 --fingerprint-webrtc-ip 防止 WebRTC IP 泄漏,一个参数解决三个问题。HTTP 和 SOCKS5 代理都原生支持。
4.4. 持久化 Profile
from cloakbrowser import launch_persistent_context
ctx = launch_persistent_context("./my-profile", headless=False)
Cookie、localStorage、缓存跨会话保留,避免被识别为无痕模式,也能积累浏览历史让 Profile 看起来更真实。launch() 默认是无痕上下文,部分站点会对无痕模式扣分,需要时就换成 launch_persistent_context()。
5. 对抗最顽固的站点
遇到 DataDome、Kasada、Akamai 这类强度更高的反爬系统,推荐的完整配置是:
browser = launch(
proxy="http://your-residential-proxy:port", # 住宅 IP,数据中心 IP 直接被 IP 信誉封掉
geoip=True, # 时区和语言匹配代理出口
headless=False, # 有头模式,部分站点能检测无头
humanize=True, # 人类行为
)
如果代理支持 SOCKS5,也可以换 proxy="socks5://user:pass@host:port",兼容性更好。
Linux 服务器上还需要额外安装字体包——Kasada 和 Akamai 会在隐藏 canvas 上渲染 emoji 然后对比哈希值,最小化的 Linux 环境(Docker、云 VM)缺字体就会暴露。官方 Docker 镜像里已经预装了字体,如果是裸机部署则需要手动安装。
6. 一些使用细节
6.1. reCAPTCHA 分数低的常见原因
page.wait_for_timeout() 会发送 CDP 命令,reCAPTCHA 能检测到,建议换成原生 sleep:
# 有问题的写法:发送 CDP 命令,reCAPTCHA 能检测到
page.wait_for_timeout(3000)
# 正确写法:对浏览器不可见
import time
time.sleep(3)
其他提高分数的要点:
- 表单填写用
page.type()而不是page.fill()——type()模拟真实键盘事件,fill()直接设值,行为分析会发现差异 - 优先用 Playwright 而不是 Puppeteer——Puppeteer 发送的 CDP 流量更多,reCAPTCHA Enterprise 检测更敏感
- 触发验证前在页面停留 15 秒以上;两次
grecaptcha.execute()之间间隔 30 秒以上 - 固定指纹种子,保持设备身份一致
6.2. 和 AI Agent 框架集成
browser-use、Crawl4AI、Scrapling、Stagehand、LangChain、Selenium 等框架都有官方示例,两种接入方式:
- 框架直接用 CloakBrowser 的二进制:调用
ensure_binary()下载二进制,把 stealth 参数传给框架(适合 Selenium、Stagehand 等) - CloakBrowser 先启动,框架再通过 CDP 连接:启动时开
--remote-debugging-port,框架连到 CDP 端口(适合 browser-use、Crawl4AI 等)
7. 和同类工具的对比
| 检测维度 | playwright-stealth | Camoufox | CloakBrowser |
|---|---|---|---|
| 补丁层级 | JS 注入 | C++(Firefox) | C++(Chromium) |
| reCAPTCHA 分数 | 0.3 - 0.5 | 0.7 - 0.9 | 0.9 |
| API 兼容性 | 原生 | Python 专属(Playwright 封装) | 原生 |
| 维护状态 | 基本停滞 | 恢复活跃开发,官方定位为不稳定 beta | 活跃 |
Camoufox 是最接近的竞品,它基于 Firefox,通过 Python 封装 Playwright 使用;2025 年曾因维护者个人原因停更近一年,2026 年初恢复开发,官方明确尚未达到稳定生产状态。CloakBrowser 基于 Chromium,TLS 指纹与真实 Chrome 一致,且能直接复用 Playwright 生态,这是它的主要优势。
8. 项目状态与许可
- GitHub 星数:约 2.9 万(2026 年 9 月,来自官网实时数据;项目 2026 年 4 月发布后快速走红)
- 最新版本:v0.5.10,基于 Chromium 151(此前文章里写的 Chromium 146 已转为免费旧版,保留在 GitHub Releases)
- 协议:
- Wrapper 代码(Python / JS / .NET)为 MIT
- 二进制有独立许可条款:免费使用,但禁止再分发、转售或二次封装
- 免费策略:Chromium 146 旧版完全免费无需 key;最新构建(Chromium 151)通过 GitHub 登录获取免费 key 可用 1 个并发会话,更多并发需购买 Pro 订阅(v148 及以上仅限 Pro 下载)
[!warning] 合规提醒
项目官方明确声明:仅限用于你自己的账号、你自己的数据和公开站点的合法自动化;未经授权自动化系统、撞库、批量注册等行为被明确禁止。反爬检测本质是持续的军备竞赛,源码级补丁更难被检测,但官方也承认无法保证永远不被识破。
9. 数据核实说明
本文数据基于 2026-09-17 抓取的官方信息核实更新:
- 官方 README(含 v0.5.10 变更日志、补丁数、测试结果、Troubleshooting):https://github.com/CloakHQ/CloakBrowser
- 官网(星数、定价、二进制许可 FAQ):https://cloakbrowser.dev
- Camoufox 官方状态说明:https://camoufox.com/stealth/
对做数据采集、自动化测试、AI Agent 的人来说,值得关注。