Chrome 拡張機能を、Manifest V2 も含めて
展開済みの拡張機能フォルダのリストを渡せば、Clearcote が起動時に読み込みます。Manifest V3 はもちろん、標準の Chrome ではすでに無効化された Manifest V2 も動作するため、MV2 のコンテンツブロッカーや古い社内ツールもそのまま使い続けられます。ヘッドレスでも動きます。
すべてのプランで、Windows と Linux に対応。
フォルダのリスト
from clearcote import launch_persistent_context
ctx = launch_persistent_context(
"./profile",
extensions=["./ext/ublock", "./ext/my-helper"], # unpacked directories, MV2 or MV3
headless=True, # works headed too
)
page = ctx.pages[0] if ctx.pages else ctx.new_page()
page.goto("https://example.com")主なポイント
Manifest V2 がまだ動く
アップストリームのプライバシーパッチセットが MV2 のサポートを復活させているため、Chrome では動かなくなった MV2 専用のブロッカーや古いツールも、ここでは引き続き動作します。
ヘッドレスでもヘッドありでも
拡張機能はヘッドありだけでなく、ヘッドレスモードでも読み込まれます。拡張機能を動かすためだけに仮想ディスプレイを用意する必要はありません。
フラグの組み合わせは対応済み
自動化の下では --load-extension 単体は無視されます。SDK はこれを --disable-extensions-except と組み合わせて指定するので、拡張機能が実際に表示されます。
.crx ではなくフォルダ
manifest.json を含むフォルダを指定します。.crx は展開すればそのフォルダになります。
Windows と Linux
どちらのプラットフォームでも、ヘッドありでもヘッドレスでも同じオプションです。
持ち込むコードは、自分の露出面
Clearcote は拡張機能を隠しません。ページから探られる可能性があるため、web_accessible_resources を持たない拡張機能を選ぶのがおすすめです。
拡張機能の読み込みの仕組み
拡張機能には、置き場所となるプロファイルが必要です。launch() は使い捨てのプロファイルで動くので拡張機能を読み込めますし、launch_persistent_context / launchPersistentContext や serve()(.NET では Extensions)も同様です。読み込めないのはシークレットモードでの起動だけです(ephemeral_profile=False、非同期 API の launch()、.NET の LaunchAsync)。ホスト型ブラウザは拡張機能を読み込みません。
Clearcote は Chrome ウェブストアから拡張機能をインストール・更新できません。アップストリームのプライバシーパッチがその連携を取り除いているため、この方法で読み込んだ拡張機能が自動で更新されることはありません。代わりに、展開済みのディレクトリを自動化コードと一緒に配布してください。Playwright や Puppeteer と同じやり方です。
拡張機能は外から観測できます。DOM を書き換えたり、スタイルを注入したり、リクエストをブロックしたりするコンテンツスクリプトは、ページが計測する値を変えてしまいます。また、宣言された web-accessible resources はどのページからも取得できます。リクエストのブロックだけが目的なら、自動化レイヤーで CDP の Network.setBlockedURLs を使えば、拡張機能という露出面なしに URL パターンでブロックでき、キャッシュも維持されます(Playwright の route() でも可能ですが、キャッシュが無効になります)。
主な用途
コンテンツブロック
Chrome ではもう読み込めなくなったブロッカーの MV2 版を動かせます。
自作の拡張機能のテスト
拡張機能の E2E テストを、CI 上でヘッドレスに実行。
社内ツール
ログイン補助、アノテーション、QA 用の社内拡張機能を、自動化セッションの中で。
Clearcote は、プライバシー保護、テスト、研究、合法的な自動化のために作られています。どう使うか、そしてアクセスするサイトの規約を守ることは、利用者ご自身の責任です。
対象プラン
すべてのプランで、Windows と Linux、ヘッドありとヘッドレスの両方に対応しています。
プランを比較よくある質問
Playwright でヘッドレスモードのまま Chrome 拡張機能を読み込めますか?
Clearcote なら可能です。展開済みのフォルダを extensions として launch() または永続コンテキストに渡せば、追加のフラグなしで、ヘッドありでもヘッドレスでも読み込まれます。
Manifest V2 はまだ使えますか?
はい。標準の Chrome では MV2 の無効化が完了していますが、Clearcote のベースであるアップストリームのプライバシーパッチセットが MV2 を復活させているため、MV2 と MV3 のどちらの拡張機能も動作します。
Chrome ウェブストアから拡張機能をインストールできますか?
いいえ。ウェブストアとの連携は、ほかの Google サービスとともに取り除かれています。拡張機能をダウンロードまたはビルドし、.crx なら展開してから、そのフォルダを渡してください。
拡張機能が表示されないのはなぜですか?
たいていはパスの問題です。指定するのは manifest.json を含むフォルダそのもので、その親フォルダや .crx ではありません。コンテンツスクリプトがまったく実行されない場合は、matches パターンが対象の URL をカバーしているか確認してください。http://localhost/* は http://127.0.0.1:8080/ にマッチしません。
拡張機能がインストールされていることは、サイトから分かりますか?
場合によっては分かります。ページはコンテンツスクリプトによる DOM の変更に気づけますし、拡張機能が宣言した web-accessible resources の取得を試みることもできます。これは拡張機能を入れたどのブラウザにも当てはまることで、Clearcote はそれを隠しません。
ドキュメントで詳しく
関連する機能
Playwright と Puppeteer にそのまま差し替えられる Chromium。Python、Node、.NET で import を 1 行変えるだけで、ブラウザのダウンロードと SHA-256 の検証は SDK が行います。
オプトインすれば、Clearcote が標準の Chrome と同じ方法で Google の Widevine CDM を取得し、検証して有効化するので、DRM 動画を再生できます。
公式 Docker イメージ、serve()、CLI のいずれかで Clearcote を常駐の CDP エンドポイントとして動かし、どのフレームワークでもコードを変えずに接続できます。
canvas、WebGL、WebGPU、オーディオ、フォント、画面、ハードウェアを C++ のエンジン内で 1 つのシードから導出し、ロケールとタイムゾーンもそれに合わせます。すべての項目が互いに整合します。
関連記事
Clearcote を試す
Playwright & Puppeteer にそのまま組み込め、TLS ハンドシェイクまで整合性を保ちます。まずはオープンソースのビルドから始められます。
GitHub があればブラウザ 1 つまで無料。カード登録は不要です。