CloakBrowser:从 C++ 源码层打补丁,让自动化浏览器通过所有主流反爬检测 · 乔木博客 向阳乔木 2026-05-11

乔木博客

全部

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

·

向阳乔木

📌 文中提及的人物和组织

关键字: anti-scraping browser-automation chromium-patching web-scraping fingerprinting