ブラウザ (OpenClaw マネージド)
OpenClaw は、エージェントが制御する専用の Chrome/Brave/Edge/Chromium プロファイルを実行できます。これはあなたの個人用ブラウザから隔離されており、ゲートウェイ内の小さなローカル制御サービス(ループバックのみ)を通じて管理されます。初心者向けの見方:
- これを分離された、エージェント専用のブラウザと考えてください。
openclawプロファイルは、あなたの個人用ブラウザプロファイルに触れません。- エージェントは安全なレーン内でタブを開き、ページを読み、クリックし、タイプできます。
- デフォルトの
chromeプロファイルは、拡張機能リレーを介してシステムデフォルトの Chromium ブラウザを使用します。隔離されたマネージドブラウザにはopenclawに切り替えてください。
得られるもの
- openclaw という名前の分離されたブラウザプロファイル(デフォルトでオレンジ色のアクセント)。
- 決定論的なタブ制御(リスト表示/開く/フォーカス/閉じる)。
- エージェントアクション(クリック/タイプ/ドラッグ/選択)、スナップショット、スクリーンショット、PDF。
- オプションのマルチプロファイルサポート(
openclaw、work、remote、…)。
このブラウザは、あなたの日常的なブラウザではありません。エージェント自動化と検証のための安全で隔離された作業面です。
クイックスタート
openclaw browser --browser-profile openclaw status
openclaw browser --browser-profile openclaw start
openclaw browser --browser-profile openclaw open https://example.com
openclaw browser --browser-profile openclaw snapshot
「Browser disabled」と表示された場合は、設定で有効にして(下記参照)ゲートウェイを再起動してください。
プロファイル: openclaw 対 chrome
openclaw: マネージド、隔離されたブラウザ(拡張機能不要)。chrome: システムブラウザへの拡張機能リレー(OpenClaw 拡張機能がタブにアタッチされている必要があります)。
デフォルトでマネージドモードを使用したい場合は、browser.defaultProfile: "openclaw" を設定します。
設定
ブラウザ設定は ~/.openclaw/openclaw.json にあります。
{
browser: {
enabled: true, // デフォルト: true
ssrfPolicy: {
dangerouslyAllowPrivateNetwork: true, // デフォルトの信頼ネットワークモード
// allowPrivateNetwork: true, // 互換性のためのレガシーエイリアス
// hostnameAllowlist: ["*.example.com", "example.com"],
// allowedHostnames: ["localhost"],
},
// cdpUrl: "http://127.0.0.1:18792", // レガシー単一プロファイルオーバーライド
remoteCdpTimeoutMs: 1500, // リモート CDP HTTP タイムアウト (ms)
remoteCdpHandshakeTimeoutMs: 3000, // リモート CDP WebSocket ハンドシェイクタイムアウト (ms)
defaultProfile: "chrome",
color: "#FF4500",
headless: false,
noSandbox: false,
attachOnly: false,
executablePath: "/Applications/Brave Browser.app/Contents/MacOS/Brave Browser",
profiles: {
openclaw: { cdpPort: 18800, color: "#FF4500" },
work: { cdpPort: 18801, color: "#0066CC" },
remote: { cdpUrl: "http://10.0.0.42:9222", color: "#00AA00" },
},
},
}
注記:
- ブラウザ制御サービスは、
gateway.portから派生したポート(デフォルト:18791、これは gateway + 2)でループバックにバインドします。リレーは次のポート(18792)を使用します。 - ゲートウェイポート(
gateway.portまたはOPENCLAW_GATEWAY_PORT)をオーバーライドすると、派生するブラウザポートも同じ「ファミリー」に留まるようにシフトします。 cdpUrlは未設定の場合、リレーポートをデフォルトとします。remoteCdpTimeoutMsは、リモート(非ループバック)CDP の到達可能性チェックに適用されます。remoteCdpHandshakeTimeoutMsは、リモート CDP WebSocket の到達可能性チェックに適用されます。- ブラウザナビゲーション/タブオープンは、ナビゲーション前に SSRF ガードされ、ナビゲーション後の最終的な
http(s)URL に対してベストエフォートで再チェックされます。 browser.ssrfPolicy.dangerouslyAllowPrivateNetworkはデフォルトでtrue(信頼ネットワークモデル)です。厳密なパブリック専用ブラウジングのためにはfalseに設定してください。browser.ssrfPolicy.allowPrivateNetworkは、互換性のためのレガシーエイリアスとして引き続きサポートされます。attachOnly: trueは「ローカルブラウザを起動しない。既に実行されている場合にのみアタッチする」ことを意味します。colorとプロファイルごとのcolorは、どのプロファイルがアクティブかわかるようにブラウザ UI を着色します。- デフォルトプロファイルは
openclaw(OpenClaw マネージドスタンドアロンブラウザ)です。Chrome 拡張機能リレーを選択するにはdefaultProfile: "chrome"を使用します。 - 自動検出順序: Chromium ベースの場合はシステムデフォルトブラウザ、それ以外は Chrome → Brave → Edge → Chromium → Chrome Canary。
- ローカルの
openclawプロファイルはcdpPort/cdpUrlを自動割り当てします — これらはリモート CDP の場合にのみ設定してください。
Brave(または別の Chromium ベースブラウザ)を使用する
システムデフォルトのブラウザが Chromium ベース(Chrome/Brave/Edge など)の場合、OpenClaw は自動的にそれを使用します。自動検出をオーバーライドするには browser.executablePath を設定します: CLI 例:
openclaw config set browser.executablePath "/usr/bin/google-chrome"
// macOS
{
browser: {
executablePath: "/Applications/Brave Browser.app/Contents/MacOS/Brave Browser"
}
}
// Windows
{
browser: {
executablePath: "C:\\Program Files\\BraveSoftware\\Brave-Browser\\Application\\brave.exe"
}
}
// Linux
{
browser: {
executablePath: "/usr/bin/brave-browser"
}
}
ローカル制御とリモート制御
- ローカル制御 (デフォルト): ゲートウェイがループバック制御サービスを起動し、ローカルブラウザを起動できます。
- リモート制御 (ノードホスト): ブラウザがあるマシンでノードホストを実行します。ゲートウェイはブラウザアクションをそれにプロキシします。
- リモート CDP:
browser.profiles.<name>.cdpUrl(またはbrowser.cdpUrl)を設定して、リモートの Chromium ベースブラウザにアタッチします。この場合、OpenClaw はローカルブラウザを起動しません。
リモート CDP URL には認証を含めることができます:
- クエリトークン(例:
https://provider.example?token=<token>) - HTTP Basic 認証(例:
https://user:pass@provider.example)
OpenClaw は、/json/* エンドポイントを呼び出すときや CDP WebSocket に接続するときに認証情報を保持します。トークンは設定ファイルにコミットするのではなく、環境変数やシークレットマネージャーを使用することを推奨します。
ノードブラウザプロキシ(ゼロ設定デフォルト)
ブラウザがあるマシンでノードホストを実行する場合、OpenClaw は追加のブラウザ設定なしで、ブラウザツール呼び出しをそのノードに自動ルーティングできます。これはリモートゲートウェイのデフォルトパスです。注記:
- ノードホストは、そのローカルブラウザ制御サーバーをプロキシコマンド経由で公開します。
- プロファイルはノード自身の
browser.profiles設定(ローカルと同じ)から取得されます。 - 不要な場合は無効にできます:
- ノード側:
nodeHost.browserProxy.enabled=false - ゲートウェイ側:
gateway.nodes.browser.mode="off"
- ノード側:
Browserless(ホストされたリモート CDP)
Browserless は、HTTPS 経由で CDP エンドポイントを公開するホストされた Chromium サービスです。OpenClaw ブラウザプロファイルを Browserless リージョンエンドポイントに向け、API キーで認証できます。例:
{
browser: {
enabled: true,
defaultProfile: "browserless",
remoteCdpTimeoutMs: 2000,
remoteCdpHandshakeTimeoutMs: 4000,
profiles: {
browserless: {
cdpUrl: "https://production-sfo.browserless.io?token=<BROWSERLESS_API_KEY>",
color: "#00AA00",
},
},
},
}
注記:
<BROWSERLESS_API_KEY>を実際の Browserless トークンに置き換えてください。- Browserless アカウントに一致するリージョンエンドポイントを選択してください(ドキュメント参照)。
セキュリティ
重要な考え方:
- ブラウザ制御はループバックのみです。アクセスはゲートウェイの認証またはノードペアリングを経由します。
- ブラウザ制御が有効で認証が設定されていない場合、OpenClaw は起動時に
gateway.auth.tokenを自動生成し、設定に保存します。 - ゲートウェイとノードホストはプライベートネットワーク(Tailscale)上に保ち、公開暴露を避けてください。
- リモート CDP URL/トークンはシークレットとして扱い、環境変数やシークレットマネージャーを優先してください。
リモート CDP のヒント:
- 可能な限り HTTPS エンドポイントと短命トークンを優先してください。
- 設定ファイルに長寿命トークンを直接埋め込むのは避けてください。
プロファイル(マルチブラウザ)
OpenClaw は複数の名前付きプロファイル(ルーティング設定)をサポートします。プロファイルは以下のいずれかです:
- openclaw マネージド: 独自のユーザーデータディレクトリ + CDP ポートを持つ専用の Chromium ベースブラウザインスタンス
- リモート: 明示的な CDP URL(別の場所で実行されている Chromium ベースブラウザ)
- 拡張機能リレー: ローカルリレー + Chrome 拡張機能を介した既存の Chrome タブ
デフォルト:
openclawプロファイルは、存在しない場合に自動作成されます。chromeプロファイルは、Chrome 拡張機能リレー用に組み込まれています(デフォルトでhttp://127.0.0.1:18792を指します)。- ローカル CDP ポートはデフォルトで 18800–18899 から割り当てられます。
- プロファイルを削除すると、そのローカルデータディレクトリはゴミ箱に移動します。
すべての制御エンドポイントは ?profile=<name> を受け入れます。CLI は --browser-profile を使用します。
Chrome 拡張機能リレー(既存の Chrome を使用)
OpenClaw は、ローカル CDP リレー + Chrome 拡張機能を介して既存の Chrome タブ(別の「openclaw」Chrome インスタンスなし)を駆動することもできます。完全ガイド: Chrome 拡張機能 フロー:
- ゲートウェイはローカル(同じマシン)で実行されるか、ノードホストがブラウザマシンで実行されます。
- ローカルリレーサーバーがループバック
cdpUrl(デフォルト:http://127.0.0.1:18792)でリッスンします。 - タブにアタッチするためにOpenClaw Browser Relay拡張機能アイコンをクリックします(自動アタッチはしません)。
- エージェントは適切なプロファイルを選択することで、通常の
browserツールを介してそのタブを制御します。
ゲートウェイが別の場所で実行される場合は、ゲートウェイがブラウザアクションをプロキシできるように、ブラウザマシンでノードホストを実行します。
サンドボックス化されたセッション
エージェントセッションがサンドボックス化されている場合、browser ツールはデフォルトで target="sandbox"(サンドボックスブラウザ)になる可能性があります。Chrome 拡張機能リレーの引き継ぎにはホストブラウザ制御が必要なので、以下のいずれかを行います:
- セッションを非サンドボックスで実行する、または
agents.defaults.sandbox.browser.allowHostControl: trueを設定し、ツールを呼び出すときにtarget="host"を使用します。
セットアップ
- 拡張機能をロード(開発/アンパック):
openclaw browser extension install
- Chrome →
chrome://extensions→ 「デベロッパーモード」を有効化 - 「パッケージ化されていない拡張機能を読み込む」 →
openclaw browser extension pathで出力されたディレクトリを選択 - 拡張機能をピン留めし、制御したいタブでクリック(バッジに
ONと表示)。
- 使用:
- CLI:
openclaw browser --browser-profile chrome tabs - エージェントツール:
browserにprofile="chrome"を指定
オプション: 別の名前やリレーポートが必要な場合は、独自のプロファイルを作成:
openclaw browser create-profile \
--name my-chrome \
--driver extension \
--cdp-url http://127.0.0.1:18792 \
--color "#00AA00"
注記:
- このモードは、ほとんどの操作(スクリーンショット/スナップショット/アクション)に Playwright-on-CDP に依存します。
- 拡張機能アイコンをもう一度クリックしてデタッチします。
隔離保証
- 専用ユーザーデータディレクトリ: 個人用ブラウザプロファイルに触れることはありません。
- 専用ポート: 開発ワークフローとの衝突を防ぐため
9222を避けます。 - 決定論的タブ制御: 「最後のタブ」ではなく
targetIdでターゲットタブを指定します。
ブラウザ選択
ローカル起動時、OpenClaw は利用可能な最初のブラウザを選択します:
- Chrome
- Brave
- Edge
- Chromium
- Chrome Canary
browser.executablePath でオーバーライドできます。プラットフォーム:
- macOS:
/Applicationsと~/Applicationsをチェック。 - Linux:
google-chrome、brave、microsoft-edge、chromiumなどを検索。 - Windows: 一般的なインストール場所をチェック。
制御 API(オプション)
ローカル統合のみのために、ゲートウェイは小さなループバック HTTP API を公開します:
- ステータス/開始/停止:
GET /、POST /start、POST /stop - タブ:
GET /tabs、POST /tabs/open、POST /tabs/focus、DELETE /tabs/:targetId - スナップショット/スクリーンショット:
GET /snapshot、POST /screenshot - アクション:
POST /navigate、POST /act - フック:
POST /hooks/file-chooser、POST /hooks/dialog - ダウンロード:
POST /download、POST /wait/download - デバッグ:
GET /console、POST /pdf - デバッグ:
GET /errors、GET /requests、POST /trace/start、POST /trace/stop、POST /highlight - ネットワーク:
POST /response/body - 状態:
GET /cookies、POST /cookies/set、POST /cookies/clear - 状態:
GET /storage/:kind、POST /storage/:kind/set、POST /storage/:kind/clear - 設定:
POST /set/offline、POST /set/headers、POST /set/credentials、POST /set/geolocation、POST /set/media、POST /set/timezone、POST /set/locale、POST /set/device
すべてのエンドポイントは ?profile=<name> を受け入れます。ゲートウェイ認証が設定されている場合、ブラウザ HTTP ルートも認証を要求します:
Authorization: Bearer <gateway token>x-openclaw-password: <gateway password>またはそのパスワードを使用した HTTP Basic 認証
Playwright 要件
一部の機能(ナビゲート/アクション/AI スナップショット/ロールスナップショット、要素スクリーンショット、PDF)には Playwright が必要です。Playwright がインストールされていない場合、それらのエンドポイントは明確な 501 エラーを返します。ARIA スナップショットと基本的なスクリーンショットは、openclaw マネージド Chrome では引き続き動作します。Chrome 拡張機能リレードライバーの場合、ARIA スナップショットとスクリーンショットには Playwright が必要です。Playwright is not available in this gateway build が表示された場合は、完全な Playwright パッケージ(playwright-core ではない)をインストールしてゲートウェイを再起動するか、ブラウザサポート付きで OpenClaw を再インストールしてください。
Docker Playwright インストール
ゲートウェイが Docker で実行されている場合、npx playwright(npm オーバーライド競合)は避けてください。代わりにバンドルされた CLI を使用します:
docker compose run --rm openclaw-cli \
node /app/node_modules/playwright-core/cli.js install chromium
ブラウザダウンロードを永続化するには、PLAYWRIGHT_BROWSERS_PATH(例: /home/node/.cache/ms-playwright)を設定し、/home/node が OPENCLAW_HOME_VOLUME またはバインドマウントを介して永続化されていることを確認してください。Docker を参照。
仕組み(内部)
高レベルフロー:
- 小さな制御サーバーが HTTP リクエストを受け付けます。
- CDP を介して Chromium ベースブラウザ(Chrome/Brave/Edge/Chromium)に接続します。
- 高度なアクション(クリック/タイプ/スナップショット/PDF)には、CDP 上で Playwright を使用します。
- Playwright がない場合、非 Playwright 操作のみが利用可能です。
この設計により、エージェントは安定した決定論的インターフェース上に保ちながら、ローカル/リモートブラウザやプロファイルを交換できます。
CLI クイックリファレンス
すべてのコマンドは --browser-profile <name> を受け入れて特定のプロファイルをターゲットにします。すべてのコマンドは、機械可読な出力(安定したペイロード)のために --json も受け入れます。基本:
openclaw browser statusopenclaw browser startopenclaw browser stopopenclaw browser tabsopenclaw browser tabopenclaw browser tab newopenclaw browser tab select 2openclaw browser tab close 2openclaw browser open https://example.comopenclaw browser focus abcd1234openclaw browser close abcd1234
検査:
openclaw browser screenshotopenclaw browser screenshot --full-pageopenclaw browser screenshot --ref 12openclaw browser screenshot --ref e12openclaw browser snapshotopenclaw browser snapshot --format aria --limit 200openclaw browser snapshot --interactive --compact --depth 6openclaw browser snapshot --efficientopenclaw browser snapshot --labelsopenclaw browser snapshot --selector "#main" --interactiveopenclaw browser snapshot --frame "iframe#main" --interactiveopenclaw browser console --level erroropenclaw browser errors --clearopenclaw browser requests --filter api --clearopenclaw browser pdfopenclaw browser responsebody "**/api" --max-chars 5000
アクション:
openclaw browser navigate https://example.comopenclaw browser resize 1280 720openclaw browser click 12 --doubleopenclaw browser click e12 --doubleopenclaw browser type 23 "hello" --submitopenclaw browser press Enteropenclaw browser hover 44openclaw browser scrollintoview e12openclaw browser drag 10 11openclaw browser select 9 OptionA OptionBopenclaw browser download e12 report.pdfopenclaw browser waitfordownload report.pdfopenclaw browser upload /tmp/openclaw/uploads/file.pdfopenclaw browser fill --fields '[{"ref":"1","type":"text","value":"Ada"}]'openclaw browser dialog --acceptopenclaw browser wait --text "Done"openclaw browser wait "#main" --url "**/dash" --load networkidle --fn "window.ready===true"openclaw browser evaluate --fn '(el) => el.textContent' --ref 7openclaw browser highlight e12openclaw browser trace startopenclaw browser trace stop
状態:
openclaw browser cookiesopenclaw browser cookies set session abc123 --url "https://example.com"openclaw browser cookies clearopenclaw browser storage local getopenclaw browser storage local set theme darkopenclaw browser storage session clearopenclaw browser set offline onopenclaw browser set headers --headers-json '{"X-Debug":"1"}'openclaw browser set credentials user passopenclaw browser set credentials --clearopenclaw browser set geo 37.7749 -122.4194 --origin "https://example.com"openclaw browser set geo --clearopenclaw browser set media darkopenclaw browser set timezone America/New_Yorkopenclaw browser set locale en-USopenclaw browser set device "iPhone 14"
注記:
uploadとdialogはアーミング呼び出しです。ファイル選択/ダイアログをトリガーするクリック/押下の前に実行してください。- ダウンロードとトレース出力パスは OpenClaw 一時ルートに制限されます:
- トレース:
/tmp/openclaw(フォールバック:${os.tmpdir()}/openclaw) - ダウンロード:
/tmp/openclaw/downloads(フォールバック:${os.tmpdir()}/openclaw/downloads)
- トレース:
- アップロードパスは OpenClaw 一時アップロードルートに制限されます:
- アップロード:
/tmp/openclaw/uploads(フォールバック:${os.tmpdir()}/openclaw/uploads)
- アップロード:
uploadは--input-refまたは--elementを介してファイル入力を直接設定することもできます。snapshot:--format ai(Playwright インストール時のデフォルト): 数値 ref(aria-ref="<n>")を含む AI スナップショットを返します。--format aria: アクセシビリティツリーを返します(ref なし、検査のみ)。--efficient(または--mode efficient): コンパクトなロールスナップショットプリセット(interactive + compact + depth + 低い maxChars)。- 設定デフォルト(ツール/CLI のみ): 呼び出し元がモードを渡さない場合に効率的なスナップショットを使用するには、
browser.snapshotDefaults.mode: "efficient"を設定します(ゲートウェイ設定 参照)。 - ロールスナップショットオプション(
--interactive、--compact、--depth、--selector)は、ref=e12のような ref を持つロールベースのスナップショットを強制します。 --frame "<iframe selector>"は、ロールスナップショットを iframe にスコープします(e12のようなロール ref とペアになります)。--interactiveは、インタラクティブ要素のフラットで選択しやすいリストを出力します(アクション駆動に最適)。--labelsは、ref ラベルがオーバーレイされたビューポートのみのスクリーンショットを追加します(MEDIA:<path>を出力)。
click/type/などは、snapshotからのref(数値12またはロール refe12)を必要とします。アクションのために CSS セレクターは意図的にサポートされていません。
スナップショットと ref
OpenClaw は 2 つの「スナップショット」スタイルをサポートします:
- AI スナップショット (数値 ref):
openclaw browser snapshot(デフォルト;--format ai)- 出力: 数値 ref を含むテキストスナップショット。
- アクション:
openclaw browser click 12、openclaw browser type 23 "hello"。 - 内部的に、ref は Playwright の
aria-refを介して解決されます。
- ロールスナップショット (
e12のようなロール ref):openclaw browser snapshot --interactive(または--compact、--depth、--selector、--frame)- 出力:
[ref=e12](およびオプションの[nth=1])を含むロールベースのリスト/ツリー。 - アクション:
openclaw browser click e12、openclaw browser highlight e12。 - 内部的に、ref は
getByRole(...)(重複にはnth()を追加)を介して解決されます。 --labelsを追加して、e12ラベルがオーバーレイされたビューポートスクリーンショットを含めます。
- 出力:
Ref の動作:
- Ref はナビゲーション間で安定していません。何か失敗した場合は、
snapshotを再実行して新しい ref を使用してください。 - ロールスナップショットが
--frameで取得された場合、ロール ref は次のロールスナップショットまでその iframe にスコープされます。
待機パワーアップ
時間/テキスト以外でも待機できます:
- URL を待機(Playwright でサポートされるグロブ):
openclaw browser wait --url "**/dash"
- ロード状態を待機:
openclaw browser wait --load networkidle
- JS 述語を待機:
openclaw browser wait --fn "window.ready===true"
- セレクターが表示されるのを待機:
openclaw browser wait "#main"
これらを組み合わせることができます:
openclaw browser wait "#main" \
--url "**/dash" \
--load networkidle \
--fn "window.ready===true" \
--timeout-ms 15000
デバッグワークフロー
アクションが失敗した場合(例: 「not visible」、「strict mode violation」、「covered」):
openclaw browser snapshot --interactiveclick <ref>/type <ref>を使用(インタラクティブモードではロール ref を優先)- それでも失敗する場合:
openclaw browser highlight <ref>で Playwright がターゲットにしているものを確認 - ページが奇妙な動作をする場合:
openclaw browser errors --clearopenclaw browser requests --filter api --clear
- 詳細なデバッグ: トレースを記録:
openclaw browser trace start- 問題を再現
openclaw browser trace stop(TRACE:<path>を出力)
JSON 出力
--json はスクリプトと構造化ツール用です。例:
openclaw browser status --json
openclaw browser snapshot --interactive --json
openclaw browser requests --filter api --json
openclaw browser cookies --json
JSON でのロールスナップショットには、refs に加えて小さな stats ブロック(行数/文字数/ref 数/インタラクティブ)が含まれ、ツールがペイロードサイズと密度を推論できるようになります。
状態と環境ノブ
これらは「サイトを X のように動作させる」ワークフローに役立ちます:
- クッキー:
cookies、cookies set、cookies clear - ストレージ:
storage local|session get|set|clear - オフライン:
set offline on|off - ヘッダー:
set headers --headers-json '{"X-Debug":"1"}'(レガシーset headers --json '{"X-Debug":"1"}'も引き続きサポート) - HTTP 基本認証:
set credentials user pass(または--clear) - 地理位置情報:
set geo <lat> <lon> --origin "https://example.com"(または--clear) - メディア:
set media dark|light|no-preference|none - タイムゾーン / ロケール:
set timezone ...、set locale ... - デバイス / ビューポ