乔木博客
全部
AI工具
AI教程
AI生成
AI资讯
健脑房
播客解读
论文学习
CloakBrowser:从 C++ 源码层打补丁,让自动化浏览器通过所有主流反爬检测
AI工具
·
2026年5月11日
·
165 次阅读
·
约 9 分钟
最近发现一个开源项目,叫 CloakBrowser。
https://github.com/CloakHQ/CloakBrowser
做过爬虫或自动化的人应该都遇到过这个问题:Cloudflare 拦截、reCAPTCHA 打低分、FingerprintJS 识别出机器人。
市面上的解决方案大多是 JS 注入或者改配置参数,用一段时间就失效了。
CloakBrowser 的思路完全不同。
它到底做了什么
直接改 Chromium 的 C++ 源码,重新编译成二进制。
不是在浏览器启动后注入 JS 去伪造 navigator.webdriver,也不是靠 --disable-blink-features=AutomationControlled 这种 flag。而是在编译阶段就把指纹信息改掉,包括 canvas、WebGL、音频、字体、GPU、屏幕尺寸、WebRTC、网络时序、CDP 输入行为,一共 57 处补丁。
检测系统看到的是一个"真实的浏览器",因为它本来就是一个真实的浏览器。
测试结果比较直观:
检测项
原版 Playwright
CloakBrowser
reCAPTCHA v3 分数
0.1(机器人)
0.9(人类)
Cloudflare Turnstile
失败
通过
FingerprintJS
被识别
通过
BrowserScan
被识别
4/4 正常
navigator.webdriver
true
false
UA 字符串
HeadlessChrome
Chrome/146.0.0.0
为什么其他方案会失效
playwright-stealth、undetected-chromedriver、puppeteer-extra 这类工具的共同问题是:补丁打在表面,检测系统盯的也是表面。
Chrome 每次更新,JS 注入的方式可能就失效了。更麻烦的是,反爬系统已经开始检测"补丁本身",比如某些特定的 JS 覆盖模式、flag 组合,反而成了机器人的特征。
CloakBrowser 的源码级补丁不存在这个问题,因为没有任何运行时注入的痕迹。
用起来有多简单
这是它最大的优点之一,API 和 Playwright 完全兼容,改一行 import 就够了:
<code class="language-python"># 之前
from playwright.sync_api import sync_playwright
pw = sync_playwright().start()
browser = pw.chromium.launch()
# 之后
from cloakbrowser import launch
browser = launch()
</code>
剩下的代码一行不用改。
JavaScript 同样支持:
<code class="language-javascript">import { launch } from 'cloakbrowser';
const browser = await launch();
const page = await browser.newPage();
await page.goto('https://protected-site.com');
await browser.close();
</code>
安装也很直接:
<code class="language-bash">pip install cloakbrowser
# 或
npm install cloakbrowser playwright-core
</code>
第一次运行会自动下载约 200MB 的定制 Chromium 二进制,之后缓存在本地,不需要额外配置。
几个值得关注的功能
指纹管理
每次启动会自动生成随机指纹种子,GPU 型号、屏幕尺寸、硬件参数全部自动伪造,每次启动都是一个新身份。
如果需要模拟"回访用户"(对 reCAPTCHA Enterprise 很重要),可以固定种子:
<code class="language-python">browser = launch(args=["--fingerprint=12345"])
</code>
同一个种子每次产生完全一致的指纹,在同一个站点反复访问时不会显得可疑。
人类行为模拟
加一个参数,鼠标移动、键盘输入、滚动行为全部变成人类模式:
<code class="language-python">browser = launch(humanize=True)
</code>
鼠标走贝塞尔曲线、键盘有每个字符的时间间隔、偶尔打错字再自我纠正、滚动有加速和减速过程。
不需要改任何业务代码,底层自动替换。
代理 + 时区自动匹配
这个细节很多人忽略。用了代理但时区还是 UTC、语言还是 en-US,这本身就是机器人信号。
<code class="language-python">browser = launch(proxy="http://user:pass@proxy:8080", geoip=True)
</code>
geoip=True 会通过代理出口 IP 自动检测时区和语言,同时注入 WebRTC IP 防泄漏,一个参数解决三个问题。
持久化 Profile
<code class="language-python">from cloakbrowser import launch_persistent_context
ctx = launch_persistent_context("./my-profile", headless=False)
</code>
Cookie、localStorage、缓存跨会话保留,避免被识别为无痕模式,也能积累浏览历史让 Profile 看起来更真实。
对抗最顽固的站点
遇到 DataDome、Kasada、Akamai 这类强度更高的反爬系统,推荐的完整配置是:
<code class="language-python">browser = launch(
proxy="http://your-residential-proxy:port", # 住宅 IP,数据中心 IP 直接被 IP 信誉封掉
geoip=True, # 时区和语言匹配代理出口
headless=False, # 有头模式,部分站点能检测无头
humanize=True, # 人类行为
)
</code>
Linux 服务器上还需要额外安装字体包,Kasada 和 Akamai 会在隐藏 canvas 上渲染 emoji 然后对比哈希值,Docker 镜像里已经预装了。
一些使用细节
reCAPTCHA 分数低的常见原因
page.wait_for_timeout() 会发送 CDP 命令,reCAPTCHA 能检测到。
换成原生 sleep:
<code class="language-python"># 有问题的写法
page.wait_for_timeout(3000)
# 正确写法
import time
time.sleep(3)
</code>
另外,表单填写用 page.type() 而不是 page.fill(),前者模拟真实键盘事件,后者直接设值,行为分析会发现差异。
和 AI Agent 框架集成
browser-use、Crawl4AI、Scrapling、Stagehand、LangChain 都支持,两种方式:框架直接用 CloakBrowser 的二进制,或者 CloakBrowser 先启动再通过 CDP 连接。
和同类工具的对比
playwright-stealth
Camoufox
CloakBrowser
补丁层级
JS 注入
C++(Firefox)
C++(Chromium)
reCAPTCHA v3
0.3-0.5
0.7-0.9
0.9
Playwright API
原生
不支持
原生
维护状态
基本停滞
不稳定
活跃
Camoufox 是最接近的竞品,但基于 Firefox,Playwright 生态的兼容性差一些,而且 2026 年初刚回归,还在 beta 阶段。
目前 GitHub 4300 星,MIT 协议,二进制有单独的许可条款(禁止再分发,但使用免费)。
项目还在活跃维护,最近刚升级到 Chromium 146。
对做数据采集、自动化测试、AI Agent 的人来说,值得关注。
© 2026
·
向阳乔木
📌 文中提及的人物和组织
公司/组织: Cloudflare, CloakHQ
产品/模型: CloakBrowser, Chromium, Playwright, reCAPTCHA, FingerprintJS, Camoufox