开源的 selenium-stealth 替代方案
selenium-stealth 每月仍有数十万次下载,但它的最后一个版本发布于 2020 年。它用 JavaScript 覆盖少数几个值,还要你手动填写 GPU 和平台信息。Clearcote 在引擎内部生成完整的身份,各项值彼此一致,也与网络层一致。
selenium-stealth 是什么?
selenium-stealth 是一个小型 Python 包,为 Selenium + Chrome 重新实现了 puppeteer-extra-plugin-stealth 的部分功能。调用 stealth(driver, ...) 后,它会注入脚本,覆盖 navigator.webdriver、语言、厂商、平台以及 WebGL 厂商和渲染器。它采用 MIT 许可,至今仍很流行:PyPI 月下载量约 284,000 次。
它也已无人维护。PyPI 上的最后一个版本(1.0.6)发布于 2020 年 11 月,仓库自 2021 年底以来就没有变动。README 中的示例在当前的 Selenium 上已无法照原样运行,因为 Selenium 移除了 executable_path 参数;而且示例把 platform="Win32" 与 "Intel Iris OpenGL Engine" 这个 WebGL 渲染器搭配在一起,而这是 macOS 风格的字符串,Windows 上的 Chrome 并不会报告它。这正是手工拼凑身份画像的核心问题:每个值都是单独设置的,没有任何机制检查它们是否属于同一台机器。它也没有给 ChromeDriver 本身打补丁;那是 undetected-chromedriver 的用途。
Clearcote 与 selenium-stealth 对比
| 功能 | Clearcote | selenium-stealth |
|---|---|---|
| 实现方式 | 引擎层面的 C++ 补丁:原生值 | 由 Selenium 注入的 JavaScript 覆盖 |
| 身份画像一致性 | 由一个种子生成;GPU、平台和字体相互一致 | 手动填写,没有任何交叉校验 |
| 可被检测的痕迹 | 无:所有 realm 中都是原生值 | 可通过 toString 和 worker 重新读取发现覆盖 |
| ChromeDriver 残留特征 | 不使用 ChromeDriver:通过 CDP 驱动 | 原样保留 |
| TLS / 网络层一致性 | ClientHello 跟随所声明的 Chrome 版本 | 未处理 |
| 维护状态 | 活跃,紧跟当前 Chromium | 最后一次发布于 2020 年 11 月 |
| 框架 | Playwright 与 Puppeteer(Python、Node、.NET) | Selenium(Python) |
| 费用 | 开源版构建免费;最新构建凭 GitHub 免费使用;Pro $49/月 | 免费开源(MIT) |
对比整理于 2026年9月。selenium-stealth 的许可方式:开源(MIT);细节可能会变化,请以其项目的最新信息为准。
团队为什么选择 Clearcote
无需手动填写 GPU 字符串
selenium-stealth 需要你自己选定 WebGL 厂商和渲染器。Clearcote 从一个种子派生出 GPU、平台、字体和屏幕,它们描述的是一台可能真实存在的机器。
原生值
注入的覆盖可以通过检查函数被发现。Clearcote 在 Chromium 内部修改这些值,所以无论在页面还是 worker 中,都找不到覆盖。
针对当下的 Chrome 持续维护
检测手段随每个 Chrome 版本而变化。Clearcote 基于当前的 Chromium 发布;selenium-stealth 的规避脚本还停留在 2020 年。
网络层同样一致
声称是某个 Chrome 版本的浏览器,就应该发出该版本的 TLS 握手。Clearcote 让两者保持同步。
什么情况下 selenium-stealth 可能更合适
- 你在维护一个已经用了它的旧 Selenium 脚本,只需要在检测宽松的网站上隐藏
navigator.webdriver。 - 你无法更换框架。如果要继续使用 Selenium,可以看看积极维护中的 SeleniumBase。
常见问题
selenium-stealth 还在维护吗?
没有。PyPI 上的最后一个版本是 2020 年 11 月发布的 1.0.6,GitHub 仓库自 2021 年 12 月以来就没有更新。它仍然可以安装,但其规避脚本既没跟上 Chrome,也没跟上检测手段。
不用 selenium-stealth 的话,该用什么?
如果你想继续使用 Selenium,SeleniumBase 的 UC 模式或 CDP 模式是有人维护的选择。如果你可以切换到 Playwright 或 Puppeteer,Clearcote 会在浏览器引擎中修改指纹,而不是用 JavaScript 去覆盖。
为什么 WebGL 厂商和渲染器的值很重要?
它们是被检查得最多的指纹值之一,而且必须与平台、字体以及 GPU 的实际渲染结果相吻合。例如,Windows 平台配上 macOS 的渲染器字符串,描述的就是一台根本不存在的机器。
相关阅读
试试这款开源 Chromium 替代方案
免费开源,可直接接入 Playwright 与 Puppeteer,一直到 TLS 握手都保持一致。
通过 GitHub 可免费使用一个浏览器。无需信用卡。