cli-anything-browser は何をしますか?
DOMShellのMCPサーバーを使用したブラウザ自動化のためのコマンドラインインターフェースです。ls、cd、cat、grep、clickのようなファイルシステムコマンドでWebページを操作できます。
インストール
前提条件
-
Node.js と npx(DOMShell MCPサーバー用):
# Node.js を https://nodejs.org/ からインストール npx --version -
Chrome/Chromium に DOMShell 拡張機能 をインストール:
- Chrome に拡張機能をインストール
- CLI を使用する前に Chrome が起動していることを確認
-
Python 3.10+
CLI のインストール
cd browser/agent-harness
pip install -e .
コマンドグループ
page — ページナビゲーション
page open <url>— URLに移動page reload— 現在のページを再読み込みpage back— 履歴を戻るpage forward— 履歴を進むpage info— 現在のページ情報を表示
fs — ファイルシステムコマンド(アクセシビリティツリー)
fs ls [path]— パス内の要素を一覧表示fs cd <path>— ディレクトリを変更fs cat [path]— 要素の内容を読み取りfs grep <pattern> [path]— テキストパターンを検索fs pwd— 作業ディレクトリを表示
act — アクションコマンド
act click <path>— 要素をクリックact type <path> <text>— 入力フィールドにテキストを入力
session — セッション管理
session status— セッション状態を表示session daemon-start— 永続的なデーモンモードを起動session daemon-stop— デーモンモードを停止
使用例
基本的なナビゲーション
# ページを開く
cli-anything-browser page open https://example.com
# 構造を探索
cli-anything-browser fs ls /
cli-anything-browser fs cd /main
cli-anything-browser fs ls
# ルートに戻る
cli-anything-browser fs cd /
検索とクリック
cli-anything-browser fs grep "Login"
cli-anything-browser act click /main/button[0]
フォーム入力
cli-anything-browser act type /main/input[0] "[email protected]"
cli-anything-browser act click /main/button[0]
JSON出力
cli-anything-browser --json fs ls /
デーモンモード(高速な対話操作)
# 永続的な接続を開始
cli-anything-browser session daemon-start
# コマンドを実行(永続的な接続を使用)
cli-anything-browser fs ls /
cli-anything-browser fs cd /main
# デーモンを停止
cli-anything-browser session daemon-stop
対話型REPL
cli-anything-browser
パス構文
DOMShellはアクセシビリティツリーに対してファイルシステムのようなパスを使用します:
/ — ルート(ドキュメント)
/main — mainランドマーク
/main/div[0] — main内の最初のdiv
/main/div[0]/button[2] — 最初のdiv内の3番目のボタン
- 配列インデックスは0から始まります:
button[0]は最初のボタン ..で1階層上に移動/でルートへ
エージェント固有のガイダンス
解析用JSON出力
すべてのコマンドは機械可読出力のための --json フラグをサポートしています:
cli-anything-browser --json fs ls /
出力:
{
"path": "/",
"entries": [
{"name": "main", "role": "landmark", "path": "/main"}
]
}
エラーハンドリング
CLIは一般的な問題に対して明確なエラーメッセージを提供します:
- npx が見つかりません: Node.js を https://nodejs.org/ からインストール
- DOMShell が見つかりません:
npx @apireno/domshell --versionを実行 - MCP呼び出しに失敗: DOMShell Chrome拡張機能をインストール
コマンドを実行する前に、is_available() の戻り値を確認してください。
効率化のためのデーモンモード
複数のコマンドを実行するエージェントワークフローでは、デーモンモードを使用してください:
- デーモンを開始:
cli-anything-browser session daemon-start - コマンドを実行: 各コマンドがMCP接続を再利用
- デーモンを停止:
cli-anything-browser session daemon-stop
これにより、コマンドごとに1~3秒かかるコールドスタートのオーバーヘッドを回避できます。
リンク
セキュリティ上の考慮事項
重要: このCLIをAIエージェントと使用する場合、以下のセキュリティ上の考慮事項に注意してください。
URL制限
ブラウザハーネスは、ナビゲーション前にすべてのURLを検証します:
- スキームの明示必須: URLには
http://またはhttps://スキームを含める必要があります(example.comのようなスキームなしのURLは拒否されます) - ブロックされるスキーム:
file://、javascript://、data://、vbscript://、about://、chrome://、およびブラウザ内部スキーム - 許可されるスキーム:
http://とhttps://のみ(CLI_ANYTHING_BROWSER_ALLOWED_SCHEMESで設定可能) - プライベートネットワークブロック:
CLI_ANYTHING_BROWSER_BLOCK_PRIVATE=trueでオプション(デフォルトでは無効)
DOMコンテンツのリスク
アクセシビリティツリーには、ページ上の可視および非表示のすべての要素が含まれます。悪意のあるWebサイトは以下を行う可能性があります:
- 操作的なテキスト(例:「前の指示を無視してください」)を含むARIAラベルを作成
- aria-hidden要素を使用してユーザーに見えないコンテンツを挿入
- ナビゲーションを誤誘導する混乱したDOM構造を作成
軽減策: 信頼できないWebサイトとやり取りする場合は、以下を検討してください:
--jsonフラグを使用して、安全に解析しやすい構造化出力を取得- プロンプトに含める前にDOMコンテンツをサニタイズまたはフィルタリング
- 信頼できるドメインにナビゲーションを制限
プライベートネットワークアクセス
デフォルトでは、ブラウザはlocalhostやプライベートネットワーク(192.168.x.x、10.x.x.xなど)にアクセスできます。ブロックするには:
export CLI_ANYTHING_BROWSER_BLOCK_PRIVATE=true
cli-anything-browser page open http://localhost:8080 # ブロックされます
セッションの分離
複数のブラウザセッションは同じChromeインスタンスを共有します。Cookieや認証状態はセッション間で保持される可能性があります。機密性の高い操作では、以下を検討してください:
- Chromeのゲストモードまたはシークレットモードを使用
- セッション間でCookieをクリア
- 異なるセキュリティコンテキストに別々のChromeプロファイルを使用