オープンソースの Patchright 代替
Patchright は、パッチ済み Playwright の中で最もよくメンテナンスされているもので、ドライバーからの自動化のリークを取り除くドロップイン置き換えです。ブラウザ自体は変えないため、サイトが読み取るフィンガープリントは手元のマシンのままです。Clearcote はその 1 つ下のレイヤー、つまりエンジンで動作し、両者は組み合わせて使えます。
Patchright とは?
Patchright(Vinyzu と Kaliiiiiiiiii による)は、Python・Node.js・.NET 向け Playwright のパッチ済みビルドです。ライセンスは Apache-2.0 で、Playwright のリリースに密接に追従しており(執筆時点で upstream と同じ 1.63)、PyPI で月間約 3.5M、npm で週約 285,000 ダウンロードと広く使われています。対応するのは Chromium ベースのブラウザのみです。
パッチの対象は自動化ドライバーです。分離された実行コンテキストでコードを実行することで Runtime.enable のリークを防ぎ、Console API を無効化し(そのため console イベントは使えません)、--enable-automation を外して --disable-blink-features=AutomationControlled を追加します。closed な shadow root の中にもアクセスできます。初期化スクリプトはリクエストのルーティング経由で渡されますが、これはタイミングから検知されうると README に注記されています。
Patchright があえて手を付けないのがブラウザです。本物の Chrome を使うよう推奨しており、起動した Chrome は実際のハードウェア、GPU、フォント、画面をそのまま報告します。デスクトップならそれが理想的な場合もあります。しかしサーバーや Docker では、実際の値は VM のもの、つまりソフトウェア GPU、Linux のフォントセット、ヘッドレスの画面になります。さらに、そのマシン上のすべてのセッションが 1 つのアイデンティティを共有します。
Clearcote vs Patchright
| 機能 | Clearcote | Patchright |
|---|---|---|
| 対象レイヤー | ブラウザエンジン(C++ / Blink) | Playwright ドライバー |
| ドライバー / CDP のリーク | エンジンが Runtime.enable を無害化、起動時に isolated world を使用 | パッチ済みドライバーが Runtime.enable を使わない、Console API は無効 |
| フィンガープリントのアイデンティティ | シードから生成する整合性のあるペルソナ(Canvas、WebGL、フォント、navigator、画面) | ホストの実際の値 |
| マシンあたりのアイデンティティ数 | シードごとに 1 つ、必要なだけ | 1 つ:マシンそのもの |
| サーバーや Docker 上 | ペルソナが VM のソフトウェア GPU とフォントを隠す | VM の実際のハードウェアを報告 |
| TLS / ネットワーク | ClientHello がペルソナの Chrome バージョンに従う | 起動した Chrome が送るまま |
| Playwright リリースへの追従 | どのバージョンの素の Playwright でも動作 | Playwright のリリースごとにパッチ済みビルド |
| 言語 | Python、Node、.NET | Python、Node、.NET |
| 料金 | オープンビルドは無料、最新ビルドは GitHub で無料、Pro は月額 $49 | 無料・オープン(Apache-2.0) |
比較は 2026年9月 時点のものです。Patchright のライセンス:オープンソース(Apache-2.0)。内容は変わることがあるため、最新情報は各プロジェクトでご確認ください。
Clearcote が選ばれる理由
競合ではなく、別のレイヤー
検知が見る場所は 3 つあります。ドライバー、CDP セッション、そしてフィンガープリントです。Patchright が扱うのは最初の 2 つです。Clearcote はフィンガープリントをエンジン内で扱い、起動時のデフォルト設定で CDP 側にも対処します。
選べるアイデンティティ
素の Chrome 上で Patchright を使う場合、フィンガープリントは実行しているマシンそのものです。Clearcote はシードごとに一貫したマシンを割り当てます。これが最も効いてくるのは、実機が VM に見えてしまうサーバー上です。
ドライバーの追従が不要
Clearcote は公式の Playwright / Puppeteer パッケージで動くので、パッチ済みビルドを待たずに、それぞれのリリーススケジュールでアップグレードできます。
TLS まで整合
ペルソナが名乗る Chrome のバージョンが TLS ClientHello まで反映されるので、ネットワーク層と JavaScript の内容が一致します。
Patchright のほうが向いている場合
- 実機のデスクトップで本物の Chrome と普通のプロファイルを使っていて、消す必要がある痕跡がドライバー由来のものだけの場合。
- Playwright をそのまま置き換えられて、ほかに何もインストールしなくて済むものが欲しい場合。
- あるいは両方使う手もあります。Patchright は任意の Chromium バイナリを受け付けるので、
executable_path=clearcote.download()で Clearcote を下に敷けば、ドライバーのパッチはそのまま活かせます。
よくある質問
Patchright と Clearcote、必要なのはどちらですか?
両者が解決するのは別々のレイヤーです。Patchright は Playwright ドライバーにパッチを当て、自動化セッションを見えにくくします。Clearcote はブラウザにパッチを当て、フィンガープリント(Canvas、WebGL、フォント、navigator、TLS)をホストのものではなく、整合性のあるペルソナにします。フィンガープリントが問題なら、Patchright だけではそれは変わりません。
Patchright と Clearcote は併用できますか?
はい。Patchright は任意の Chromium バイナリを起動できます。SDK の download() で Clearcote のパスを取得し、--fingerprint 引数と一緒に executable_path として渡してください。
Patchright はブラウザフィンガープリントを変えますか?
いいえ。変更するのは起動フラグと、ドライバーがブラウザとやり取りする方法です。Canvas、WebGL、フォント、画面、ハードウェアは、実行している Chrome と、それが動くマシンに由来します。
Patchright で console.log が動かないのはなぜですか?
Patchright は、CDP の Runtime ドメインと Console ドメインが持つ、検知につながる副作用を避けるために Console API を無効化しています。コンソール出力が必要なら JavaScript のロガーを使うよう、README で勧めています。
関連記事
オープンソースの Chromium 代替を試す
無料のオープンソース。Playwright & Puppeteer にそのまま組み込め、TLS ハンドシェイクまで整合性を保ちます。
GitHub があればブラウザ 1 つまで無料。カード登録は不要です。