19.6k+反爬克星 CloakBrowser:实现满分人机判断

19 阅读8分钟

做过爬虫或自动化测试的同学,大概都有过这些经历:

  • 刚写好的Playwright脚本,一跑就被Cloudflare拦下
  • 明明换了IP,reCAPTCHA还是给0.1分的"机器人"判定
  • playwright-stealth之类的工具,Chrome一更新就集体阵亡

为什么传统方案总是撑不过三天?

因为它们都在"表面层"做文章——注入JavaScript、修改配置文件、加启动参数...

而现代反爬虫系统已经深入到了C++源码级别的检测。

今天要聊的 CloakBrowser,选择了一条更彻底的路:直接修改Chromium源码,重新编译

效果?reCAPTCHA v3打0.9分,Cloudflare Turnstile 30/30全通过。

GitHub 地址

github.com/CloakHQ/Clo…

一句话说清楚

CloakBrowser 是一个基于Chromium开发的反检测浏览器,通过57个C++源码级补丁修改浏览器指纹,能绕过所有主流的反爬虫检测系统。

它不是配置补丁,不是JS注入,而是一个真正的Chromium二进制文件——只不过指纹在源码层就被改掉了。

为什么传统方案总是失败?

JS注入的致命缺陷

playwright-stealthundetected-chromedriver这类工具的套路基本一致:在浏览器启动后,通过执行一段JavaScript来覆盖navigator.webdrivernavigator.plugins等属性。

问题在于:反爬系统也在检测这些JS补丁本身

// 检测webdriver属性覆盖
const isPatched = 
  Object.getOwnPropertyDescriptor(navigator, 'webdriver') !== undefined ||
  window.navigator.webdriver === true;

// 检测automation相关特征
const isAutomation = 
  /headless/i.test(navigator.userAgent) ||
  navigator.plugins.length === 0;

这些检测脚本越来越精准,专门针对playwright-stealth的特征码做指纹匹配。官方一升级补丁,反爬系统第二天就能识别新特征。

配置级flag的局限

即使你用--disable-blink-features=AutomationControlled之类的Chrome flag,仍然有以下问题:

检测维度flag能否解决
Canvas指纹❌ 无法覆盖
WebGL渲染器信息❌ 无法覆盖
AudioContext音频指纹❌ 无法覆盖
字体列表差异❌ 无法覆盖
TLS指纹不匹配❌ 无法覆盖
WebRTC IP泄漏❌ 无法覆盖

配置级flag只能改Chrome的启动参数,对浏览器运行时产生的「指纹信号」完全无能为力。

版本更新的维护噩梦

Chromium基本每个月发布一个大版本,每个版本源码都可能变化。JS注入方案需要持续维护,一旦Chromium更新,原有的属性路径或函数签名变了,补丁直接失效。

CloakBrowser 的解决方案:源码级修改

CloakBrowser 的做法是把补丁直接打在Chromium源码上,每次Chromium大版本更新时,重新rebase所有patch。

核心思路:不是修改配置,而是修改源码,重新编译。

57个C++源码级补丁

CloakBrowser 目前包含57个源码级补丁,覆盖以下指纹维度:

补丁类别覆盖内容解决的问题
Canvas指纹2D/3D渲染、GPU着色器不同显卡渲染结果差异
WebGL指纹渲染器信息、驱动版本虚拟化环境GPU信息缺失
音频指纹AudioContext、音频处理自动化环境返回固定值
字体枚举系统字体列表字体列表不完整或缺失
屏幕指纹分辨率、色深、DPIHeadless模式分辨率异常
WebRTC IPICE候选者、本地IP代理环境下IP泄漏
自动化信号CDP行为、输入时序自动化操作与真人差异
TLS指纹握手参数、密码套件TLS指纹与真实浏览器不匹配
时区/语言自动匹配代理IP地理位置时区与IP位置不一致

这些补丁在C++编译阶段就生效,反爬系统检测不到任何"修改痕迹"——因为它看到的就是一个正常的Chromium。

humanize=True:拟人化行为

除了静态指纹,CloakBrowser还能模拟人类行为:

from cloakbrowser import launch

# 一行参数,鼠标轨迹、键盘时序、滚动行为完全拟人化
browser = launch(humanize=True)

开启humanize=True后:

  • 鼠标轨迹:贝塞尔曲线,有加速减速,不是直线
  • 键盘时序:按键间隔随机,符合人类打字习惯
  • 滚动行为:滚动速度变化,有停顿和回滚

实测数据:30/30检测全通过

CloakBrowser 官方在30多个检测网站上进行了测试:

检测项CloakBrowser传统Chrome
Cloudflare Turnstile✅ 通过❌ 拦截
reCAPTCHA v30.9分0.1分
DataDome✅ 通过❌ 拦截
PerimeterX✅ 通过❌ 拦截
FingerprintJS✅ 通过❌ 识别
BrowserScan✅ 通过❌ 识别

结论:CloakBrowser在所有30项检测中全部通过,而传统方案普遍在5-10项上存在被识别风险。


核心功能一览

1. Drop-in替换Playwright/Puppeteer

CloakBrowser 的API与Playwright/Puppeteer完全一致,只需要改import:

Python(Playwright):

# 原来
from playwright.sync_api import sync_playwright
pw = sync_playwright().start()
browser = pw.chromium.launch()

# 现在
from cloakbrowser import launch
browser = launch()

JavaScript(Playwright):

// 原来
import { chromium } from 'playwright';
const browser = await chromium.launch();

// 现在
import { launch } from 'cloakbrowser';
const browser = await launch();

JavaScript(Puppeteer):

import { launch } from 'cloakbrowser/puppeteer';
const browser = await launch();

2. 指纹管理

from cloakbrowser import launch

# 自定义指纹
browser = launch(
    fingerprint={
        "timezone": "America/New_York",
        "locale": "en-US",
        "platform": "Win32",
        "screen": {"width": 1920, "height": 1080}
    }
)

3. 代理支持

# HTTP代理
browser = launch(proxy="http://user:pass@host:port")

# SOCKS5代理(原生支持)
browser = launch(proxy="socks5://user:pass@host:port")

# 自动从代理IP检测时区
browser = launch(
    proxy="http://proxy:8080",
    fingerprint_timezone="auto"
)

4. 持久化上下文

# 创建持久化上下文,cookies和localStorage会保存到指定目录
browser = launch_persistent_context(
    user_data_dir="./profile_1",
    fingerprint={"timezone": "Asia/Shanghai"}
)

5. Browser Profile Manager

CloakBrowser 还提供了一个自托管的浏览器配置管理器,作为Multilogin、GoLogin的开源替代品:

docker run -p 8080:8080 -v cloakprofiles:/data cloakhq/cloakbrowser-manager

打开 http://localhost:8080,创建配置、设置代理、启动浏览器——全部在浏览器里完成。


安装与使用

系统要求

  • Python:3.8+
  • Node.js:16+
  • 平台:Windows、macOS、Linux
  • 磁盘空间:~200MB(首次运行自动下载Chromium二进制文件)

安装方式

Python:

pip install cloakbrowser

JavaScript / Node.js:

# Playwright方案
npm install cloakbrowser playwright-core

# Puppeteer方案
npm install cloakbrowser puppeteer-core

Docker(无需安装,直接体验):

docker run --rm cloakhq/cloakbrowser cloaktest

快速上手

Python基础用法:

from cloakbrowser import launch

browser = launch()
page = browser.new_page()
page.goto("https://protected-site.com")
browser.close()

带代理和humanize:

from cloakbrowser import launch

browser = launch(
    proxy="http://user:pass@proxy:8080",
    humanize=True,
    fingerprint_timezone="auto"
)
page = browser.new_page()
page.goto("https://protected-site.com")
browser.close()

JavaScript(Playwright):

import { launch } from 'cloakbrowser';

const browser = await launch({
    proxy: 'http://user:pass@proxy:8080',
    humanize: true
});
const page = await browser.newPage();
await page.goto('https://protected-site.com');
await browser.close();

适用场景

1. 网页爬虫开发

需要抓取有反爬机制的网站时,CloakBrowser能大幅降低被封概率。

2. 自动化测试

测试有Cloudflare或reCAPTCHA保护的网站时,不再需要手动处理验证码。

3. 跨境电商多账号管理

同时运营多个Amazon、eBay账号,每个账号需要独立的浏览器环境和指纹。

4. 数据采集与监控

监控竞品价格、库存信息,需要稳定访问目标网站而不被拦截。

5. 广告验证与竞品分析

验证广告投放效果,分析竞品广告策略,需要模拟真实用户访问。


同类工具对比

工具技术方案检测通过率维护成本开源
CloakBrowserC++源码级补丁30/30低(自动更新)✅ MIT
playwright-stealthJS注入15/30高(需手动更新)✅ MIT
undetected-chromedriver配置补丁12/30高(需手动更新)✅ GPL
Multilogin商业方案28/30低(付费服务)❌ 商业
GoLogin商业方案27/30低(付费服务)❌ 商业
维度CloakBrowser优势CloakBrowser局限
检测通过率源码级修改,反爬系统无法识别-
维护成本自动更新Chromium版本-
开源协议MIT协议,完全免费无限制-
API兼容性直接替换Playwright/Puppeteer-
首次启动-需要下载~200MB二进制文件
扩展支持-不支持所有Chromium扩展
极端场景-某些检测场景仍需配合代理使用

GitHub 地址

github.com/CloakHQ/Clo…

写在最后

CloakBrowser 代表了一种更彻底的反检测思路

不是跟反爬系统玩"猫鼠游戏",而是直接从源码层面解决问题。

这种方案的优势很明显:检测通过率高达30/30,维护成本低因为支持自动更新,使用体验也很好只需3行代码就能上手。但也需要注意一些局限:技术门槛相对较高,因为需要维护Chromium源码补丁;项目还在快速发展中,目前还是v0.3.x版本,API可能会发生变化;某些极端检测场景下仍需配合代理使用。

总的来说,如果你需要稳定、高效、开源的反检测浏览器方案,CloakBrowser是目前最好的选择之一。

毕竟,与其在表面层修修补补,不如从根源上解决问题


关注

如果你觉得这篇文章对你有帮助,欢迎关注我们的公众号,获取更多开源工具的深度解读和使用指南。