オープンソースの selenium-stealth 代替
selenium-stealth は今も月に数十万回ダウンロードされていますが、最終リリースは 2020 年です。いくつかの値を JavaScript で上書きし、GPU やプラットフォームは手入力させる方式です。Clearcote はアイデンティティ全体をエンジン内で生成するので、値どうしが食い違わず、ネットワークとも一致します。
selenium-stealth とは?
selenium-stealth は、puppeteer-extra-plugin-stealth の一部を Selenium + Chrome 向けに再実装した小さな Python パッケージです。stealth(driver, ...) を呼ぶと、navigator.webdriver、言語、ベンダー、プラットフォーム、WebGL のベンダーとレンダラーを上書きするスクリプトが注入されます。MIT ライセンスで今も人気があり、PyPI の月間ダウンロード数は約 284,000 です。
また、メンテナンスもされていません。PyPI の最終リリース(1.0.6)は 2020 年 11 月で、リポジトリも 2021 年末から変更がありません。README のサンプルは、executable_path 引数が削除された現行の Selenium では書かれたとおりには動きません。しかも platform="Win32" に "Intel Iris OpenGL Engine" という WebGL レンダラーを組み合わせていますが、これは Windows の Chrome が報告することのない macOS 風の文字列です。これこそ、手作業で組み立てたペルソナの根本的な問題です。各値が個別に設定され、それらが同じマシンのものかを確かめる仕組みがありません。また、ChromeDriver 自体にはパッチを当てません。それを担うのが undetected-chromedriver です。
Clearcote vs selenium-stealth
| 機能 | Clearcote | selenium-stealth |
|---|---|---|
| アプローチ | エンジンレベルの C++ パッチ:ネイティブな値 | Selenium から注入する JavaScript の上書き |
| ペルソナの整合性 | 1 つのシードから生成、GPU・プラットフォーム・フォントが一致 | 手入力、整合性を確かめる仕組みなし |
| 検知されうる継ぎ目 | なし:すべてのレルムでネイティブ | toString やワーカーでの再読み取りで上書きが露見 |
| 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、プラットフォーム、フォント、画面を 1 つのシードから導出するので、実在しうるマシンの姿になります。
ネイティブな値
注入された上書きは、関数を調べれば検知できます。Clearcote は Chromium の内部で値を変えるので、ページでもワーカーでも、見つけられる上書きがありません。
今の Chrome に合わせてメンテナンス
検知は Chrome のリリースごとに変わっていきます。Clearcote は現行の Chromium で提供されていますが、selenium-stealth の検知対策は 2020 年のものです。
ネットワーク層も
Chrome のあるバージョンを名乗るブラウザは、そのバージョンの TLS ハンドシェイクを送るべきです。Clearcote は両者を一致させます。
selenium-stealth のほうが向いている場合
- すでに selenium-stealth を使っている古い Selenium スクリプトを保守していて、判定の緩いサイトで
navigator.webdriverを隠せれば十分な場合。 - フレームワークを変えられない場合。Selenium を使い続けるなら、活発にメンテナンスされている SeleniumBase を検討してください。
よくある質問
selenium-stealth は今もメンテナンスされていますか?
いいえ。PyPI の最終リリースは 2020 年 11 月の 1.0.6 で、GitHub リポジトリも 2021 年 12 月から更新されていません。今もインストールはできますが、検知対策は Chrome にも検知側にも追いついていません。
selenium-stealth の代わりに何を使えばよいですか?
Selenium を使い続けたいなら、メンテナンスされている選択肢は SeleniumBase の UC Mode か CDP Mode です。Playwright や Puppeteer に移行できるなら、Clearcote は JavaScript で上書きするのではなく、ブラウザエンジン内でフィンガープリントを変更します。
WebGL のベンダーとレンダラーの値はなぜ重要なのですか?
最もよくチェックされるフィンガープリントの値の一つで、プラットフォーム、フォント、そして GPU が実際にどう描画するかと一致している必要があります。たとえば Windows のプラットフォームに macOS のレンダラー文字列という組み合わせは、実在しないマシンを示すことになります。
関連記事
オープンソースの Chromium 代替を試す
無料のオープンソース。Playwright & Puppeteer にそのまま組み込め、TLS ハンドシェイクまで整合性を保ちます。
GitHub があればブラウザ 1 つまで無料。カード登録は不要です。