
说实话,用 Playwright 写爬虫这件事,我已经有点 PTSD 了。
上周又是个典型场景:脚本逻辑没问题,本地跑得好好的,一上服务器就被 Cloudflare 按在地上摩擦。调 User-Agent、改 canvas 指纹、隐藏 webdriver 标志,折腾两天好不容易过了一个站点,换到另一个站点又报错。
直到我在 GitHub 上翻到这个项目。
CloakBrowser 的思路跟其他 stealth 工具完全不一样。它不是用 JS 往页面里注入脚本,也不是调一堆 Chrome 参数,而是直接改了 Chromium 的 C++ 源码,把指纹信息做到编译层面。
检测服务看到的是什么?就是一个普通的 Chrome 浏览器。因为它本身就是个真的浏览器,只是从娘胎里生下来就被改了指纹。
实测数据:30 个检测站点全过
直接看结果吧。
| 检测服务 | 普通 Playwright | CloakBrowser |
|---|---|---|
| reCAPTCHA v3 | 0.1 | 0.9 |
| Cloudflare Turnstile | 挂 | 过 |
| FingerprintJS | 被识别 | 过 |
| BrowserScan | 异常 | 正常 |
官方说是 30/30 全过,我自己试了其中五六个,确实都过了。reCAPTCHA v3 能到 0.9 这个分数,基本上就是真人的水平。
接入有多简单?改一行 import
如果你已经在用 Playwright,切换成本基本为零。真的就改一下导入:
Python:
1
2
3
4
5
6
7
8
# 之前
from playwright.sync_api import sync_playwright
pw = sync_playwright().start()
browser = pw.chromium.launch()
# 现在
from cloakbrowser import launch
browser = launch()
JavaScript:
1
2
3
4
5
6
7
// 之前
import { chromium } from 'playwright';
const browser = await chromium.launch();
// 现在
import { launch } from 'cloakbrowser';
const browser = await launch();
后面的代码不用动。new_page()、goto()、click() 这些 API 都是一样的,你现有的脚本可以直接跑。
它到底改了什么
CloakBrowser 的 Chromium 二进制文件带了 42 个 C++ 级别的补丁,覆盖的点包括:
- Canvas、WebGL、Audio 指纹 —— 返回随机化的真实数据,不是默认值
- 字体和 GPU 信息 —— 模拟真实硬件特征
- 屏幕分辨率 —— 跟真实设备一致
- navigator.webdriver —— 从源头设成 false
- CDP 输入行为 —— 让事件触发看起来像是真人操作
- TLS 指纹 —— ja3/ja4 跟真 Chrome 一样
关键是这些都是编译进去的,不是运行时注入 JS。所以 Chrome 升级不会搞坏它,补丁跟着二进制一起更新。
humanize 模式:让操作更像真人
除了静态指纹,还有个 humanize=True 的参数。开了之后,鼠标、键盘、滚动的行为都会变成类真人模式:
- 鼠标移动走贝塞尔曲线,带一点过冲
- 键盘是逐字符输入,有思考停顿,偶尔还会打错字然后删掉重打
- 滚动是加速-匀速-减速的微步进
- 点击有真实的按住时长
1
browser = launch(humanize=True)
deviceandbrowserinfo.com 的 24 项行为检测,开了这个之后全过。
其他有用的功能
多语言支持
Python:pip install cloakbrowser
JavaScript:npm install cloakbrowser
Playwright 和 Puppeteer 都支持。
代理和时区自动匹配
1
2
# 根据代理 IP 自动检测时区和语言
browser = launch(proxy="http://user:pass@proxy:8080", geoip=True)
持久化会话
1
2
# 保存 cookies 和 localStorage,不用每次都重新登录
ctx = launch_persistent_context("./profile", headless=False)
Docker 一键测试
1
docker run --rm cloakhq/cloakbrowser cloaktest
浏览器指纹管理器
项目还配了个自托管的管理界面,可以当成 Multilogin、GoLogin 的开源替代品来用。

跟其他方案比怎么样
市面上常见的三类方案:
- playwright-stealth / puppeteer-extra —— JS 注入,Chrome 一升级就失效
- undetected-chromedriver —— 配置层补丁,维护不太活跃,检测率一般
- Camoufox —— 也是 C++ 级别补丁,但基于 Firefox,API 跟 Playwright 不兼容
CloakBrowser 的好处是源码级修改 + Chromium 内核 + Playwright API 兼容,维护也勤快,已经跟进到 Chromium 145 了。
适合什么场景
- 数据采集 —— 绕过 Cloudflare、DataDome 这些防护
- 自动化测试 —— 测需要登录态的站点
- 多账号管理 —— 每个环境独立指纹,互不干扰
- AI Agent —— 给 browser-use、Crawl4AI、LangChain 这些框架提供隐形浏览器
项目信息
- GitHub:https://github.com/CloakHQ/CloakBrowser
- GitHub: https://github.com/CloakHQ/CloakBrowser-Manager
- 官网:https://cloakbrowser.dev/
- 协议:MIT,完全开源免费
维护挺活跃的,最近几周还在持续更新 Chromium 145 的补丁。
我自己用下来,最大的感受是:终于不用在反检测这件事上消耗太多精力了。
以前写个爬虫,一半时间在搞业务逻辑,一半时间在跟 Cloudflare 斗智斗勇。现在接入 CloakBrowser 之后,至少反检测这块不用再反复折腾。省下来的时间,可以用来做真正有价值的事。
如果你也在用 Playwright 做自动化,一直被各种反检测机制困扰,建议直接上手试一遍。效果可以用检测站点现场验证,行就行,不行也不亏。
