什么是 browser-use?
今天要介绍的 browser-use 是一个让人眼前一亮的开源项目,已经在 GitHub 上收获了 80K+ Stars。简单来说,browser-use 是一个让 AI 能够像人类一样控制浏览器的库。你可以把它想象成一个桥梁,连接了大语言模型和真实的网页操作。
传统的浏览器自动化工具(如 Selenium、Puppeteer)需要我们预先编写好每一步的操作指令。而 browser-use 的独特之处在于,我们可以给 AI 一个高层次的目标,比如「去 Google 搜索最新的 AI 新闻,然后打开第一篇文章,把标题和摘要发给我」,AI 就会自主规划并执行一系列浏览器操作来达成这个目标。
这个概念非常强大,因为它将浏览器自动化提升到了一个全新的抽象层次。我们不再需要编写详细的操作步骤,只需要告诉 AI 我们想要什么结果,它会自己想办法完成。
工作原理深度解析
1. Playwright 为底层驱动
browser-use 的底层使用的是 Playwright,这是一个由 Microsoft 开发的浏览器自动化库。相比 Selenium,Playwright 更加现代、速度更快,而且对现代 Web 技术的支持更好。
Playwright 提供了稳定的浏览器控制能力,包括:
- 页面导航和加载
- 元素定位和交互
- 截图和录屏
- 网络请求拦截
- JavaScript 执行
browser-use 在 Playwright 的基础上封装了一层 AI 决策逻辑,让我们可以用自然语言来控制浏览器。
2. Agent 架构设计
browser-use 的核心是一个 Agent(代理)架构。这个 Agent 接收用户的高层次指令,然后通过以下循环来完成任务:
1. 观察当前网页状态
2. 分析目标与现状的差距
3. 决定下一步操作(如点击、输入、滚动等)
4. 执行操作
5. 检查是否达成目标,否则重复步骤 1-4
这个过程和我们人类使用浏览器的方式非常相似。我们看到页面、思考接下来要做什么、然后点击或输入、最后检查结果。browser-use 让 AI 模拟了这个完整的思考和执行过程。
3. 视觉理解能力
browser-use 还能「看到」网页的内容。它使用了计算机视觉技术来分析页面截图,让 AI 不仅能获取 HTML 内容,还能理解页面的视觉呈现。这对于处理动态加载的内容、单页面应用(SPA)等场景特别有用。
核心功能一览
browser-use 提供了丰富的功能,让我们能够构建各种浏览器自动化场景:
| 功能 | 描述 |
|---|---|
| 页面导航 | 自动打开 URL,支持等待页面加载 |
| 元素交互 | 点击、输入、选择等常见操作 |
| 内容提取 | 从网页中提取文本、链接、图片等 |
| 表格处理 | 识别和提取表格数据 |
| 表 | 自动填写和提交表单 |
| 单填写 | 截图 |
| 等待机制 | 智能等待元素出现或消失 |
| 滚动 | 自动滚动页面加载更多内容 |
快速开始指南
安装
首先,我们需要安装 browser-use:
pip install browser-use
同时需要安装 Playwright 及其依赖:
pip install playwright
playwright install chromium
基础使用示例
让我们来看一个最简单的例子:
from browser_use import Agent, BrowserConfig
from langchain_openai import ChatOpenAI
# 初始化语言模型
llm = ChatOpenAI(model="gpt-4")
# 配置浏览器
browser_config = BrowserConfig(
headless=False, # 设置为 True 可以无头模式运行
)
# 创建 Agent
agent = Agent(
llm=llm,
browser_config=browser_config,
)
# 给定任务
agent.run("打开 Google,搜索 'AI 最新新闻',然后打开第一个结果,把标题告诉我")
这就是一个完整的 AI 浏览器控制程序!agent 会自动打开浏览器、执行搜索、点击链接、提取信息。
处理更复杂的任务
browser-use 的强大之处在于处理复杂任务的能力:
from browser_use import Agent, BrowserConfig
from langchain_anthropic import ChatAnthropic
llm = ChatAnthropic(model="claude-sonnet-4-20250514")
agent = Agent(
llm=llm,
browser_config=BrowserConfig(headless=False),
)
# 更复杂的多步骤任务
task = """
1. 打开 https://github.com/trending
2. 等待页面加载完成
3. 找出今天最热门的 Python 项目
4. 点击进入该项目主页
5. 提取项目的描述、Stars 数量和主要语言
6. 把结果整理成表格格式返回
"""
agent.run(task)
browser-use 会自动处理页面加载等待、元素识别、点击导航等所有细节。
实际应用场景
1. 自动化测试
在软件测试领域,browser-use 可以大大简化端到端测试的编写:
# 自动化测试示例
test_task = """
1. 打开登录页面 http://localhost:3000/login
2. 输入用户名 'test@example.com' 和密码 'password123'
3. 点击登录按钮
4. 等待页面跳转到 Dashboard
5. 验证页面上显示 'Welcome, test@example.com'
6. 截图保存测试结果
"""
agent = Agent(llm=llm, browser_config=BrowserConfig(headless=True))
agent.run(test_task)
相比传统的测试框架,browser-use 的测试用例更加易读,而且 AI 能够处理页面变化带来的各种情况。
2. 数据采集
对于需要从多个网页收集数据的场景,browser-use 非常有用:
data_collection_task = """
1. 打开 Amazon 首页
2. 搜索 'wireless headphones'
3. 等待搜索结果加载
4. 提取前 10 个商品的名称和价格
5. 把结果保存为 JSON 格式
"""
agent = Agent(llm=llm)
result = agent.run(data_collection_task)
print(result)
AI 会自动处理翻页、滚动、加载更多等操作,完成数据采集。
3. 流程自动化
我们可以将各种重复性的浏览器操作自动化:
automation_task = """
1. 打开邮箱
2. 登录账号
3. 打开最新的一封邮件
4. 如果是重要邮件,标记为星标
5. 回复 '已收到,谢谢'
6. 标记为已读
7. 退出登录
"""
agent = Agent(llm=llm)
agent.run(automation_task)
4. 内容监控
定期检查某些网页的内容变化:
monitor_task = """
1. 打开 Product Hunt 首页
2. 找出今天的产品
3. 提取每个产品的名称和简介
4. 如果有 AI 相关的产品,记录下来
5. 发送总结报告
"""
# 可以设置为定时任务定期执行
schedule.every().day.at("09:00").do(lambda: agent.run(monitor_task))
与传统自动化的对比
传统的浏览器自动化(如 Selenium)和 browser-use 有很大的区别:
| 特性 | Selenium/Playwright | browser-use |
|---|---|---|
| 控制方式 | 编程式,需要详细步骤 | 声明式,只需描述目标 |
| 错误处理 | 需要手动编写 | AI 自动处理 |
| 页面变化 | 容易失败 | AI 能够适应 |
| 学习成本 | 较高 | 较低 |
| 灵活性 | 非常高 | 受限于 AI 能力 |
| 执行速度 | 快 | 相对较慢(AI 决策需要时间) |
简单来说:
- 传统自动化 像是编写剧本,每个场景都要精确安排
- browser-use 像是给 AI 一个任务描述,让它自己想办法完成
两者各有优劣:传统方式更适合稳定、可预测的流程;browser-use 则更适合复杂多变的场景。
进阶使用技巧
1. 自定义工具扩展
我们可以为 Agent 添加额外的工具:
from browser_use import Agent, BrowserConfig
from browser_use.tool import Tool
# 定义自定义工具
def save_to_file(content: str, filename: str):
"""保存内容到文件"""
with open(filename, 'w', encoding='utf-8') as f:
f.write(content)
return f"已保存到 {filename}"
# 创建带自定义工具的 Agent
agent = Agent(
llm=llm,
browser_config=BrowserConfig(),
tools=[
Tool(
name="save_to_file",
description="保存内容到文件",
function=save_to_file
)
]
)
2. 会话管理
browser-use 支持保存和恢复会话:
# 保存会话
agent.save_session("my_session.json")
# 恢复会话
agent.load_session("my_session.json")
这对于长时间运行的任务或者需要分步执行的操作非常有用。
3. 视觉反馈
我们可以让 Agent 在执行过程中截图:
config = BrowserConfig(
headless=False,
snapshot=True, # 启用快照功能
)
agent = Agent(llm=llm, browser_config=config)
# 执行任务时可以实时查看 AI 看到了什么
for step in agent.run_with_steps("搜索 AI 新闻"):
print(f"步骤 {step.number}: {step.action}")
if step.screenshot:
print(f"截图: {step.screenshot}")
4. 上下文保持
对于需要多轮交互的任务,我们可以保持上下文:
# 第一轮
agent.run("打开 Gmail,登录账号")
# 第二轮(在第一轮基础上继续)
agent.run("打开收件箱,找到最新的一封邮件")
# Agent 会记住之前的浏览器状态
注意事项和限制
1. 执行速度
由于 AI 需要时间来分析和决策,browser-use 的执行速度会比传统自动化慢。如果需要处理大量重复性任务,可能需要考虑其他方案。
2. 成本考量
每次任务执行都需要调用 LLM API,这会产生相应的费用。对于频繁使用的场景,需要考虑成本控制。
3. 可靠性
虽然 browser-use 能够处理很多复杂情况,但并非完美。有时 AI 可能会做出错误的决策,导致任务失败。对于关键业务场景,建议添加验证步骤。
4. 反爬虫机制
很多网站有反爬虫机制,browser-use 也可能受到影响。在使用时请务必遵守网站的使用条款。
5. 安全风险
和所有自动化工具一样,browser-use 也可能被用于不当目的。请确保只在获得授权的情况下使用自动化功能。
与其他工具的集成
browser-use 可以和其他 AI 工具无缝配合:
与 LangChain 集成
from langchain import LLMChain
from browser_use import Agent
# 创建 LangChain 链
chain = LLMChain(llm=llm, prompt=some_prompt)
# 结合 browser-use
agent = Agent(llm=llm)
result = agent.run("获取天气信息")
weather_info = chain.run(result)
与 MCP 协议结合
browser-use 可以作为 MCP Server,为 Claude Code 等 AI 助手提供浏览器控制能力:
from mcp.server import Server
from browser_use import Agent
# 启动 MCP Server
app = Server("browser-use")
app.run()
这样我们就可以在 Claude Code 中直接使用自然语言控制浏览器了!
总结
browser-use 为我们打开了一扇新的大门,让我们能够用自然语言来控制浏览器完成各种任务。80K+ Stars 的认可证明了它的价值和潜力。
对于需要构建浏览器自动化解决方案的开发者来说,browser-use 提供了一种全新的思路:与其编写详细的操作指令,不如给 AI 一个目标,让它自己想办法达成。
当然,作为一项相对较新的技术,browser-use 还有很大的发展空间。我们期待看到它在未来的迭代中变得更快、更智能、更可靠。
「技术的进步总是让看似复杂的事情变得简单。browser-use 正是这样的例子——它让浏览器自动化不再是程序员的专属技能,而是每个人都能使用的强大工具。」
相关文章
评论
加载中...
评论
加载中...