CloakBrowser
活着就要学习,学习不是为了活着。——弗培根
https://github.com/CloakHQ/CloakBrowser
CloakBrowser:一位披着“正常人”外衣的 Chromium,专治各种“你看起来像机器人”
在浏览器自动化的世界里,大多数工具都像穿着统一制服去参加舞会:动作很快、节奏很整齐、还总爱在脸上写着“我在自动化”。反爬和风控系统当然一眼就认出来了:请去做题、请点格子、请证明你是人。
而 CloakBrowser 更像一位真正来参加舞会的绅士——他不是靠化妆、不是靠贴假胡子、也不是靠临时换衣服蒙混过关;他是从骨子里就长成了“真实浏览器”的样子。
Stealth Chromium that passes every bot detection test.
这句是 CloakBrowser 的自我介绍:它是一套“隐身”的 Chromium,并且能通过每一个机器人检测测试。
它还是一个 Playwright 的即插即用替代品:同样的 API,同样的代码,只要换个 import。
仿佛你只是给 Playwright 换了一副更像人的灵魂。
它到底是谁?(严格按它自己的介绍来)
CloakBrowser 不是“改几个启动参数”的那种聪明,也不是“往页面里注入一段 JS”那种投机。
它更像个动手能力极强的外科医生:
把 Chromium 的“指纹表现”直接在 C++ 源码层做了修改,然后重新编译成一个 真正的 Chromium 二进制。
它会很认真地说:
- 这不是 patched config
- 这不是 JS injection
- 这是 real Chromium binary with fingerprints modified at the C++ source level
所以反机器人系统给它打分时,会觉得它像普通浏览器——因为它 就是 普通浏览器那种“真实”。
它的性格标签:不止“像”,还要“像得自然”
CloakBrowser 有两张王牌,一张负责“长相”,一张负责“举止”。
1)长相:源代码级指纹补丁
它身上带着一串“出生证明式”的改造记录:
- 49(后来版本提到 57)个源代码级 C++ patches(覆盖 canvas、WebGL、audio、fonts、GPU、screen、WebRTC、network timing、automation signals、CDP input behavior 等)
- 自动化信号会被处理得更干净:比如
navigator.webdriver会变得更像真实浏览器 - TLS 指纹会表现得像真实 Chrome(ja3n/ja4/akamai match 的语义在 README 中被强调)
这些改造不是贴纸,是“骨架调整”。所以它不怕常见的“Chrome 一更新, stealth 插件就坏”的宿命。
2)举止:humanize=True
如果说指纹补丁让它“看起来像人”,那 humanize=True 则让它“行动像人”。
它会用更像人类的方式去做鼠标、键盘、滚动:
- 鼠标走 曲线(Bézier curve),带一点点缓冲与微小偏移
- 打字是 逐字符、带停顿、甚至会“想一想”
- 滚动像真实手势:加速 → 匀速 → 减速,带微步
一行参数,它就能把行为学检测也一并照顾到。
你和它相遇的方式:3 行代码,30 秒“解封”
它很骄傲地把门槛放得极低:
Same API, same code — just swap the import. 3 lines of code, 30 seconds to unblock.
你不需要学习新框架,它只需要你给它一个入口。
先来一次“试试就知道”的快速体验(Docker 一句命令)
如果你只想看看它到底有多会“装正常”,它直接给你一条即刻上手的路:
1 | docker run --rm cloakhq/cloakbrowser cloaktest |
它像在说:
“别说那么多,来,跑一下,看我怎么过检测。”
安装:它不挑语言,但很讲究“第一次见面”的仪式感
Python 安装
1 | pip install cloakbrowser |
第一次运行时,它会自动下载对应平台的 stealth Chromium 二进制(约 200MB,并缓存到本地)。
你甚至不需要手动去找浏览器路径——它自己会把行李拎到你家门口。
可选:根据代理 IP 自动匹配 timezone/locale
1 | pip install cloakbrowser[geoip] |
JavaScript / Node.js 安装
如果你使用 Playwright:
1 | npm install cloakbrowser playwright-core |
如果你使用 Puppeteer:
1 | npm install cloakbrowser puppeteer-core |
同样:第一次启动会自动下载二进制并缓存到 ~/.cloakbrowser/。
Python:它用 Playwright 的手法做事,但更不容易被拦
最基础的 3 行体验
1 | from cloakbrowser import launch |
它的语气像在轻描淡写:
“嗯?你说被拦?我路过一下就行了。”
带上代理(HTTP / SOCKS5 都行)
1 | from cloakbrowser import launch |
1 | from cloakbrowser import launch |
一键“更像人”:humanize=True
1 | from cloakbrowser import launch |
如果你想让它更谨慎、更慢一点,它还有“性格预设”:
1 | from cloakbrowser import launch |
Python:不只 launch,还能把“上下��”和“持久化身份”一起安排好
launch_async():异步也能稳稳当当
1 | import asyncio |
launch_context():浏览器 + context 一次到位
1 | from cloakbrowser import launch_context |
它还会把额外参数转交给 Playwright 的 browser.new_context(),比如 storage_state:
1 | from cloakbrowser import launch_context |
launch_persistent_context():让它“有记忆”,不再像每次重生
持久化 profile 能帮你:
- 跨运行保持登录态(cookies/sessions)
- 绕开一些站点对 incognito 的敏感
- 使用扩展
- 积累更自然的浏览痕迹(缓存、IndexedDB、service worker…)
1 | from cloakbrowser import launch_persistent_context |
CLI:它也愿意在命令行里自报家门、整理行李
你可以在命令行让它提前把二进制准备好,或者查看状态:
1 | python -m cloakbrowser install # Download binary with progress output |
它像个会自我维护的旅行者:
“我会检查更新、会清理缓存、也会告诉你我住在哪里。”
JavaScript / Node.js:同样的“换个 import”,同样的熟悉感
CloakBrowser 提供 TypeScript 包和类型定义。你可以选 Playwright 或 Puppeteer,本质上都在用同一套 stealth Chromium。
Playwright(默认推荐)
1 | import { launch } from 'cloakbrowser'; |
带参数也很自然:
1 | import { launch } from 'cloakbrowser'; |
Puppeteer(它也支持,但会认真提醒你局限)
1 | import { launch } from 'cloakbrowser/puppeteer'; |
README 里明确说了:
在某些场景(例如 reCAPTCHA Enterprise),Playwright wrapper 更推荐,因为 Puppeteer 的 CDP 协议可能泄漏自动化信号。
Node.js 的 CLI 同样齐全
1 | npx cloakbrowser install # Download binary with progress output |
让“身份”更像一个连续的人:指纹种子(seed)的哲学
CloakBrowser 默认会在启动时自动生成随机 fingerprint seed:
这意味着每次启动都像“换了一个新设备”。
它会温柔地提醒你一个现实:
如果你要反复访问同一个站点,每次都像新设备反而有点怪。
所以它给你一把“固定身份”的钥匙:--fingerprint=seed
1 | from cloakbrowser import launch |
1 | import { launch } from 'cloakbrowser'; |
Docker:它甚至愿意把整套行头打包好给你
快速测试
1 | docker run --rm cloakhq/cloakbrowser cloaktest |
跑你自己的脚本
1 | docker run --rm -v ./my_script.py:/app/my_script.py cloakhq/cloakbrowser python my_script.py |
CDP server mode:把它当成一个“常驻的隐身浏览器服务”
启动:
1 | docker run -d --name cloak -p 127.0.0.1:9222:9222 cloakhq/cloakbrowser cloakserve |
连接(Playwright 通过 CDP):
1 | from playwright.sync_api import sync_playwright |
它像在说:
“我可以常驻,你只要来连我就好。”
它为什么要存在?(它对“伪装”这件事有点较真)
README 的态度很明确:
- 只靠 config 或 JS 注入的 stealth 工具经常会被 Chrome 更新击穿
- CloakBrowser 选择从 Chromium 源码层修改指纹,编译进二进制
- 让检测站点看到的不是“伪装痕迹”,而是一台“真实的浏览器”
它不承诺“我能解 CAPTCHA”,它更像在说:
“我更希望你压根别被拉去做 CAPTCHA。”
它拿什么成绩单说话:测试结果(README 原意复述)
它把测试当作公开的“社会面试”。
在 README 里,它列出了多个检测服务对比,并强调:
- reCAPTCHA v3:Stock Playwright 0.1(bot)→ CloakBrowser 0.9(human)
- Cloudflare Turnstile:PASS
- FingerprintJS / BrowserScan 等:PASS / NORMAL
navigator.webdriver:能变得更像真实环境- CDP detection:Not detected
- TLS fingerprint:Identical to Chrome
- 并且:Tested against 30+ detection sites
它很像那种把体检报告摊在桌上的人:
“你看,我没说我像人,我是拿指标证明我像人。”
Browser Profile Manager:它还有一个“分身管理中心”
如果你需要管理多套浏览器资料(fingerprints、proxies、持久会话),README 里还提到一个自托管的方案:
- Self-hosted alternative to Multilogin, GoLogin, AdsPower
- 通过 Web 界面创建 profile、点击 Launch
启动方式:
1 | docker run -p 8080:8080 -v cloakprofiles:/data cloakhq/cloakbrowser-manager |
然后打开:
并且它指向:
- CloakBrowser Manager:https://github.com/CloakHQ/CloakBrowser-Manager
小结:它像一个不爱吵闹、只想“像个正常人”的浏览器
CloakBrowser 的核心气质很统一:
- 用 源代码级方式解决指纹问题,而不是临时贴补丁
- 让你用熟悉的 Playwright/Puppeteer API,不需要重学
- 能用
humanize=True把“行为”也打磨得更真实 - 安装后自动下载、自动更新二进制,尽量做到零配置
- Docker、CLI、CDP server mode 都准备好了,适配从本地到部署的各种场景
如果你曾经被“你看起来像机器人”这句话拦在门外,
CloakBrowser 更像一位会轻轻拍你肩膀的同伴:
“别急,我来。你只要照常写代码——剩下的我来表现得更像人。”
