开源的 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 月下载量约 500,000 次。
它也已无人维护。PyPI 上的最后一个版本(1.0.6)发布于 2020 年 11 月,此后仓库再没有任何提交。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 中都是原生值 | 页面脚本中的覆盖,在 worker 中不生效 |
| ChromeDriver 残留特征 | 不使用 ChromeDriver:通过 CDP 驱动 | 原样保留 |
| TLS / 网络层一致性 | ClientHello 跟随所声明的 Chrome 版本 | 未处理 |
| 维护状态 | 活跃,跟进每个 Chromium 主版本 | 最后一次发布于 2020 年 11 月 |
| 框架 | Playwright 与 Puppeteer(Python、Node、.NET) | Selenium(Python) |
| 费用 | 开源版构建免费;最新构建凭 GitHub 免费使用;Pro $49/月 | 免费开源(MIT) |
对比整理于 2026年11月。selenium-stealth 的许可方式:开源(MIT);细节可能会变化,请以其项目的最新信息为准。
实测:12 款工具,同样的 10 个网站
我们运行了开源的 browsers-benchmark 测试框架共 5 次,最后一次于 2026年10月27日 完成。每个工具都使用独立的美国住宅 IP,且每次运行的顺序都不同。“通过”表示该框架针对该网站的自带检查找到了页面本身,而不是拦截页或验证页。 Clearcote 在 Windows 台式机上测量(最新构建);其他工具在 Linux 服务器上测量。
selenium-stealth 不在此次基准测试中:该测试框架没有它的驱动。表格列出的是框架支持的工具。
| 工具 | 有头 | 无头 |
|---|---|---|
| Clearcote0.63.2 · r52 | 78%39/50 | 80%40/50 |
| Camoufox0.5.8 · v156.0.1-beta.36 | 72%36/50 | 80%40/50 |
| Invisible Playwright0.43.0 · Firefox | 76%38/50 | 78%39/50 |
| CloakBrowser0.6.4 | 74%37/50 | 64%32/50 |
| SeleniumBase (CDP mode)4.49.0 · Chrome | 74%37/50 | — |
| nodriver0.50.6 · Chrome | 74%37/50 | 40%20/50 |
| Zendriver0.17.1 · Chrome | 64%32/50 | 60%30/50 |
| tf-playwright-stealth (Firefox)1.2.0 | 58%29/50 | 62%31/50 |
| tf-playwright-stealth (Chromium)1.2.0 | 56%28/50 | 50%25/50 |
| Playwright (Chromium)1.62.0 | 56%28/50 | 30%15/50 |
| Playwright (Firefox)1.62.0 | 54%27/50 | 54%27/50 |
| Patchright1.64.3 · Chrome | 24%12/50 | 26%13/50 |
网站:搜索结果页, 社区论坛, 软件公司网站, 奢侈品零售商, 电商平台商品页, 票务网站, 时装零售商, 旅行预订网站, 航空公司, 社交网络。 这只是一个网络环境、一周时间内的快照:结果会随每次发布、每个代理以及网站本身而变化,而且没有任何工具每次都能加载每个网站。原始结果(JSON)。
团队为什么选择 Clearcote
无需手动填写 GPU 字符串
selenium-stealth 需要你自己选定 WebGL 厂商和渲染器,否则就退回到固定的 Intel 默认值。Clearcote 从一个种子派生出 GPU、平台、字体和屏幕,它们描述的是一台可能真实存在的机器。
原生值
注入的覆盖必须设法躲过对函数的检查,而且在 Web Worker 中不会生效。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 仓库再没有任何提交。它仍然可以安装,但其规避脚本既没跟上 Chrome,也没跟上检测手段。
不用 selenium-stealth 的话,该用什么?
如果你想继续使用 Selenium,SeleniumBase 的 UC 模式或 CDP 模式是有人维护的选择。如果你可以切换到 Playwright 或 Puppeteer,Clearcote 会在浏览器引擎中修改指纹,而不是用 JavaScript 去覆盖。
为什么 WebGL 厂商和渲染器的值很重要?
它们是被检查得最多的指纹值之一,而且必须与平台、字体以及 GPU 的实际渲染结果相吻合。例如,Windows 平台配上 macOS 的渲染器字符串,描述的就是一台根本不存在的机器。
如何用 Selenium 抓取网站?
用 driver.get() 加载页面,用 WebDriverWait 等待内容出现,再用 CSS 选择器读取。Selenium 网页抓取指南提供了完整的 Python 示例,涵盖分页、保存为 CSV,以及 Selenium 爬虫为什么会被拦截。
补丁数是我们比较过的任何分支的两倍以上。
按方案统计编译进 Chromium 的补丁。基于脚本的工具完全不改动引擎。
隐身插件
例如 puppeteer-extra-plugin-stealth
打过补丁的驱动
例如 undetected-chromedriver、nodriver
其他 Chromium 分支
免费版与付费版构建
Clearcote Pro
r57,Chromium 156
公开的补丁数,截至 2026年10月。区间涵盖其他分支的免费版与付费版构建;Clearcote 的数字来自 Pro 版构建。
相关阅读
试试这款开源 Chromium 替代方案
免费开源,可直接接入 Playwright 与 Puppeteer,一直到 TLS 握手都保持一致。
一个浏览器免费:GitHub、银行卡验证或公司 Google 账号。绝不扣款。