项目概述
CloakBrowser 是一个隐形 Chromium 浏览器(Stealth Chromium Browser),通过在 C++ 源码级别修改浏览器指纹,实现对反机器人检测系统(Anti-Bot Systems)的绕过。它作为 Playwright 和 Puppeteer 自动化框架的直接替代品,无需修改代码即可实现隐形浏览。
核心理念 :真正的 Chromium 二进制文件,指纹在 C++ 源码级别修改。反机器人系统将其评分为正常浏览器------因为它就是一个正常浏览器。
核心架构
技术栈
复制代码
用户代码 (Playwright/Puppeteer API)
↓
CloakBrowser 封装层 (Python/JavaScript)
↓
定制 Chromium 二进制文件 (57 个 C++ 补丁)
↓
目标网站 (反机器人系统看到的是正常浏览器)
| 组件 |
技术 |
| 浏览器引擎 |
Chromium 146(定制编译) |
| Python 封装 |
Playwright 兼容 API |
| JavaScript 封装 |
TypeScript,完整类型定义,支持 Playwright 和 Puppeteer |
| 分发渠道 |
PyPI、npm、Docker Hub |
| 指纹系统 |
49-57 个 C++ 源码级补丁 |
平台支持
| 平台 |
Chromium 版本 |
补丁数量 |
状态 |
| Linux x86_64 |
146 |
57 |
最新 |
| Linux arm64 (RPi, Graviton) |
146 |
57 |
最新 |
| macOS arm64 (Apple Silicon) |
145 |
26 |
已发布 |
| macOS x86_64 (Intel) |
145 |
26 |
已发布 |
| Windows x86_64 |
146 |
57 |
最新 |
核心技术特性
1. C++ 源码级指纹补丁
CloakBrowser 包含 49-57 个 C++ 源码级补丁,覆盖以下指纹维度:
| 指纹类型 |
修改内容 |
| Canvas 指纹 |
噪声注入,消除独特画布特征 |
| WebGL 指纹 |
GPU Vendor/Renderer 伪装 |
| 音频指纹 |
AudioContext 噪声处理 |
| 字体指纹 |
字体渲染特征修改 |
| GPU/硬件报告 |
硬件并发数、设备内存伪装 |
| 屏幕属性 |
屏幕尺寸、分辨率伪装 |
| WebRTC IP 泄露 |
ICE 候选 IP 替换,防止真实 IP 泄露 |
| 网络时间 |
DNS/连接/SSL 时间归零 |
| 自动化信号 |
navigator.webdriver = false |
| CDP 行为 |
Chrome DevTools Protocol 输入行为修复 |
2. TLS 指纹
CloakBrowser 的 TLS 指纹与真实 Chrome 完全匹配:
| 检测方法 |
Stock Playwright |
CloakBrowser |
| ja3n |
不匹配 |
与 Chrome 一致 |
| ja4 |
不匹配 |
与 Chrome 一致 |
| Akamai |
不匹配 |
与 Chrome 一致 |
3. 人性化行为模拟 (humanize=True)
| 行为类型 |
实现方式 |
| 鼠标移动 |
贝塞尔曲线(Bézier Curve)+ 缓动函数 |
| 键盘输入 |
每字符延迟 + 思考停顿 |
| 滚动行为 |
加速 → 匀速 → 减速模式 |
| 错误模拟 |
5% 打字错误率 + 自动纠正 |
| 空闲微动作 |
点击之间的微小移动 |
检测测试结果
| 检测服务 |
Stock Playwright |
CloakBrowser |
备注 |
| reCAPTCHA v3 |
0.1(机器人) |
0.9(人类) |
服务端验证 |
| Cloudflare Turnstile(非交互) |
FAIL |
PASS |
自动解决 |
| Cloudflare Turnstile(托管) |
FAIL |
PASS |
单击通过 |
| ShieldSquare |
BLOCKED |
PASS |
生产环境测试 |
| FingerprintJS 机器人检测 |
DETECTED |
PASS |
|
| BrowserScan 机器人检测 |
DETECTED |
NORMAL (4/4) |
|
| bot.incolumitas.com |
13 个失败 |
1 个失败 |
仅 WEBDRIVER 规范 |
navigator.webdriver |
true |
false |
源码级补丁 |
| TLS 指纹 |
不匹配 |
与 Chrome 一致 |
|
安装与配置
Python 安装
bash
复制代码
# 基础安装
pip install cloakbrowser
# GeoIP 支持(自动从代理 IP 检测时区/语言区域)
pip install cloakbrowser[geoip]
# Patchright 后端(抑制额外 CDP 自动化信号)
pip install cloakbrowser[patchright]
JavaScript/Node.js 安装
bash
复制代码
# Playwright
npm install cloakbrowser playwright-core
# Puppeteer
npm install cloakbrowser puppeteer-core
系统要求
| 要求 |
详情 |
| Python |
>= 3.9 (支持 3.9-3.13) |
| Playwright |
>= 1.40 |
| httpx |
>= 0.24 |
| 二进制大小 |
~200MB(首次运行自动下载) |
环境变量配置
| 环境变量 |
默认值 |
说明 |
CLOAKBROWSER_BINARY_PATH |
--- |
跳过下载,使用本地 Chromium 二进制文件 |
CLOAKBROWSER_CACHE_DIR |
~/.cloakbrowser |
二进制缓存目录 |
CLOAKBROWSER_DOWNLOAD_URL |
cloakbrowser.dev |
自定义下载 URL |
CLOAKBROWSER_AUTO_UPDATE |
true |
设为 false 禁用后台更新检查 |
CLOAKBROWSER_SKIP_CHECKSUM |
false |
设为 true 跳过 SHA-256 校验 |
CLOAKBROWSER_BACKEND |
playwright |
设为 patchright 使用替代后端 |
使用方法
Python API
基础启动
python
复制代码
from cloakbrowser import launch
browser = launch()
page = browser.new_page()
page.goto("https://protected-site.com")
browser.close()
高级配置
python
复制代码
browser = launch(
headless=False, # 有头模式(可见浏览器)
proxy="http://user:pass@proxy:8080", # HTTP 代理
proxy="socks5://user:pass@proxy:1080",# SOCKS5 代理
geoip=True, # 自动从代理 IP 检测时区/语言区域
humanize=True, # 人性化交互
timezone="America/New_York",
locale="en-US",
args=["--fingerprint=12345"] # 固定指纹种子
)
异步模式
python
复制代码
import asyncio
from cloakbrowser import launch_async
async def main():
browser = await launch_async()
page = await browser.new_page()
await page.goto("https://example.com")
await browser.close()
asyncio.run(main())
持久化上下文(保留 cookies/session)
python
复制代码
from cloakbrowser import launch_persistent_context
ctx = launch_persistent_context("./my-profile", headless=False)
page = ctx.new_page()
page.goto("https://protected-site.com")
ctx.close() # profile 已保存
人性化配置
python
复制代码
browser = launch(humanize=True, human_config={
"mistype_chance": 0.05, # 5% 打字错误率 + 自动纠正
"typing_delay": 100, # 每字符延迟(毫秒)
"idle_between_actions": True, # 点击之间的微动作
"idle_between_duration": [0.3, 0.8], # 空闲持续时间范围(秒)
})
JavaScript/Node.js API
Playwright
javascript
复制代码
import { launch, launchContext, launchPersistentContext } from 'cloakbrowser';
// 基础
const browser = await launch();
// 高级配置
const browser = await launch({
headless: false,
proxy: 'http://user:pass@proxy:8080',
timezone: 'America/New_York',
locale: 'en-US',
humanize: true,
});
// 便捷方法:浏览器 + 上下文一次调用
const context = await launchContext({
userAgent: 'Custom UA',
viewport: { width: 1920, height: 1080 },
});
Puppeteer
javascript
复制代码
import { launch } from 'cloakbrowser/puppeteer';
const browser = await launch({ headless: true });
const page = await browser.newPage();
await page.goto('https://example.com');
await browser.close();
CLI 命令
bash
复制代码
python -m cloakbrowser install # 下载二进制文件(显示进度)
python -m cloakbrowser info # 显示版本、路径、平台信息
python -m cloakbrowser update # 检查并下载更新的二进制文件
python -m cloakbrowser clear-cache # 清除缓存的二进制文件
指纹管理
二进制级指纹标志
| 标志 |
控制内容 |
--fingerprint=seed |
主种子:canvas、WebGL、音频、字体、client rects |
--fingerprint-platform |
navigator.platform、User-Agent OS、GPU 池(windows/macos/linux) |
--fingerprint-gpu-vendor |
WebGL UNMASKED_VENDOR_WEBGL |
--fingerprint-gpu-renderer |
WebGL UNMASKED_RENDERER_WEBGL |
--fingerprint-hardware-concurrency |
navigator.hardwareConcurrency |
--fingerprint-device-memory |
navigator.deviceMemory(GB) |
--fingerprint-screen-width |
屏幕宽度 |
--fingerprint-screen-height |
屏幕高度 |
--fingerprint-brand |
浏览器品牌:Chrome/Edge/Opera/Vivaldi |
--fingerprint-timezone |
时区(如 America/New_York) |
--fingerprint-locale |
语言区域(如 en-US) |
--fingerprint-webrtc-ip |
WebRTC ICE 候选 IP 替换(auto 或显式 IP) |
--fingerprint-storage-quota |
存储配额覆盖(MB) |
--fingerprint-fonts-dir |
目标平台字体目录路径 |
--fingerprint-noise=false |
禁用噪声注入(保持指纹种子) |
Docker 部署
快速测试
bash
复制代码
docker run --rm cloakhq/cloakbrowser cloaktest
运行脚本
bash
复制代码
# 内联脚本
docker run --rm cloakhq/cloakbrowser python -c "
from cloakbrowser import launch
browser = launch()
page = browser.new_page()
page.goto('https://example.com')
print(page.title())
browser.close()
"
# 挂载自定义脚本
docker run --rm -v ./my_script.py:/app/my_script.py cloakhq/cloakbrowser python my_script.py
CDP 服务器模式(远程浏览器)
bash
复制代码
docker run -d --name cloak -p 127.0.0.1:9222:9222 cloakhq/cloakbrowser cloakserve
连接示例:
python
复制代码
from playwright.sync_api import sync_playwright
pw = sync_playwright().start()
browser = pw.chromium.connect_over_cdp("http://localhost:9222")
page = browser.new_page()
page.goto("https://example.com")
Docker Compose
yaml
复制代码
services:
cloakbrowser:
image: cloakhq/cloakbrowser
command: cloakserve
restart: unless-stopped
ports:
- "127.0.0.1:9222:9222"
healthcheck:
test: ["CMD", "curl", "-f", "http://localhost:9222/json/version"]
interval: 30s
timeout: 5s
retries: 3
资源使用
| 资源 |
使用量 |
| RAM 空闲 |
~190MB |
| RAM 3 个标签页 |
~280MB |
| 每增加一个标签页 |
~30MB |
框架集成
| 框架 |
Stars |
语言 |
示例文件 |
| browser-use |
70K |
Python |
examples/integrations/browser_use_example.py |
| Crawl4AI |
58K |
Python |
examples/integrations/crawl4ai_example.py |
| Crawlee |
8.6K |
Python |
examples/integrations/crawlee_example.py |
| Scrapling |
21K |
Python |
examples/integrations/scrapling_example.py |
| Stagehand |
21K |
TypeScript |
js/examples/stagehand.ts |
| LangChain |
100K+ |
Python |
examples/integrations/langchain_loader.py |
| Selenium |
--- |
Python |
examples/integrations/selenium_example.py |
| undetected-chromedriver |
12K |
Python |
examples/integrations/undetected_chromedriver.py |
适用场景
主要用途
| 场景 |
说明 |
| 网络爬虫/数据采集 |
绕过 Cloudflare、reCAPTCHA 等反爬虫系统 |
| 自动化测试 |
在受保护网站上进行功能测试 |
| 社交媒体营销 |
多账号管理,避免平台检测 |
| 电商运营 |
多店铺运营、价格监控 |
| 广告验证 |
跨地区广告投放效果验证 |
最佳实践配置
针对高强度反机器人网站(DataDome、Kasada):
python
复制代码
browser = launch(
proxy="http://residential-proxy:port", # 住宅代理 IP
geoip=True, # 自动时区/语言区域
headless=False, # 有头模式
humanize=True, # 人性化行为
)
与浏览器隔离安全产品的区别
重要说明 :CloakBrowser 不是浏览器隔离安全产品(Remote Browser Isolation, RBI)。
| 特性 |
CloakBrowser |
企业 RBI(Menlo Security、Cisco 等) |
| 定位 |
反检测浏览器 |
安全隔离技术 |
| 目的 |
绕过机器人检测 |
防止恶意软件、钓鱼攻击 |
| 沙箱隔离 |
❌ 无 |
✅ 远程渲染/容器隔离 |
| 威胁隔离 |
❌ 无 |
✅ 内容与端点分离 |
| 钓鱼防护 |
❌ 无(标准浏览器级别) |
✅ 主动防护 |
| 恶意软件防护 |
❌ 无 |
✅ Drive-by Download 阻止 |
如需企业级浏览器隔离安全解决方案,请考虑:
- Menlo Security
- Cisco Secure RBI
- Cloudflare Browser Isolation
- Authentic8 Silo
专业术语对照表
| 英文术语 |
中文翻译 |
| Stealth Chromium Browser |
隐形 Chromium 浏览器 / 反检测浏览器 |
| Bot Detection |
机器人检测 / 反爬虫检测 |
| Browser Fingerprint |
浏览器指纹 |
| C++ Source-Level Patches |
C++ 源码级补丁 |
| Anti-Bot Systems |
反机器人系统 / 反自动化系统 |
| Canvas Fingerprint |
Canvas 指纹(画布指纹) |
| WebGL Fingerprint |
WebGL 指纹(图形库指纹) |
| TLS Fingerprint (ja3/ja4) |
TLS 指纹 |
| WebRTC ICE Candidates |
WebRTC ICE 候选 |
| CDP (Chrome DevTools Protocol) |
Chrome 开发工具协议 |
| Headless Browser |
无头浏览器 |
| Drop-in Replacement |
直接替换(无需修改代码) |
| Humanize |
人性化行为模拟 |
| Bézier Curve |
贝塞尔曲线(鼠标轨迹) |
| Persistent Context |
持久化上下文(保留 cookies/session) |
| Residential Proxy |
住宅代理 |
| GeoIP |
地理位置 IP |
| Hardware Concurrency |
硬件并发数(CPU 核心数) |
| Device Memory |
设备内存 |
| GPU Renderer |
GPU 渲染器 |
| Storage Quota |
存储配额 |
| navigator.webdriver |
navigator.webdriver 属性 |
| reCAPTCHA v3 Score |
reCAPTCHA v3 评分 |
| Cloudflare Turnstile |
Cloudflare Turnstile 验证 |
| Browser Isolation (RBI) |
浏览器隔离 / 远程浏览器隔离 |
| Zero Trust Architecture |
零信任架构 |
| Data Exfiltration |
数据泄露 |
| Drive-by Download |
挂马下载 |
| Zero-day Exploit |
零日漏洞利用 |
参考资源