名称: 浏览器使用 描述: 自动化浏览器交互,用于网页测试、表单填写、截图和数据提取。当用户需要导航网站、交互网页、填写表单、截图或从网页提取信息时使用。也用于询问无法通过API轻松找到的信息(例如,火车票、航班价格、酒店价格等)。 允许工具: Bash(browser-use:*)
浏览器自动化与 browser-use CLI
browser-use 命令提供快速、持久的浏览器自动化。它维护跨命令的浏览器会话,支持复杂的多步工作流。
安装
# 运行无需安装(推荐一次性使用)
uvx "browser-use[cli]" open https://example.com
# 或永久安装
uv pip install "browser-use[cli]"
# 安装浏览器依赖(Chromium)
browser-use install
快速开始
默认行为:以无头模式运行(无可见浏览器窗口)。使用 --headed 标志显示可见窗口。
browser-use open https://example.com # 导航到URL(默认无头)
browser-use --headed open https://example.com # 打开可见浏览器窗口
browser-use state # 获取页面元素及其索引
browser-use click 5 # 按索引点击元素
browser-use type "Hello World" # 输入文本
browser-use screenshot # 截图
browser-use close # 关闭浏览器
核心工作流
- 导航:
browser-use open <url>- 打开URL(如果需要则启动浏览器) - 检查:
browser-use state- 返回可点击元素及其索引 - 交互:使用状态中的索引进行交互(
browser-use click 5,browser-use input 3 "text") - 验证:
browser-use state或browser-use screenshot以确认操作 - 重复:浏览器在命令之间保持打开状态
浏览器模式
无头 vs 可见:默认情况下,browser-use 以无头模式运行(无可见窗口)。添加 --headed 标志以显示可见浏览器窗口。
browser-use --browser chromium open <url> # 无头Chromium(默认 - 无窗口)
browser-use --browser chromium --headed open <url> # 可见Chromium窗口
browser-use --browser real open <url> # 用户的实际Chrome(可见窗口,带登录会话)
browser-use --browser remote open <url> # 云浏览器(需要API密钥)
- chromium:快速、隔离,默认无头(无可见窗口)。使用
--headed显示窗口。 - real:使用您的实际Chrome浏览器(始终可见),带cookie、扩展、登录会话
- remote:云托管浏览器,支持代理(需要 BROWSER_USE_API_KEY)
命令
导航
browser-use open <url> # 导航到URL
browser-use back # 后退历史
browser-use scroll down # 向下滚动
browser-use scroll up # 向上滚动
页面状态
browser-use state # 获取URL、标题和可点击元素
browser-use screenshot # 截图(输出base64)
browser-use screenshot path.png # 保存截图到文件
browser-use screenshot --full path.png # 全页截图
交互(使用 browser-use state 中的索引)
browser-use click <index> # 点击元素
browser-use type "text" # 输入文本到聚焦元素
browser-use input <index> "text" # 点击元素,然后输入文本
browser-use keys "Enter" # 发送键盘按键
browser-use keys "Control+a" # 发送按键组合
browser-use select <index> "option" # 选择下拉选项
标签管理
browser-use switch <tab> # 按索引切换到标签
browser-use close-tab # 关闭当前标签
browser-use close-tab <tab> # 关闭特定标签
JavaScript 与数据
browser-use eval "document.title" # 执行JavaScript,返回结果
browser-use extract "all product prices" # 使用LLM提取数据(需要API密钥)
Cookie
browser-use cookies get # 获取所有cookie
browser-use cookies get --url <url> # 获取特定URL的cookie
browser-use cookies set <name> <value> # 设置cookie
browser-use cookies set name val --domain .example.com --secure --http-only
browser-use cookies clear # 清除所有cookie
browser-use cookies clear --url <url> # 清除特定URL的cookie
browser-use cookies export <file> # 导出所有cookie到JSON文件
browser-use cookies export <file> --url <url> # 导出特定URL的cookie
browser-use cookies import <file> # 从JSON文件导入cookie
等待条件
browser-use wait selector "h1" # 等待元素可见
browser-use wait selector ".loading" --state hidden # 等待元素消失
browser-use wait selector "#btn" --state attached # 等待元素在DOM中
browser-use wait text "Success" # 等待文本出现
browser-use wait selector "h1" --timeout 5000 # 自定义超时(毫秒)
额外交互
browser-use hover <index> # 悬停元素(触发CSS :hover)
browser-use dblclick <index> # 双击元素
browser-use rightclick <index> # 右键点击元素(上下文菜单)
信息检索
browser-use get title # 获取页面标题
browser-use get html # 获取完整页面HTML
browser-use get html --selector "h1" # 获取特定元素的HTML
browser-use get text <index> # 获取元素的文本内容
browser-use get value <index> # 获取输入/文本区域的值
browser-use get attributes <index> # 获取元素的所有属性
browser-use get bbox <index> # 获取边界框(x, y, 宽度, 高度)
Python 执行(持久会话)
browser-use python "x = 42" # 设置变量
browser-use python "print(x)" # 访问变量(输出:42)
browser-use python "print(browser.url)" # 访问浏览器对象
browser-use python --vars # 显示定义的变量
browser-use python --reset # 清除Python命名空间
browser-use python --file script.py # 执行Python文件
Python 会话在命令之间维护状态。browser 对象提供:
browser.url- 当前页面URLbrowser.title- 页面标题browser.goto(url)- 导航browser.click(index)- 点击元素browser.type(text)- 输入文本browser.screenshot(path)- 截图browser.scroll()- 滚动页面browser.html- 获取页面HTML
代理任务(需要API密钥)
browser-use run "填充联系表单测试数据" # 运行AI代理
browser-use run "提取所有产品价格" --max-steps 50
代理任务使用LLM自主完成复杂的浏览器任务。需要 BROWSER_USE_API_KEY 或配置的LLM API密钥(OPENAI_API_KEY, ANTHROPIC_API_KEY 等)。
会话管理
browser-use sessions # 列出活动会话
browser-use close # 关闭当前会话
browser-use close --all # 关闭所有会话
配置文件管理
browser-use profile list-local # 列出本地Chrome配置文件
在打开真实浏览器(--browser real)之前,始终询问用户是否要使用特定Chrome配置文件或无配置文件。使用 profile list-local 显示可用配置文件:
browser-use profile list-local
# 输出:Default: Person 1 (user@gmail.com)
# Profile 1: Work (work@company.com)
# 使用特定配置文件(有该配置文件的cookie/登录)
browser-use --browser real --profile "Profile 1" open https://gmail.com
# 无配置文件(新鲜浏览器,无现有登录)
browser-use --browser real open https://gmail.com
# 无头模式(无可见窗口)- 用于cookie导出
browser-use --browser real --profile "Default" cookies export /tmp/cookies.json
每个Chrome配置文件有自己的cookie、历史和登录会话。选择正确的配置文件决定网站是否预认证。
云配置文件
云配置文件在Browser-Use Cloud中存储浏览器状态(cookie),跨会话持久化。需要 BROWSER_USE_API_KEY。
browser-use profile list # 列出云配置文件
browser-use profile get <id> # 获取配置文件详情
browser-use profile update <id> --name "New" # 重命名配置文件
browser-use profile delete <id> # 删除配置文件
使用云配置文件与 --browser remote --profile <id>:
browser-use --browser remote --profile abc-123 open https://example.com
同步Cookie到云
⚠️ 重要:在将本地浏览器cookie同步到云之前,代理必须:
- 询问用户使用哪个本地Chrome配置文件(
browser-use profile list-local) - 询问同步哪些域名 - 不要默认同步完整配置文件
- 继续前确认
默认行为:为每个域名同步创建一个新的云配置文件。这确保cookie的清晰分离。用户可以根据需要添加cookie到现有配置文件。
步骤1:列出可用配置文件和cookie
# 列出本地Chrome配置文件
browser-use profile list-local
# → Default: Person 1 (user@gmail.com)
# → Profile 1: Work (work@company.com)
# 查看配置文件中的cookie
browser-use profile cookies "Default"
# → youtube.com: 23
# → google.com: 18
# → github.com: 2
步骤2:同步cookie(三个控制级别)
1. 域名特定同步(推荐默认)
browser-use profile sync --from "Default" --domain youtube.com
# 创建新云配置文件:"Chrome - Default (youtube.com)"
# 仅同步youtube.com的cookie
这是推荐方法 - 仅同步您需要的cookie。
2. 完整配置文件同步(谨慎使用)
browser-use profile sync --from "Default"
# 同步配置文件的所有cookie
⚠️ 警告:这同步所有cookie,包括敏感数据、追踪cookie、每个网站的会话令牌等。仅当用户明确需要整个浏览器状态时使用。
3. 细粒度控制(高级)
# 导出cookie到文件
browser-use --browser real --profile "Default" cookies export /tmp/cookies.json
# 手动编辑JSON以保留特定cookie
# 导入到云配置文件
browser-use --browser remote --profile <id> cookies import /tmp/cookies.json
适用于需要逐个cookie控制的用户。
步骤3:使用同步的配置文件
browser-use --browser remote --profile <id> open https://youtube.com
添加cookie到现有配置文件:
# 同步额外域名到现有配置文件
browser-use --browser real --profile "Default" cookies export /tmp/cookies.json
browser-use --browser remote --profile <existing-id> cookies import /tmp/cookies.json
管理配置文件:
browser-use profile update <id> --name "New Name" # 重命名
browser-use profile delete <id> # 删除
服务器控制
browser-use server status # 检查服务器是否运行
browser-use server stop # 停止服务器
browser-use server logs # 查看服务器日志
设置
browser-use install # 安装Chromium和系统依赖
全局选项
| 选项 | 描述 |
|---|---|
--session NAME |
使用命名会话(默认:“default”) |
--browser MODE |
浏览器模式:chromium, real, remote |
--headed |
显示浏览器窗口(chromium模式) |
--profile NAME |
Chrome配置文件(仅real模式) |
--json |
输出为JSON |
--api-key KEY |
覆盖API密钥 |
会话行为:所有无 --session 的命令使用相同的"default"会话。浏览器保持打开并在命令之间重用。使用 --session NAME 并行运行多个浏览器。
API密钥配置
某些功能(run,extract,--browser remote)需要API密钥。CLI按顺序检查这些位置:
--api-key命令行标志BROWSER_USE_API_KEY环境变量~/.config/browser-use/config.json文件
永久配置:
mkdir -p ~/.config/browser-use
echo '{"api_key": "your-key-here"}' > ~/.config/browser-use/config.json
示例
表单提交
browser-use open https://example.com/contact
browser-use state
# 显示:[0] 输入 "Name", [1] 输入 "Email", [2] 文本区域 "Message", [3] 按钮 "Submit"
browser-use input 0 "John Doe"
browser-use input 1 "john@example.com"
browser-use input 2 "Hello, this is a test message."
browser-use click 3
browser-use state # 验证成功
多会话工作流
browser-use --session work open https://work.example.com
browser-use --session personal open https://personal.example.com
browser-use --session work state # 检查工作会话
browser-use --session personal state # 检查个人会话
browser-use close --all # 关闭两个会话
数据提取与Python
browser-use open https://example.com/products
browser-use python "
products = []
for i in range(20):
browser.scroll('down')
browser.screenshot('products.png')
"
browser-use python "print(f'Captured {len(products)} products')"
使用真实浏览器(登录会话)
browser-use --browser real open https://gmail.com
# 使用您的实际Chrome,带现有登录会话
browser-use state # 已经登录!
提示
- 始终先运行
browser-use state查看可用元素及其索引 - 使用
--headed调试 查看浏览器操作 - 会话持久 - 浏览器在命令之间保持打开
- 使用
--json解析 程序化输出 - Python变量持久 跨
browser-use python命令在会话内 - 真实浏览器模式 保留您的登录会话和扩展
- CLI别名:
bu、browser和browseruse与browser-use工作相同
故障排除
浏览器无法启动?
browser-use install # 安装/重新安装Chromium
browser-use server stop # 停止任何卡住的服务器
browser-use --headed open <url> # 尝试可见窗口
元素未找到?
browser-use state # 检查当前元素
browser-use scroll down # 元素可能在下面
browser-use state # 再次检查
会话问题?
browser-use sessions # 检查活动会话
browser-use close --all # 清理状态
browser-use open <url> # 重新开始
清理
完成后始终关闭浏览器。 完成浏览器自动化后运行:
browser-use close