一、项目背景与核心作用
browser-use 是一个开源的浏览器自动化工具,通过集成 AI 智能体(如 GPT、Claude、DeepSeek 等大型语言模型),实现用自然语言控制浏览器操作。其核心目标是 简化网页交互自动化,尤其适合复杂、多步骤的任务(如数据抓取、表单填写、跨网站操作等)。
与传统工具(如 Selenium)的对比优势:
- AI 驱动决策:通过自然语言指令生成操作流程,无需手动编写脚本。
- 自我纠错能力:执行中自动检测错误并调整策略(如元素定位失败时尝试替代方案)。
- 多模态支持:结合 HTML 解析与视觉模型,处理动态页面更鲁棒。
- 跨任务持久化:支持保持浏览器会话状态,实现链式任务(如登录后连续操作)。
结构化网页理解:将网页DOM元素转换为简洁的文本索引,大幅降低LLM处理开销,提升操作准确性。
多场景支持:适用于电商比价、求职申请、监控报警等自动化任务。
与 MCP 客户端集成:支持 Model Context Protocol(MCP),可与 Claude Desktop、其他 MCP 客户端互联互通
二、核心功能
任务分解:
- 用户输入自然语言指令(如“查找伦敦到纽约的最便宜航班”)。
- AI 模型(如 GPT-4)将指令分解为可执行的浏览器操作步骤(打开网站→输入搜索条件→提取结果)。
浏览器控制引擎:
- 基于 Playwright 实现浏览器自动化(支持 Chrome/Firefox 等)。
- 自动解析页面元素(按钮、输入框),生成 XPath 或 CSS 选择器。
自我纠正机制:
- 若操作失败(如元素未加载),自动重试或调用备用方案。
- 记录操作历史,便于回溯调试。
输出结构化数据:
结果可保存为 CSV、PDF 或直接推送到数据库。
三、工作原理
browser-use 通过解析浏览器的 userAgent
字符串和其它相关环境变量,结合内置的解析规则,提取浏览器名称、版本号和操作系统信息。部分库会融合特性检测(feature detection)以验证浏览器实际支持的功能,而不仅仅局限于 userAgent
的静态信息。
1. 系统架构
Agent:接收任务描述,调用 LLM 生成执行指令。
Controller:解析指令,映射到标准浏览器操作(点击、填表、抓取等)。
Playwright:真正启动无头/有头浏览器,执行 Controller 下发的操作。
这种三层分离设计,使得业务逻辑、指令解析与浏览器执行相互隔离,便于扩展与调试。
┌────────────┐ ┌───────────┐ ┌──────────────┐
│ AI Agent ├─→──┤ Controller ├─→───┤ Playwright │
│ (LLM 调用) │ │ │ │ 浏览器实例 │
└────────────┘ └───────────┘ └──────────────┘
2. 工作流程
3. 关键技术
元素定位:通过XPath/CSS选择器映射LLM返回的索引到具体元素5。
状态检测:操作后对比DOM哈希值判断页面是否变化,决定是否重新规划步骤5。
错误处理:自动重试、回退、上下文重建,提高鲁棒性1。
四、部署
1. 项目安装
1)安装依赖
pip install browser-use
安装界面:
⚠️过程有点慢啊,有点慢。。。
2)安装浏览器支持
安装playwright依赖
npm i -D @playwright/test
安装浏览器驱动
npx playwright install # 安装浏览器驱动
安装界面:
🧩你也可以选择
只安装某个指定的浏览器:
命令 简介 默认行为 playwright install
安装 Playwright 所有支持的浏览器(Chromium、Firefox、WebKit) 自动下载三种浏览器到本地缓存 playwright install chromium --with-deps --no-shell
只安装 Chromium 浏览器,并添加依赖项,同时禁用 shell 执行。如果需要测试其他内核,可将 chromium
替换为firefox
或webkit
。更精细控制安装行为,适用于容器和安全环境 ⚙️ 参数解析
chromium
指定只安装 Chromium 浏览器,而不安装其他(例如 Firefox 或 WebKit)。
--with-deps
安装浏览器运行所需的系统依赖项(比如在 Linux 上的 libX11、glib2、fontconfig 等),防止浏览器运行失败。
--no-shell
禁用 shell 脚本执行,适合在受限环境中运行,比如 Docker 或 CI/CD,不会触发 shell 命令。🚀 应用场景建议
使用
playwright install
: 如果你希望快速安装 Playwright 所有浏览器,并且没有环境限制,是最简单直接的方式。使用
playwright install chromium --with-deps --no-shell
: 如果你只需 Chromium,或者在无 shell 支持的容器环境中运行,需要更稳定的依赖环境,就用这个更安全的方式。
2. Python代码测试
配置LLM密钥(.env
文件)
在python环境中创建.env文件,把相关API-key记载其中,以备用程序代码读取:
# .env 文件示例
Silicon_Cloud_API_KEY=sk-xxx
Base_URL=https://api.siliconflow.cn
Model=Qwen/Qwen2.5-72B-Instruct # 开源替代模型:cite[2]:cite[4]# 或使用OpenAI
OPENAI_API_KEY=sk-yyy
from browser_use import Agent
from langchain_openai import ChatOpenAI
import asyncio
import os
from dotenv import load_dotenv
from browser_use.llm import ChatOpenAI
load_dotenv()
async def main():
agent = Agent(
task="在百度搜索网站,查询mcp,并总结前五条信息",
llm = ChatOpenAI(model=os.getenv("Model"), api_key=os.getenv("Silicon_Cloud_API_KEY")),
use_vision=False, # 关闭截图识别以节省成本
install_extensions=False, # 添加此行禁用扩展下载
)
result = await agent.run()
print(result["output"]) # 输出抓取的数据
asyncio.run(main())
执行过程中,提示找不到:langchain-openai ,安装了一下:
pip install langchain-openai
然后执行的情况:
执行逻辑:
键信息提取
1. 1.
Agent初始化
- 启动了 browser-use agent 0.5.11 ,使用双模型架构:
- 基础模型: Qwen/Qwen2.5-72B-Instruct
- 提取模型: Qwen/Qwen2.5-72B-Instruct
- 支持文件系统访问功能
2. 2.
任务详情
- 执行任务: 在百度搜索网站,查询mcp,并总结前五条信息
3. 3.
浏览器启动
- 启动本地Chromium浏览器(通过Playwright)
- 配置: keep_alive=False ,用户数据目录位于 ~\.config\browseruse\profiles\default
4. 4.
扩展下载错误
```
WARNING [browser_use.utils] ⚠️
Failed to setup uBlock Origin
extension:
Failed to download extension:
<urlopen error [WinError 10060]
由于连接方在一段时间后没有正确答复或连
接的主机没有反应,连接尝试失败。>
```
- 错误原因 :uBlock Origin扩展下载超时(网络连接问题)
- 影响 :浏览器将缺少广告拦截功能,可能导致搜索结果中出现广告干扰
执行现象,就看到他反复打开这个简易的浏览器:
3、测试结果
我能力不够,驾驭不了。。。。
五、使用交互式 CLI 进行测试
官网给出了交互式的方式,我安装下面说明试了一下:
您还可以使用我们的交互式 CLI(类似于代码):browser-useclaude
pip install "browser-use[cli]"
browser-use
pip install "browser-use[cli]" 执行正常:
执行之后,还是用不了:
⚠️备注:
六、MCP 集成
官网还给了mcp的测试方式,我就不测了,太伤心了💔
{
"mcpServers": {
"browser-use": {
"command": "uvx",
"args": ["browser-use[cli]", "--mcp"],
"env": {
"OPENAI_API_KEY": "sk-..."
}
}
}
}
七、附录
1、官方参考文档
https://docs.browser-use.com/introduction
2、web-ui与browser-use对比
https://github.com/browser-use/web-ui与https://github.com/browser-use/browser-use 这两个项目的对比:
🧠 项目定位对比
项目 | 主要功能 | 使用场景 |
---|---|---|
browser-use |
提供 AI 控制浏览器的核心库 | 用于开发者构建自动化任务、集成 AI agent |
web-ui |
提供图形化界面运行 AI agent | 面向用户交互、可视化操作 AI 浏览器代理 |
🔗 相通之处
共同目标:都旨在让 AI 能够控制浏览器,实现网页自动化。
技术基础:都使用 Python 和 Playwright 实现浏览器控制。
支持多种 LLM:如 OpenAI、Anthropic、DeepSeek 等。
可通过
.env
配置 API 密钥与环境参数。支持 MCP 协议:可与 Claude Desktop 等工具集成。
🚀 主要区别
方面 | browser-use |
web-ui |
---|---|---|
核心定位 | 库级工具,供开发者调用 | 图形界面,供用户直接操作 |
使用方式 | 通过 Python 编程调用 Agent | 通过 Web 页面交互控制 Agent |
安装方式 | pip 安装库,编写代码运行 | 本地或 Docker 启动 Web 服务 |
用户体验 | 偏向开发者,需编程能力 | 面向普通用户,无需编程 |
浏览器控制 | 支持 CLI、MCP、代码调用 | 支持自定义浏览器路径、持久会话 |
视觉呈现 | 无界面,仅代码运行 | 提供 WebUI 和 VNC 浏览器画面 |
如果你是开发者,想要构建自己的 AI 浏览器代理系统,browser-use
是更底层的选择;如果你希望快速体验或部署一个可视化的 AI 浏览器助手,web-ui
会更友好。