超越隐身插件:使用 Clark-Browser 实现真正的浏览器匿名

对于构建浏览器自动化代理的开发者来说,机器人检测的‘猫捉老鼠’游戏变得日益复杂。虽然 Puppeteer 和 Playwright 等工具是行业标准,但它们的默认无头模式对现代安全服务来说极易被检测。大多数开发者依赖 JavaScript 级别的‘隐身’插件来掩盖这些信号,但随着检测引擎的演进,这些垫片正变得和它们试图隐藏的机器人一样容易被发现。

于是出现了 Clark-Browser,它是 ungoogled-chromium 的开源分支,旨在将战场从 JavaScript 层转移到 C++ 源码层。通过直接修补浏览器二进制,Clark-Browser 旨在让自动化实例与真实用户安装的浏览器无差别。

JS 级别隐身的失败

要理解为何需要 Clark-Browser,必须了解机器人检测的工作原理。标准的 chromium --headless 会留下明显的信号痕迹:

  • navigator.webdriver 被设置为 true
  • 插件列表为空。
  • User-Agent 明确包含 HeadlessChrome
  • WebGL 字符串显示软件渲染器而非真实 GPU。

许多开发者使用 puppeteer-extra-plugin-stealthplaywright-stealth 等库。这些工具通过注入 JavaScript 来覆盖这些属性。然而,先进的检测套件——如 FingerprintJS、BrowserScan 和 Cloudflare Turnstile——常常能够检测到隐身插件本身的存在。当网站发现属性是通过 JS 代理或 getter 覆盖修改时,会触发高风险标记。

C++ 方法:修补源码

Clark-Browser 采用了根本不同的方法。它不是在浏览器启动后尝试隐藏痕迹,而是在二进制编译之前修改 blinkv8net 中的源代码。

通过在 C++ 层实现防指纹技术,返回给 JavaScript 环境的值不再是传统意义上的“伪造”——它们是浏览器引擎认为真实的值。这消除了 JS 级别垫片产生的不一致,使浏览器在整个 JS 可见的指纹表面上看起来像原生 Chrome 安装。

隐身表面

Clark-Browser 引入了一系列 --fingerprint-* 命令行开关,允许开发者为浏览器实例定义确定性的身份。这使得可以精确控制以下方面:

  • 硬件配置文件: 伪装 GPU 厂商、渲染器、设备内存和硬件并发数。
  • 环境数据: 设置 IANA 时区、BCP 47 语言区域以及地理位置坐标。
  • 网络身份: 伪装 WebRTC IP 地址以防泄漏。
  • 视觉噪声: 实现 canvas 和音频噪声以防止确定性指纹(继承自 Brave 的基础设施)。

性能与验证

根据项目文档,已发布的二进制已经通过了多个关键测试。它成功绕过了 SannySoft WebDriver 测试和 Antoine Vastel 的无头测试(前提是使用了正确的 Accept-Language 头)。它还通过了 BrowserLeaks 客户端提示和 WebGL 测试,避免了无头环境常见的 SwiftShaderllvmpipe 标记。

然而,社区仍保持谨慎。正如 Hacker News 讨论中的用户所指出的,现代检测——尤其是来自 Cloudflare 的——已经超越了简单的属性检查。

"他们不再仅仅查看 navigator 属性,而是对 canvas 操作进行计时,并检查渲染管线中的不一致性。"

虽然 Clark-Browser 解决了静态指纹问题,但动态行为(计时攻击和渲染管线分析)仍是机器人检测战争的前沿。

入门指南

Clark-Browser 使用 MIT 许可证,并提供了一个 Python 包装器,以便在 Playwright 中轻松使用:

from clarkbrowser import launch

browser = launch()
page = browser.new_page()
page.goto("https://bot.sannysoft.com")
print(page.title())
browser.close()

对于需要最大透明度或自定义配置的用户,项目提供了 Linux 和 macOS 的完整构建脚本,尽管构建过程资源密集,需要约 80 GB 磁盘空间和 32+ GB 内存。

结论

Clark-Browser 标志着向更专业级别的浏览器自动化转变。通过将防检测逻辑移入二进制,它为需要在高度受限环境中运行的代理提供了更坚实的基础。虽然没有工具能保证在最先进的 AI 驱动检测系统面前实现 100% 隐身,但源码修补客观上比 DOM 修补更为有效。

Sources