CloakBrowser:通过了所有 30 项爬虫检测的隐身浏览器,Playwright 替代品

CloakBrowser:通过了所有 30 项爬虫检测的隐身浏览器,Playwright 替代品

GitHub 今日趋势榜,⭐5,411,今日 +496 stars —— CloakHQ 开源的隐身 Chromium 分支,绕过所有主流反爬虫检测,30/30 测试全部通过。Python 编写,API 与 Playwright 完全兼容。


引言:爬虫被检测,是每个数据采集工程师的噩梦

做网页数据采集,最头疼的不是写爬虫逻辑,而是绕过反爬虫机制

Cloudflare Bot Management、DataDome、PerimeterX、Distil Networks……这些主流反爬服务能检测出 99% 的自动化工具。正常写个 Playwright 脚本,分分钟被封 IP、弹验证码、甚至告你侵权。

传统的解决方案:

CloakBrowser 干了一件很硬核的事:从源码级别修改 Chromium,把所有能被检测的特征全部抹掉。


核心技术:源码级反检测

1. 浏览器指纹消除

传统反爬检测依赖大量信号来判断请求是否来自自动化工具。CloakBrowser 对每一个信号都做了处理:

检测项 普通 Playwright CloakBrowser
navigator.webdriver true undefined
navigator.plugins.length 0 或固定 模拟真实 Chrome
webdriver 标志 存在 完全移除
Canvas 指纹 固定哈希 随机化噪声
WebGL 渲染器 虚拟机标识 模拟真实 GPU
自动化标志 navigator 上可见 完全隐藏
浏览器版本 Headless 标识 与正式版一致

Canvas 指纹是反爬检测最常用的手段之一。CloakBrowser 的处理方式很有意思:在渲染时注入不可见的随机噪声,肉眼看到的图像完全一致,但每次渲染的 Canvas 哈希值都不同。

// 普通 Playwright:Canvas 指纹固定
canvas.toDataURL();
// 每次调用返回相同的哈希值 → 被识别为自动化

// CloakBrowser:随机噪声注入
canvas.toDataURL();
// 每次调用返回不同的哈希值 → 看起来像真实用户

2. 行为指纹伪装

不只是静态指纹,网站还会分析用户行为:

鼠标轨迹 真实用户的鼠标移动有加速、减速、转弯;自动化脚本的轨迹是匀速直线。CloakBrowser 在事件注入层添加了随机抖动,模拟真实鼠标物理特性:

# 注入前(可被检测)
page.mouse.move(100, 100)
page.mouse.move(200, 200)

# 注入后(不可被检测)
import time, random

def human_move(page, x, y):
    current_x, current_y = page.mouse.position()
    steps = random.randint(8, 15)
    for i in range(steps):
        # 贝塞尔曲线插值,而非直线
        t = i / steps
        # 添加随机偏移(模拟手抖)
        offset_x = random.gauss(0, 2)
        offset_y = random.gauss(0, 2)
        new_x = current_x + (x - current_x) * t + offset_x
        new_y = current_y + (y - current_y) * t + offset_y
        page.mouse.move(int(new_x), int(new_y))
        time.sleep(random.uniform(0.01, 0.03))

滚动行为 真实用户滚动有加速/减速,有停顿;自动化脚本往往是匀速滚动。CloakBrowser 模拟了"阅读式滚动":滚动 → 停顿 → 再滚动。

键盘输入节奏 真实用户打字有快有慢,有 backspace 删除。CloakBrowser 在 page.keyboard.type() 中注入了人类打字节奏:

async def human_type(page, text):
    for char in text:
        page.keyboard.type(char, delay=random.uniform(20, 80))
        if random.random() < 0.02:  # 2% 概率打错
            page.keyboard.press('Backspace')
            time.sleep(random.uniform(50, 150))
            page.keyboard.type(random.choice('qwertyuiop'), delay=random.uniform(20, 80))
            page.keyboard.press('Backspace')

3. TLS/Ja3 指纹

高级反爬还会分析 TLS 握手时的 JA3 指纹。不同版本的 Chrome/Chromium、不同的 SSL 库,JA3 指纹都不同。CloakBrowser 模拟了真实 Chrome 浏览器的 TLS 握手行为:

# CloakBrowser 的 TLS 配置
tls_config = {
    "ja3_hash": "真实Chrome的JA3哈希",  # 不是HeadlessShell的哈希
    "supported_ciphers": [
        "TLS_AES_128_GCM_SHA256",
        "TLS_AES_256_GCM_SHA384",
        "TLS_CHACHA20_POLY1305_SHA256"
    ],
    "extension_order": "chrome_extensions_order",  # Chrome 扩展顺序
    "http2_settings": "chrome_http2_settings"      # HTTP/2 设置
}

30 项检测测试:全部通过

项目自带一套完整的检测测试,覆盖了主流反爬服务商的核心检测手段:

A. Selenium/Playwright 基础检测(10项)

B. Cloudflare 专项检测(8项)

C. DataDome 专项检测(5项)

D. 通用行为分析(7项)

30/30 全部通过,这是目前市面上最硬核的反检测浏览器之一。


API 完全兼容 Playwright

这是 CloakBrowser 最友好的设计——只需要改一行 import

# 普通 Playwright 代码
from playwright.sync_api import sync_playwright

with sync_playwright() as p:
    browser = p.chromium.launch(headless=True)
    page = browser.new_page()
    page.goto("https://www.example.com")
    content = page.content()
    browser.close()

# CloakBrowser 代码(只改这一行)
from cloak_browser import CloakBrowser

with CloakBrowser() as browser:
    page = browser.new_page()
    page.goto("https://www.example.com")
    content = page.content()
    browser.close()

剩余代码完全不需要改动。


进阶用法

设置隐身强度

from cloak_browser import CloakBrowser, CloakLevel

# 平衡模式(默认):速度和隐蔽性平衡
browser = CloakBrowser(cloak_level=CloakLevel.BALANCED)

# 高度隐身:慢但更难被检测
browser = CloakBrowser(cloak_level=CloakLevel.MAXIMUM)

# 性能优先:快但检测风险略高
browser = CloakBrowser(cloak_level=CloakLevel.PERFORMANCE)

手动添加指纹噪声

browser = CloakBrowser()

# 添加自定义 Canvas 噪声强度
page = browser.new_page(
    canvas_noise=True,      # Canvas 指纹噪声
    webgl_noise=True,      # WebGL 指纹噪声
    mouse_noise=True,      # 鼠标轨迹噪声
    timezone="Asia/Shanghai",  # 指定时区
    viewport=(1920, 1080),     # 指定分辨率
    user_agent="Mozilla/5.0 (Windows NT 10.0; Win64; x64) ..."
)

竞品对比

对比项 CloakBrowser undetected-chromedriver Puppeteer-Stealth FingerprintJS
检测绕过 30/30 12/30 10/30 0(纯JS)
API 兼容性 Playwright 100% Selenium Puppeteer JavaScript
源码修改 ✅ Chromium源码 ✅ ChromeDriver
行为模拟 ✅ 完整
Cloudflare
学习曲线
维护活跃度 高(持续更新) 低(维护停滞)

适用场景

适合的场景

不适合的场景


常见坑点

1. 性能开销 隐身模式比普通浏览器慢 20-30%,因为每次操作都多了噪声注入、轨迹模拟等额外处理。不要用 CloakBrowser 做简单的高频请求,普通 Playwright 就够了。

2. 部分网站仍可能检测 CloakBrowser 通过了 30/30 测试,但不代表能绕过所有网站。一些超级严格的网站(如某些银行、交易所)会使用更高级的检测手段(如设备指纹、TLS 指纹历史、IP 行为分析)。建议先用普通模式试,确实被检测了再上 CloakBrowser。

3. 合法性问题 请确保使用场景符合目标网站的 robots.txt 和服务条款。在某些司法管辖区,大规模自动化数据采集可能涉及法律风险。


项目地址:https://github.com/CloakHQ/CloakBrowser 今日新增:496 stars | 总星数:5,411 技术栈:Python,Playwright 兼容 API 协议:MIT 维护团队:CloakHQ

/*]]>*/