セッション

複数の隔離されたブラウザインスタンスを実行します:

# 異なるセッション
agent-browser --session agent1 open site-a.com
agent-browser --session agent2 open site-b.com

# 環境変数経由でも可
AGENT_BROWSER_SESSION=agent1 agent-browser click "#btn"

# 有効なセッションの一覧表示
agent-browser session list
# 出力:
# 有効なセッション:
# -> default
#    agent1

# 現在のセッションを表示
agent-browser session

セッションの隔離

各セッションには以下のものが独自に保持されます:

  • ブラウザインスタンス
  • クッキーおよびストレージ
  • ナビゲーション履歴
  • 認証状態

永続的プロファイル

デフォルトでは、ブラウザを閉じるとブラウザの状態は失われます。--profile を使用して再起動間で状態を保持できます:

# 永続的なプロファイルディレクトリを使用
agent-browser --profile ~/.myapp-profile open myapp.com

# 一度ログインすれば、認証済みセッションを再利用可能
agent-browser --profile ~/.myapp-profile open myapp.com/dashboard

# 環境変数経由でも可
AGENT_BROWSER_PROFILE=~/.myapp-profile agent-browser open myapp.com

プロファイルディレクトリには以下が格納されます:

  • クッキーおよび localStorage
  • IndexedDB データ
  • サービスワーカー
  • ブラウザキャッシュ
  • ログインセッション

セッションの永続化

--session-name を使用すると、ブラウザの再起動間でクッキーおよび localStorage を自動的に保存・復元できます:

# "twitter" セッション用に状態を自動保存・読み込み
agent-browser --session-name twitter open twitter.com

# 一度ログインすれば、状態は自動的に保持される
agent-browser --session-name twitter click "#login"

# 環境変数経由でも可
export AGENT_BROWSER_SESSION_NAME=twitter
agent-browser open twitter.com

状態ファイルは ~/.agent-browser/sessions/ に保存され、デーモン起動時に自動的に読み込まれます。

セッション名のルール

セッション名にはアルファベットと数字、ハイフン、アンダースコアのみを使用できます:

# 有効なセッション名
agent-browser --session-name my-project open example.com
agent-browser --session-name test_session_v2 open example.com

# 無効(拒否される)
agent-browser --session-name "../bad" open example.com    # パストラバーサル
agent-browser --session-name "my session" open example.com # 空白文字
agent-browser --session-name "foo/bar" open example.com    # スラッシュ

状態の暗号化

AES-256-GCM を使用して保存された状態ファイル(クッキー、localStorage)を暗号化します:

# 256ビットの鍵を生成(64桁の十六進数)
openssl rand -hex 32

# 暗号化鍵を設定
export AGENT_BROWSER_ENCRYPTION_KEY=<your-64-char-hex-key>

# 今後、状態ファイルは自動的に暗号化される
agent-browser --session-name secure-session open example.com

# 状態一覧表示で暗号化状態を確認
agent-browser state list

状態の自動期限切れ

古い状態ファイルを自動削除して蓄積を防ぎます:

# 期限を設定(デフォルト:30日)
export AGENT_BROWSER_STATE_EXPIRE_DAYS=7

# 手動で古くなった状態をクリーンアップ
agent-browser state clean --older-than 7

状態管理コマンド

# すべての保存済み状態を一覧表示
agent-browser state list

# 状態の要約を表示(クッキー、オリジン、ドメイン)
agent-browser state show my-session-default.json

# 状態ファイル名の変更
agent-browser state rename old-name new-name

# 特定のセッション名に対する状態をクリア
agent-browser state clear my-session

# すべての保存済み状態をクリア
agent-browser state clear --all

# 手動での保存/読み込み(カスタムパス用)
agent-browser state save ./backup.json
agent-browser state load ./backup.json

認証済みセッション

--headers を使用して特定のオリジン向けに HTTP ヘッダーを設定します:

# api.example.com 限定のヘッダー
agent-browser open api.example.com --headers '{"Authorization": "Bearer <token>"}'

# api.example.com へのリクエストには認証ヘッダーが含まれる
agent-browser snapshot -i --json
agent-browser click @e2

# 他のドメインに移動 - ヘッダーは送信されない
agent-browser open other-site.com

有用な用途:

  • ログインフローのスキップ - ヘッダーによる認証
  • ユーザー切り替え - セッションごとに異なる認証トークン
  • APIテスト - 保護されたエンドポイントへのアクセス
  • セキュリティ - ヘッダーはオリジンにスコープされ、漏洩しない

複数のオリジン

agent-browser open api.example.com --headers '{"Authorization": "Bearer token1"}'
agent-browser open api.acme.com --headers '{"Authorization": "Bearer token2"}'

グローバルヘッダー

すべてのドメインに適用するヘッダーの設定:

agent-browser set headers '{"X-Custom-Header": "value"}'

環境変数

変数説明
AGENT_BROWSER_SESSIONブラウザセッションID(デフォルト:"default")
AGENT_BROWSER_SESSION_NAME自動保存/復元の状態永続化名
AGENT_BROWSER_ENCRYPTION_KEYAES-256-GCM 暗号化用の64文字の十六進鍵
AGENT_BROWSER_STATE_EXPIRE_DAYSN日以上前の状態を自動削除(デフォルト:30)