本文へスキップ

Fortress(BSD リリース)からの移行

Fortress の BSD ライセンスのリリース(v149、v150、v151)を CDP エンドポイントとして使っている場合は、ブラウザの起動方法を変えることで、その構成を Clearcote に移せます。エンドポイントに接続するコードはそのままです。

Fortress は 2026 年 9 月 30 日の v3(Chromium 153)で独自のソースアベイラブルライセンスに移行しましたが、それより前のリリースは BSD-3 ライセンスのままです。このガイドは、そうした BSD リリースを使っていて、v3 ではなく Clearcote に移行したいチーム向けです。ライセンス、料金、プラットフォームを並べた比較は Clearcote vs Fortress をご覧ください。

変わるところ

Fortress の起動方法Clearcote での起動方法
Python:tilion-fortress の Fortress()、続いて f.cdp_urlclearcote の serve()、続いて srv.cdp_url
Node:Fortress.launch()、続いて f.cdpUrlclearcote の await serve()、続いて srv.cdpUrl
Docker:ポート 9222 で tilion/fortress:149、:150、:151 のいずれかポート 9222 で teamflatearth/clearcote
tilion ランチャー、または --remote-debugging-port=9222 を付けたバイナリclearcote serve --port 9222

接続呼び出しより後のコード、つまり Playwright、Puppeteer、browser-use、Crawl4AI、Stagehand のコードはそのままで構いません。最初に 1 つ確認してください。tilion/fortress:latest イメージタグは 2026 年 9 月 30 日から v3 を指しているため、:latest を pull している構成はもう BSD リリースではありません。移行が終わるまでは :149、:150、:151 のいずれかに固定してください。

Python と Node:serve()

serve() は SDK の起動設定(ペルソナ、プロキシ、デフォルト設定)で Clearcote を起動してループバック上に CDP エンドポイントを開き、そのエンドポイントの URL を持つハンドルを返します。ほかのコードが以前のアドレスを前提にしている場合は port=9222 を渡してください。指定しなければ、serve() は空いているポートを選びます。

# pip install -U clearcote
from clearcote import serve
from playwright.sync_api import sync_playwright

with serve(fingerprint="acct-1", port=9222) as srv:        # was: with Fortress() as f:
    with sync_playwright() as p:
        browser = p.chromium.connect_over_cdp(srv.cdp_url)  # was: f.cdp_url
        page = browser.contexts[0].new_page()               # the served profile
        page.goto("https://example.com")
        print(page.title())
        browser.close()                                     # disconnect before the with blocks end

close() はブラウザを停止し、終了を待ってから、serve() が作成した一時プロファイルを削除します。Python では with ブロックがこれを自動で呼び出します。browser-use、Crawl4AI、Stagehand では、それぞれの CDP 設定に srv.cdp_url(Node では srv.cdpUrl)を渡してください。.NET SDK にも同じ呼び出しが ServeAsync として用意されています。詳しくは Puppeteer などの CDP クライアントをご覧ください。

Docker

イメージを差し替え、ポートはそのままにします。クライアントは以前と同じアドレスに接続します。

bash
# was: docker run --rm -p 9222:9222 tilion/fortress:151
docker run -d --rm -p 127.0.0.1:9222:9222 -e CC_FINGERPRINT=acct-1 teamflatearth/clearcote

# the latest build: pass your key from the environment and keep the download in a volume
docker run -d --rm -p 127.0.0.1:9222:9222 -e CC_FINGERPRINT=acct-1 \
  -e CLEARCOTE_LICENSE_KEY -v clearcote-cache:/opt/xdg-cache teamflatearth/clearcote
python
browser = p.chromium.connect_over_cdp("http://localhost:9222")   # unchanged
page = browser.contexts[0].new_page()                            # the container's own profile

-p 127.0.0.1:9222:9222 にすると、エンドポイントはこのマシンの中に留まります。CDP ポートはブラウザを完全に操作できる入り口なので、公開するのは信頼できるネットワークだけにしてください。アイデンティティを選んだり再利用したりするには CC_FINGERPRINT を指定してください。指定しない場合、sdk-0.39.0 以降のイメージはコンテナごとにランダムなシードを割り当て、それより古いイメージはすべてのコンテナに同じシードを使います。イメージの設定はすべて環境変数(プラットフォーム、言語、タイムゾーン、プロキシ)で行い、その一覧は デプロイにあります。

シェルから:clearcote serve

バイナリや tilion ランチャーを自分で起動し、クライアントをポート 9222 に接続させていた場合は、clearcote serve(Python と Node のパッケージに含まれています)が常駐型の置き換え先になります。パラメーターなしの接続には共有のデフォルトブラウザが 1 つ割り当てられるので、既存のクライアントは変更なしで動きます。接続ごとに、URL で専用のアイデンティティを指定することもできます。

bash
# was: tilion --headless=new --remote-debugging-port=9222 --user-data-dir=/tmp/p
clearcote serve --port 9222

#   connect_over_cdp("http://127.0.0.1:9222")                     # the shared default browser
#   connect_over_cdp("http://127.0.0.1:9222?fingerprint=acct-1")  # a browser of its own for acct-1

動作が異なる点

  • アイデンティティはシードから決まります。BSD リリースの Fortress では、ランチャーが整合性のあるデフォルトの Windows ペルソナを 1 つ適用します。これを変更するには、--uxr-* スイッチ(--uxr-timezone、--uxr-languages、--uxr-screen-width、--uxr-canvas-seed など)や TILION_TZ / TILION_LANG を使って項目ごとに指定します。Clearcote は、サイトごとの canvas と WebGL のノイズも含めたペルソナ全体を、1 つの fingerprint シードから導出します。そのため、同じシードからは毎回同じアイデンティティが、新しいシードからは無関係なアイデンティティが得られます。--uxr-* の値を 1 つずつ移植するのではなく、アカウントごとに専用のシードを割り当ててください。プラットフォームは platform で、タイムゾーンと言語は timezone と accept_language(Node では acceptLanguage)で設定するか、geoip でプロキシに合わせてください。推奨設定を参照してください。
  • ページは提供されたプロファイルで開きます。例のように browser.contexts[0] を使ってください。Puppeteer では defaultViewport: null を指定して接続し、ウィンドウがペルソナで決まったサイズを保つようにします。
  • プロキシはクライアントではなく Clearcote に渡します。serve() には proxy を、clearcote serve には --proxy を渡し、geoip を有効にして、タイムゾーン、言語、WebRTC アドレスをプロキシの出口に合わせます。ユーザー名とパスワードで認証するプロキシには最新ビルドが必要です。オープンビルドでは、IP で認証するプロキシを使ってください。プロキシと geoipを参照してください。
  • Fortress 独自のスイッチや環境変数は、ここでは何の効果もありません。Clearcote のオプションは 起動オプションと フィンガープリントフラグにまとめています。
  • 人間らしい入力は launch() のオプションです。Playwright 側で動作するため、CDP 経由で接続したクライアントには適用されません。
  • プラットフォームは BSD リリースと同じです:Windows x64 と Linux x64 で、Docker イメージは x64 用です。

どの Clearcote ビルドが使われるか

ライセンスキーがない場合、SDK とイメージはオープンビルドで動作します。BSD-3 で、すべてのパッチが公開され再現可能、Chromium 150 ベースで、アカウントは不要です。キーがあれば最新ビルド(Chromium 154)で動作します。これは非公開パッチを追加したビルドで、同時に 1 ブラウザまでなら GitHub で無料、それ以上は Pro です。キーは clearcote login で保存するか、CLEARCOTE_LICENSE_KEY を設定してください。インストールを参照してください。

切り替えを確認する

エンドポイントを起動した状態で、何が応答しているかを問い合わせます:

bash
curl -s http://127.0.0.1:9222/json/version   # the browser behind the endpoint
clearcote info                                # SDK, licence, cached build and a launch test

clearcote info は、解決したビルドタグと、正確なブラウザバージョン付きの Launch test ok を表示します。各ビルドが報告するはずのバージョンと、チェックが失敗したときの対処は、セットアップ手順書にまとめています。