本文へスキップ
Docker · serve() · CDP

アンチディテクトブラウザを、docker run ひとつで

公式イメージを pull すれば、CDP ポートで待ち受ける Clearcote ブラウザが手に入ります。Playwright、Puppeteer、browser-use、Crawl4AI、Stagehand の接続先をそこに向ければ、コードを変更する必要はありません。イメージは自動化用のスイッチなしでバイナリを直接起動するため、navigator.webdriver は false のままです。

キーがなければ、イメージはオープンビルドで動きます。最新ビルドを使うには、GitHub で取得できる無料キーを追加してください。

起動して、接続する

# CDP on http://localhost:9222, published to this host only
docker run -d --rm -p 127.0.0.1:9222:9222 --shm-size=1g teamflatearth/clearcote

主なポイント

検証済みバイナリを同梱

イメージには、SHA-256 で検証済みの Linux 版オープンビルドと、主要な Windows フォントのメトリクス互換クローンが入っているため、ラテン文字のテキストはペルソナのフォントと同じ寸法で計測されます。オープンビルドのフォントバンドルには CJK フォントが含まれませんが、ライセンスビルドのものには含まれます。

環境変数で設定

シード、プラットフォーム、ブランド、言語、タイムゾーン、TLS プロファイルは CC_* 環境変数で指定します。コンテナ内に保守すべきコードはありません。

最新ビルドをオンデマンドで

CLEARCOTE_LICENSE_KEY を設定すると、コンテナは最新のライセンスビルドを取得します。Pro なら CC_VERSION で固定したビルドも使えます。

serve() と CLI

Docker を使わない場合も、Python・Node・.NET の serve() や、シェルからの clearcote serve で同じように直接起動でき、CDP URL が得られます。

どの CDP クライアントでも

Playwright の connectOverCDP、puppeteer.connect、browser-use、Crawl4AI、Stagehand、あるいはポートに対して DevTools Protocol を直接使うこともできます。

監査できる Dockerfile

Dockerfile とエントリポイントは公開リポジトリにあるので、イメージが何をインストールして何を実行するかを正確に確認でき、自分でビルドすることもできます。これが当てはまるのはイメージと、そこに同梱されたオープンビルドまでです。ライセンスキーを使う場合、コンテナは起動時にライセンス版のエンジンをダウンロードします。

コンテナの構成

コンテナはテストドライバーを介さずに Clearcote を直接起動し、Chrome DevTools Protocol をポート 9222 で公開します。直接起動こそが肝心です。自動化フレームワークは自らの存在を明かす起動スイッチを追加しますが、イメージが起動する常駐エンドポイントはそれらを一切渡しません。

デフォルトのペルソナは整合性のあるネイティブ Linux のアイデンティティで、これは意図的な選択です。ページが読み取れる情報の一部は、ブラウザの下にある OS から来ます。Linux コンテナでは、ユーザーエージェントが何を名乗っていても、テキストは FreeType でシェーピングされ、フォントは fontconfig から供給されます。このイメージで Windows ペルソナを使って計測したところ、フォントサイズを 0.01 px ずつ変えたときにテキスト幅が変化したのは全ステップの 66% で、実際の Windows 版 Chrome の 99% とは差がありました。Windows のアイデンティティが必要なら、Windows ビルドを動かすか、Windows マシン上で動作するホスト型ブラウザを使ってください。

ライセンス付きのコンテナは、初回起動時にエンジンをダウンロードし、同時実行数のリースを取得します。そのため、ライセンス API への外向きの通信が必要です。キャッシュボリュームをマウントしておけば、エンジンのダウンロードは新しいコンテナごとではなく 1 回で済みます。

CDP で接続できるもの

クライアント接続方法
Playwrightchromium.connect_over_cdp(url) / connectOverCDP(url)
Puppeteerpuppeteer.connect({ browserURL: url, defaultViewport: null })
browser-use · Crawl4AI · StagehandCDP エンドポイントの設定にその URL を指定
その他、CDP に対応したあらゆるもの公開したポートで DevTools Protocol を直接使用

主な用途

Compose や Kubernetes 上のスクレイパー

ワーカーの隣に置くブラウザサービスを、環境変数だけで構成できます。

エージェントフレームワーク

browser-use、Crawl4AI、Stagehand に、ローカルの Chrome の代わりに CDP URL を渡します。

再現性のある CI

イメージのタグを固定すれば、パイプラインの実行ごとに同じオープンビルドが使われます。ライセンスキーを使う場合、ライセンスビルドを固定できるのは Pro の CC_VERSION だけです。

言語を問わない

Python や Node から Go、Rust まで、CDP クライアントがあればどの言語からでもエンドポイントを操作できます。

Clearcote は、プライバシー保護、テスト、研究、合法的な自動化のために作られています。どう使うか、そしてアクセスするサイトの規約を守ることは、利用者ご自身の責任です。

対象プラン

Docker イメージ、serve()、CDP エンドポイントはすべてのプランで使えます。イメージはデフォルトでオープンビルドを実行します。最新ビルドを使うには、ライセンスキーを渡してください(GitHub アカウントがあれば、同時に 1 ブラウザまで無料)。無料キーの 1 ブラウザ制限は、お使いのすべてのコンテナを合算して数えられます。

プランを比較

よくある質問

どの Docker イメージですか?

Docker Hub の teamflatearth/clearcote です。公開リポジトリ clearcote-browser の Dockerfile からビルドされています。古いイメージを更新するには docker pull teamflatearth/clearcote を実行してください。

ポート 9222 を公開しても安全ですか?

信頼できるネットワーク上に限ってください。CDP エンドポイントは、ブラウザを完全に制御できる入口です。-p 127.0.0.1:9222:9222 でホストローカルに公開するか、プライベートネットワーク内にとどめ、パブリックなインターフェイスには決して公開しないでください。

コンテナで Windows のアイデンティティを見せられますか?

CC_PLATFORM=windows を設定することはできますが、Linux コンテナ内のフォントメトリクスとシステムフォントは Linux のものなので、フィンガープリントテストで見抜かれます。デフォルトの Linux ペルソナなら整合性が取れています。Windows のアイデンティティが必要なら、Windows 上で Windows ビルドを動かすか、ホスト型ブラウザを使ってください。

Docker でライセンスビルドを動かすには?

CLEARCOTE_LICENSE_KEY を設定し、エンジンのダウンロードが 1 回で済むよう /opt/xdg-cache にボリュームをマウントします。SDK 0.26.1 以降でビルドしたイメージが必要で、GitHub の無料キーを使うなら 0.30.0 以降が必要です。どのエンジンが使われたか、ライセンスのリースを取得できたかは起動ログに表示されます。

navigator.webdriver が false のままなのはなぜですか?

エンジンは、通常の自動化で使われるスイッチ --enable-automation からこの値を設定しなくなっています。そもそもイメージはこのスイッチなしでブラウザを起動します。後から CDP でクライアントを接続しても、値は変わりません。

ドキュメントで詳しく

関連する機能

Clearcote を試す

Playwright & Puppeteer にそのまま組み込め、TLS ハンドシェイクまで整合性を保ちます。まずはオープンソースのビルドから始められます。

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