本文へスキップ

オープンソースの puppeteer-extra-plugin-stealth 代替

stealth プラグインは、Puppeteer に検知対策を後付けする方法として今も最も多くインストールされており、週に約 840,000 ダウンロードありますが、2023 年 3 月以降リリースがありません。検知対策はどれも素の Chrome に当てる JavaScript のパッチで、JavaScript のパッチは自らの存在を露呈します。Clearcote はそれらの値をエンジン内でネイティブに設定します。

puppeteer-extra-plugin-stealth とは?

puppeteer-extra-plugin-stealth(berstend 作)は、ページのスクリプトが走る前に page.evaluateOnNewDocument で注入される、JavaScript の検知対策モジュールの集まりです。各モジュールが痕跡を 1 つずつパッチします。navigator.webdriver、プラグイン、chrome.runtime、WebGL ベンダー、iframe、コーデックなどです。MIT ライセンスで、npm で週約 840,000 ダウンロードと非常に人気があり、そのアプローチは playwright-stealth や selenium-stealth にも移植されました。

また、実質的にメンテナンスされていません。npm の最終リリース(2.11.2)は 2023 年 3 月で、リポジトリも 2024 年半ばから変更がありません。構造的な限界はそれ以前からのものです。これらは素のエンジンに対する JavaScript の上書きであり、上書きは Function.prototype.toString、書き換えられたプロパティディスクリプタ、そしてパッチが存在しない Web Worker やクロスオリジン iframe からの再読み取りによって露見します。ネイティブの値は変えず、TLS や HTTP/2 には手を付けず、CDP の Runtime.enable リークにも対処していません。README 自身も、ヘッドレス Chromium を検知するあらゆる方法を防ぐのはおそらく不可能だと認めています。

Clearcote vs puppeteer-extra-plugin-stealth

機能Clearcotepuppeteer-extra-plugin-stealth
アプローチ エンジンレベルの C++ パッチ:ネイティブな値 ドキュメントごとに注入する JavaScript の検知対策
検知されうる継ぎ目 なし:すべてのレルム(ページ、ワーカー、iframe)でネイティブ toString、ディスクリプタ、ワーカーや iframe での再読み取りで露見
TLS / ネットワークの整合性 名乗る Chrome に一致(JA3/JA4 + HTTP/2) 未対応
フレームワーク Playwright と Puppeteer(Python、Node、.NET) Puppeteer(Node)、Playwright では playwright-extra
メンテナンス状況 活発 最終リリースは 2023 年 3 月
ライセンス オープンビルドは BSD-3 MIT
料金 オープンビルドは無料、最新ビルドは GitHub で無料 無料・オープン

比較は 2026年9月 時点のものです。puppeteer-extra-plugin-stealth のライセンス:オープンソース(MIT)。内容は変わることがあるため、最新情報は各プロジェクトでご確認ください。

Clearcote が選ばれる理由

上書きではなく、ネイティブ

stealth プラグインの検知対策は、どれも検知側に見破られうる JavaScript の上書きです。Clearcote は値をエンジン内で設定するので、ネイティブの値として読み取られ、見つけられる上書きもありません。

レルムをまたいで整合

ページに当てた JavaScript のパッチは、Web Worker やクロスオリジンの iframe では食い違います。エンジンレベルの値はどこでも一致するので、この種の痕跡をふさげます。

ネットワーク層

プラグインは TLS や HTTP/2 に手を出せません。Clearcote のハンドシェイクは名乗っている Chrome のバージョンに従うので、通信内容と JavaScript が一致します。

メンテナンスと検証を継続

Clearcote はリリースごとに公開テストで確認しています。プラグインの検知対策は 2023 年初頭のもので、その後 Chrome は何十ものバージョンを重ねています。

puppeteer-extra-plugin-stealth のほうが向いている場合

  • すでに Puppeteer を使っていて、判定の緩い対象サイト向けに 1 行で導入できる検知対策バンドルが欲しい場合。
  • 既存の Node スクレイパーにそのまま組み込める、MIT ライセンスのものが必要な場合。
  • 公開テストページや古い検知に対しては手軽で、それで足りることもあります。

よくある質問

puppeteer-extra-plugin-stealth は今もメンテナンスされていますか?

活発にはメンテナンスされていません。npm の最終リリース 2.11.2 は 2023 年 3 月の公開で、リポジトリも 2024 年 7 月から更新がありません。今もインストールでき、広く使われていますが、検知対策は Chrome の変化に追いついていません。

JavaScript のステルスパッチが検知されるのはなぜですか?

本物の関数を上書きしているからです。検知側は関数を文字列化したり(ネイティブ関数なら [native code] と表示され、上書きした関数は自身のソースが見えます)、プロパティディスクリプタを調べたり、パッチが適用されていない新しい iframe や Web Worker から値を読み直したりできます。エンジンレベルの変更なら、どこでも値がネイティブになるので、この問題は起きません。

Clearcote は stealth プラグインとどう違うのですか?

プラグインは素の Chrome に JavaScript の検知対策を注入します。Clearcote は改造 Chromium で、値はエンジン内でネイティブ、ワーカーや iframe をまたいでも整合し、さらにプラグインでは手の届かない TLS/HTTP-2 のペルソナも備えています。

Playwright 版はありますか?

はい。Node では playwright-extra で同じプラグインを読み込めますし、playwright-stealth はそれを Python に移植したものです。どちらも同じく JavaScript で上書きする設計です。

関連記事

Q&AWhy does Function.toString() reveal a hooked function?Calling toString() on a native function returns “[native code]”; an override returns its own source instead — so detectors stringify APIs to catch JavaScript spoofs.比較Clearcote vs playwright-stealthplaywright-stealth は、Python の Playwright にステルス機能を加える最も手軽な方法です。ラッパーを 1 つかませるだけで、すべてのページに一連の JavaScript の検知対策が入ります。ただしその検知対策は素のブラウザに対する上書きで、メンテナー自身も概念実証(PoC)だと位置づけています。Clearcote はそれらの値をエンジン内でネイティブに設定するので、ページが見つけられる上書きがそもそもありません。リサーチCoherence over camouflage: why a plausible identity beats a hidden oneMost stealth tooling tries to hide. The signals that survive scrutiny don't hide — they agree with each other.比較Clearcote vs CamoufoxCamoufox は Firefox ベースの、よくできたオープンソースのアンチディテクトブラウザです。Clearcote は同じエンジンレベルのアプローチを Chromium で実現しているため、自動化で見せるブラウザが、利用者約 3% のものではなく、Web の約 69% が実際に使っているものになります。比較Clearcote vs CloakBrowserCloakBrowser は多くのユーザーを抱える、実力のあるエンジンレベルのステルス Chromium ですが、パッチ済みのバイナリはクローズドソースです。Clearcote も同じくエンジンレベルで、より新しい Chromium を使い、すべてのパッチを読んで再ビルドできるオープンビルドを提供しています。比較Clearcote vs undetected-chromedriverundetected-chromedriver は今も月間ダウンロード数が約 2M ありますが、最終リリースは 2024 年 2 月です。素の Chrome 上で Selenium/ChromeDriver の継ぎ目を隠すもので、フィンガープリントやネットワーク層には一切手を付けません。Clearcote はその両方をエンジン内で変えます。

オープンソースの Chromium 代替を試す

無料のオープンソース。Playwright & Puppeteer にそのまま組み込め、TLS ハンドシェイクまで整合性を保ちます。

GitHub があればブラウザ 1 つまで無料。カード登録は不要です。