会话
运行多个隔离的浏览器实例:
# 不同的会话
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会话隔离
每个会话都有独立的:
- 浏览器实例
- Cookie 和存储
- 导航历史记录
- 认证状态
持久化配置文件
默认情况下,关闭浏览器后浏览器状态将丢失。使用 --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配置文件目录存储以下内容:
- Cookie 和 localStorage
- IndexedDB 数据
- 服务工作线程
- 浏览器缓存
- 登录会话
会话持久化
使用 --session-name 可自动保存和恢复浏览器重启期间的 Cookie 与 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 加密保存的状态文件(Cookie、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
# 显示状态摘要(Cookie、源、域名)
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_KEY | AES-256-GCM 加密使用的 64 位十六进制密钥 |
AGENT_BROWSER_STATE_EXPIRE_DAYS | 自动删除超过 N 天的状态(默认值:30) |