Browser Use 是一个开源的 Python 库,让大语言模型(LLM)直接操控真实浏览器完成网页任务——搜索、填表、翻页、抓数据、点按钮,全部由模型自主决策,不需要人工编写选择器或操作脚本。它在 2024 年 7 月开源后迅速成为 GitHub 增长最快的 AI 项目之一,爆款 Agent 产品 Manus 的创始团队也在社区回应中确认,其浏览器自动化能力基于开源方案(含 browser-use)构建。对 AI 从业者来说,这是把 LLM 从“对话生成”推向“真实执行”的关键基础设施。本篇按“速览 → 安装 → 上手 → 核心能力 → 生产部署 → 选型对比”的顺序展开,附带版本演进、常见误区与面试题,读完即可跑通第一个浏览器 Agent。

岗位关联

掌握 Browser Use,等于掌握“LLM + 真实浏览器”这条最直接的 Agent 落地路径——无论做 RAG 数据采集、网页操作自动化还是产品级 Agent,它都是当前生态成熟度最高的开源选择之一。

目录
  1. 为什么需要 Browser Use:从“脚本自动化”到“意图驱动”
  2. 安装与环境配置:3 步就绪
  3. 快速上手:5 分钟跑通第一个网页任务
  4. 核心能力详解:4 大支柱
  5. 生产部署与监控:从上线到运维
  6. 版本迭代
  7. AI 应用场景
  8. 常见误区
  9. 面试题
  10. 参考来源
工具类型
开源 LLM 浏览器 Agent 框架(Python 库)
开发商
browser-use 开源社区(Gregor Žunič、Magnus Müller 发起)
开源协议
MIT(可商用)
GitHub Stars
无
主要语言
Python(≥3.11)
当前版本
0.6.x(2025-03 发布,API 高频迭代,以 PyPI 为准)
安装方式
pip install browser-use
上手难度
★★★☆☆(需 Python 基础与 LLM API Key)
适合人群
AI 应用工程师、RAG 与数据采集团队、Agent 产品开发者
同类工具
Skyvern、Playwright MCP Server、Stagehand
托管服务
无

速览卡是工具类内容的固定首屏模块:30 秒判断「这工具是什么、能不能商用、适不适合我」。

为什么需要 Browser Use:从“脚本自动化”到“意图驱动”

传统浏览器自动化(Selenium、Puppeteer、Playwright 裸用)要求开发者手工编写 CSS 选择器和操作步骤。页面一改版,选择器失效脚本就崩;遇到没有稳定 class 的动态页面,维护成本更高。这类工具解决的是“已知路径的重复执行”,对“没见过的新页面”无能为力。每次抓取需求都要重写一轮脚本,周期以天计。

Browser Use 换了一条路:先将实时渲染后的网页 DOM(文档对象模型,即网页的结构化表示)提炼成紧凑的文本,并为每个可交互元素编上号,交给 LLM 阅读;LLM 基于用户一句自然语言任务自主决定“点哪个、填什么、等多久”,框架再把决策翻译成 Playwright(微软开源的浏览器自动化库)操作执行,如此循环直到任务完成。开发者只写任务描述,不写操作脚本,需求变更从“改代码”变成“改一句话”。

与 Skyvern、Playwright MCP 等竞品相比,Browser Use 的取舍更偏“开发框架”:纯 Python、API 简洁、模型可插拔,方便深度定制。Manus 团队公开确认其浏览器自动化基于这类开源方案构建,说明这套架构经受过产品级验证。

安装与环境配置:3 步就绪

Python 版本要求 ≥3.11,且必须先安装一个 LLM 接入库(这里用官方快速开始同款组合 langchain-openai)。browser-use 本身不含任何模型,模型 API Key 是硬前提。

验证命令输出版本号即安装成功。模型支持面很广:OpenAI、Anthropic、Google Gemini、Azure、DeepSeek、Moonshot 以及本地 Ollama 均可接入,统一通过 LangChain 或 LiteLLM 封装。

bash10 行
# 1. 安装 Python 包pip install browser-use langchain-openai playwright # 2. 安装浏览器内核(Linux 服务器追加系统依赖)playwright install chromium# playwright install-deps chromium    # 仅 Linux 无桌面环境需要,需 sudo # 3. 配置模型 Key 并验证安装export OPENAI_API_KEY=sk-xxx    # 也可用 ANTHROPIC_API_KEY / GOOGLE_API_KEY 等python -c "import browser_use; print(browser_use.__version__)"

快速上手:5 分钟跑通第一个网页任务

核心思路:创建 Agent 实例,填入一句自然语言任务与 LLM 实例,调用 run() 即开始执行。第一次运行会自动弹出 Chromium 窗口,可以看到模型逐步移动鼠标点击页面。

1. 新建 demo.py,粘贴下方代码,任务可替换为任意一句话指令(如“搜索 browser-use 并返回第一条结果链接”);

2. 终端执行 python demo.py,等待浏览器自动操作;

3. 运行结束后 result.final_result() 返回模型的最终总结,agent.history 保存每一步的 DOM 状态、动作与截图,可逐条回放。

进阶技巧:服务器无桌面环境时把 headless 设为 True;想复用本地 Chrome 登录态,传 BrowserConfig(chrome_instance_path="/Applications/Google Chrome.app/Contents/MacOS/Google Chrome")。对复杂页面建议开启视觉模式(use_vision=True),模型可同时参考截图,减少 DOM 文本提取的信息丢失。

python17 行
import asynciofrom browser_use import Agent, Browser, BrowserConfigfrom langchain_openai import ChatOpenAI async def main():    browser = Browser(config=BrowserConfig(headless=False))    agent = Agent(        task="打开 Hacker News 首页,返回排名第一的新闻标题和分数",        llm=ChatOpenAI(model="gpt-4o", temperature=0),        browser=browser,        max_steps=20,          # 限制最大步数,控制 token 成本    )    result = await agent.run()    print(result.final_result())    await browser.close()      # 任务结束释放浏览器资源 asyncio.run(main())

核心能力详解:4 大支柱

支柱一·可交互 DOM 提取引擎。把完整 HTML 压缩成带高亮编号的文本表示(元素树 + 焦点与可见性信息),模型只需读“编号列表”(如 button[39])就能定位可操作元素,相比整页截图或原文传输大幅节省 token(大模型的计费单位)。提取基于实时渲染后的 DOM,对 SPA 动态页面同样有效;视觉模式下叠加截图形成双通道,兜底复杂布局。

支柱二·Agent 任务循环。任务解析 → 循环(观察 DOM/截图 → LLM 决策动作 → Playwright 执行)→ 校验完成。支持 max_steps 步数上限、规划间隔(每 N 步让模型反思一次当前进度)、输出校验与失败重试。结果对象有两条出口:final_result() 返回自然语言总结;配合 output_format 参数(Pydantic 数据校验模型定义目标结构)时,result.parsed 直接返回结构化对象。

支柱三·自定义 Action 扩展(Controller)。用 @controller.action("动作描述") 装饰器即可把任意 Python 函数注册为 Agent 可调用的“工具”,函数可注入 browser、page 上下文参数,支持参数校验。例如注册“打开内部系统”“读取当前 URL”等能力,让 Agent 突破框架内置动作的限制,操作企业内网或专属工具。

支柱四·会话持久化与多标签页。BrowserSession 保存 cookies、localStorage 与历史记录,重启浏览器后登录态不丢;create_new_tab 与 switch_tab 支持跨标签页协作(如一边查资料一边填表)。生产级配套还有代理配置(BrowserConfig(proxy=...))与结构化输出,覆盖多数真实业务场景。

生产部署与监控:从上线到运维

容器化运行。官方 Docker 方案基于 python:3.11 镜像安装 chromium 与系统库,关键命令是 playwright install chromium --with-deps(自动装齐 Linux 渲染依赖)。服务内每个任务使用独立 Browser 实例,任务结束显式 await browser.close(),防止长驻进程内存泄漏。浏览器进程数量大时用固定的实例池并设置并发上限。

云端托管。官方文档提供 Modal、Railway 的部署指南(示例包含 Playwright 冷启动处理与无头模式配置)。不想自运维浏览器池的团队,可直接调用官方 Cloud API 托管服务:上传任务与模型配置,由托管端执行,本地只保留 HTTP 网关。

可观测性。agent.history 记录每一步的 HistoryEntry(DOM 状态快照、动作、截图、token 消耗);调用 agent.status() 输出任务概览;日志层面用 logging.basicConfig(level=logging.INFO) 打开 browser-use 内部日志。建议自建审计结构:每个任务记录任务 ID、总步数、token 成本、成功标志,落库用于成本核算与失败回溯。

<p class="para-label">避坑清单:</p>

<ul class=“dash-list“><li>任务卡死先查模型能力——browser-use 强依赖模型的工具调用(tool calling)格式输出,部分小模型返回非法 JSON 导致循环失败,需换支持 tool calling 的模型</li><li>验证码与 Cloudflare 无法自动绕过,browser-use 不是反爬工具——在任务描述中明确”遇到验证码即报告失败”,避免无限重试烧 token</li><li>不要混用系统 Chrome 与 Playwright 自带 Chromium——指定 chrome_instance_path 后渲染结果与无头模式可能有差异,测试与生产必须保持同一浏览器内核</li><li>登录态不会自动跨任务保存——每次任务默认新建浏览器上下文,批量任务需显式启用 BrowserSession 持久化或指定 user_data_dir</li><li>不设 max_steps 会导致成本失控——复杂页面每步传输数千 token,务必设置步数上限并给失败路径设计兜底提示</li><li>并发任务共用一个 Browser 实例会串会话——每个 Agent 独立 Browser,必要时自己做实例池管理</li></ul>

维度Browser UseSkyvernPlaywright MCP ServerStagehand
定位LLM 浏览器 Agent 框架视觉驱动自动化平台MCP 协议浏览器工具AI 浏览器编排 SDK
编排范式DOM 文本提取 + LLM 决策循环截图视觉 + LLM 计划/执行工具调用(MCP)Agent 循环(Playwright 封装)
类型约束Python(async)Python + SaaS API任意 MCP 客户端Node.js / TypeScript
学习曲线中:半天可跑通中:偏对抗反爬场景低:MCP 客户端即插即用中:TS 工程化
生态集成OpenAI/Anthropic/Gemini/DeepSeek/Ollama 等内置 + 自定义模型适配 Claude/Cursor 等 MCP 客户端深度绑定 Browserbase
生产部署pip/Docker/Modal/Railway/官方云 API自托管 + 官方云本地 server 进程Browserbase 托管
LicenseMITAGPL-3.0MITMIT
适合谁Python 团队深度定制 Agent强验证码/抗反爬需求已用 MCP 的 LLM 工具链Node 生态快速交付

选型建议:Python 团队需要深度控制 LLM 决策与自定义工具,选 Browser Use;页面验证码与反爬机制严重、追求低维护,优先 Skyvern;已在 Claude Desktop / Cursor 等 MCP 客户端工作流中,Playwright MCP 集成成本最低;Node 技术栈且接受云绑定,选 Stagehand。

版本迭代

browser-use 从 2024 年 7 月开源到 2025 年初爆发,主线是“让 LLM 更高效、更稳定地读懂浏览器”:v0.1-v0.3 打稳 DOM 提取与任务循环的地基,v0.4 引入多维 DOM 表示与结构化输出,v0.5 起解耦 LangChain 强制依赖并重构 API,v0.6 进一步简化调用方式。API 仍在高频演进,生产项目务必锁定版本号。(截至训练数据,可能已有更新版本)

版本时间变化提升
v0.1.02024-07项目开源基于 Playwright 的 DOM 文本提取 + LLM 决策闭环落地
v0.2.02024-09架构重构引入 Agent/Messenger/ChatClient 分层,扩展多模型支持
v0.3.02024-10稳定性优化重构元素定位与滚动逻辑,修复大量点击/选择问题
v0.4.02024-12多维 DOM 提取上线交互式多维 DOM 表示,新增结构化输出与视觉增强
v0.5.02025-01依赖与 API 优化解耦 LangChain 强制依赖,支持 LiteLLM 直连,DOM 提取提速
v0.6.02025-03API 简化简化 Agent 构造参数,移除 Persona/TaskManager,强化自定义 Action 注入
结论

该工具尚未发布跨版本的公开基准评测分数(社区有基于 WebVoyager 等测试集的实验,但非官方发布口径)。选型建议:新项目直接锁定 0.6.x 系列,不要跟随 main 分支;从旧版本迁移需对照官方 Release Notes 调整 Agent 构造参数与 Controller 注入方式。项目热度层面,2025 年初其 GitHub Stars 月增数度登顶榜单,社区示例与第三方教程数量增长快,遇到问题检索成本低。

AI 应用场景

场景 1:RAG 数据采集管道

阶段:数据采集 / RAG 管道构建

解决的问题:传统爬虫对动态渲染页(JS 加载列表)与登录墙页面束手无策,选择器维护成本高。Browser Use 用自然语言描述目标数据,模型自主翻页、点击“加载更多”、提取字段,配 output_format 直接产出符合 Pydantic 模型的 JSON,落入向量库即可供 RAG 检索。

具体案例:官方示例中,Agent 可在单个任务里完成“打开 Hacker News → 提取榜单条目 → 输出 JSON”全流程;实践中一条抓取任务的开发从手写爬虫的半天缩短到十分钟级 Prompt 编写(不含调优),单任务耗时通常数十秒到数分钟,取决于页面复杂度与模型响应速度。

场景 2:Web 端到端操作的 Agent 化

阶段:Agent 编排 / 工作流自动化

解决的问题:CRM 录入、订单处理、报表导出等跨系统重复操作,传统 RPA 脚本脆弱、改版即崩。用自定义 Action 把内部系统接口封装为 Agent 可调用工具,模型负责规划步骤与异常兜底,业务变更只改 Prompt。

具体案例:官方示例已覆盖 GitHub 操作(创建 issue、读取仓库信息);社区落地方案包括“每日自动登录后台更新价格并导出报表”类任务,单条流水线替代分钟级人工重复劳动,且需求变更只需改任务描述而非重写脚本。需要多系统配合时,多标签页与会话持久化让 Agent 保持登录态连续操作。

场景 3:Agent 产品的基础设施

阶段:Agent 底座 / 产品交付

解决的问题:通用 Agent 需要自主操作浏览器完成任务(查资料、订票、比价),从零实现“浏览器控制 + LLM 决策 + 会话管理 + 可观测性”成本极高。browser-use 提供了可二次开发的完整闭环,团队只需在其上叠加任务规划器、沙箱与鉴权。

具体案例:Manus 创始团队在社区回应中确认其浏览器自动化基于开源方案(含 browser-use)构建,用于执行需要真实浏览器环境的任务;同类团队可直接复用它作为执行层,把精力放在上层任务编排与用户体验。托管版 Cloud API 则适合中小团队免运维接入。

常见误区

误区“我把 browser-use 用 pip 装好了,结果运行报错没有 API key,它不能内置一个免费模型吗?”

正解browser-use 本身不含任何模型,它只是 Agent 执行骨架,必须自行接入 LLM——OpenAI、Anthropic、Gemini、DeepSeek、Ollama 本地模型均可,官方文档明确要求配置 API key 或本地模型端点,不配置无法启动任务。

为何常见:名字看起来像开箱即用的插件,很多人忽略了它是“框架”而非“模型服务”,把模型与执行层混为一谈。

误区“它能像人一样点鼠标操作浏览器,那 Cloudflare 和滑块验证码肯定也能过吧?”

正解不能保证。虽然社区有零散尝试,但官方定位不包含反爬对抗;遇到强验证码可能循环重试或直接失败。生产环境应在任务描述中写明“遇到验证码即报告失败”,并配合代理切换与人工兜底。

为何常见:演示视频大多跑在无防护页面上,容易产生“万能操作”的错觉,忽略了反爬是一套持续对抗体系。

误区“DOM 提取又省 token 又稳定,我全部用文本模式就好了。”

正解大量现代站点在文本模式下不可见或不可操作——Canvas 渲染的内容、复杂 Shadow DOM 嵌套、纯图形验证按钮,DOM 里没有可读文本。官方支持视觉模式(多模态模型看截图)正是为此兜底,建议按任务类型混合使用。

为何常见:默认文本模式成本低、跑得快,体验很好,但边界问题只有在真实复杂页面上才会暴露。

误区“我的任务跑挂了,说明 browser-use 不稳定、不成熟。”

正解多数失败来自三个可修正因素:模型能力不足(不遵守工具调用格式)、页面结构极端(无文本 DOM)、任务描述不精确。优化顺序是换更强模型 → 拆分子任务 → 补自定义 Action → 开启视觉模式,大部分问题可解决,而非换框架。

为何常见:把“模型决策错误”与“执行层故障”混为一谈,框架稳定 ≠ 模型永远选对动作。

误区“官方 demo 直接部署到服务器,开 headless 跑起来就完事了。”

正解demo 未处理超时、重试、成本上限与并发隔离。生产必须设置 max_steps、每任务独立 Browser 实例、会话持久化策略、结构化日志与 token 成本审计,否则线上会出现死循环、内存泄漏与账单超支。

为何常见:快速上手的 demo 刻意隐藏了工程化细节,从“能跑”到“稳定跑”之间隔着完整的运维设计。

面试题

Q1. browser-use 底层依赖哪个浏览器自动化库?

单选题 · easy

  • A.基于 Selenium WebDriver 协议
  • B.基于 Playwright 浏览器控制← 正确答案
  • C.基于 Puppeteer 控制 Chrome
  • D.基于 Cypress 端到端框架

答案:B。browser-use 基于 Playwright 实现浏览器控制(点击、输入、标签页切换),自身负责 DOM 文本提取与 LLM 决策循环。Selenium、Puppeteer 是其他自动化方案,Cypress 面向前端测试,均不在其依赖链中。

Q2. 用 pip 安装 browser-use 之前,还应安装哪类组件?

单选题 · easy

  • A.安装 Node.js 运行时(v18)
  • B.安装 LLM 接入库(langchain-openai)← 正确答案
  • C.部署 Redis 缓存服务实例
  • D.安装 Docker 引擎运行时

答案:B。browser-use 通过 LangChain 或 LiteLLM 接入各类模型,官方快速开始命令为 pip install browser-use langchain-openai playwright。Node.js、Redis、Docker 均不是其运行依赖。

Q3. 默认文本模式下,browser-use 如何让 LLM“看懂”网页?

单选题 · mid

  • A.把完整 HTML 源码发给模型
  • B.DOM 提炼为带编号紧凑文本← 正确答案
  • C.截图后做 OCR 识别文本
  • D.输出整棵无障碍树节点

答案:B。核心是“可交互 DOM 提取”:把实时渲染后的 DOM 压缩成紧凑文本,并为可交互元素编号(如 button[39]),模型据此定位操作目标。完整 HTML 超出上下文且噪声大;OCR 只是视觉模式的补充;无障碍树也只是输入维度之一,而非完整方案。

Q4. 需要 Agent 返回结构化 JSON 数据时,应使用哪个参数?

单选题 · mid

  • A.output_format(Pydantic 模型)← 正确答案
  • B.response_format(OpenAPI 风格)
  • C.json_schema(JSON Schema 定义)
  • D.format_type(返回格式枚举)

答案:A。output_format 接收 Pydantic 模型作为目标结构,运行结束后通过 result.parsed 拿到结构化对象,这是官方文档明确的支持方式。response_format 是部分模型 API 的概念,不是 browser-use 的 Agent 参数。

Q5. 自定义 Action 在 browser-use 中的推荐实现方式?

单选题 · mid

  • A.直接修改源码中的 Agent 类方法
  • B.用 @controller.action 装饰器注册← 正确答案
  • C.通过正则表达式匹配任务文本来拦截
  • D.编写独立 Playwright 脚本混跑

答案:B。官方扩展机制是 from browser_use import Controller,用 @controller.action("动作描述") 把任意 Python 函数注册为 Agent 可调用工具,支持 Pydantic 参数校验与 browser/page 上下文注入。改源码、正则拦截或混跑脚本都不是官方路径。

Q6. 下列哪些属于 browser-use 的官方能力?

多选题 · easy

  • A.多标签页管理与切换能力← 正确答案
  • B.会话状态持久化(cookies)← 正确答案
  • C.接入本地 Ollama 模型← 正确答案
  • D.直接绕过 Cloudflare 验证码

答案:ABC。多标签页切换、BrowserSession 持久化(cookies/localStorage)是官方特性;模型层通过 LiteLLM 支持 Ollama 本地模型。绕过反爬并非官方承诺能力,遇到强验证码会卡住或失败,选 D 是对工具边界的误解。

Q7. 生产环境部署 browser-use 时,以下做法正确的有?

多选题 · mid

  • A.每任务独立 Browser 实例并关闭← 正确答案
  • B.headless 模式配 Xvfb 虚拟显示
  • C.设置 max_steps 控制任务成本← 正确答案
  • D.多任务共享一个 Browser 实例

答案:AC。独立实例 + 显式 close() 防止内存泄漏与会话串扰(A 对);max_steps 是官方参数,限制步数即限制 token 成本(C 对)。headless 模式本身不需要显示服务,Xvfb 是给“无显示环境跑有头模式”用的;共享 Browser 实例会导致页面与登录态相互干扰(D 错)。

Q8. browser-use 支持接入哪些大模型提供商?

多选题 · mid

  • A.OpenAI(GPT-4o、GPT-4.1)← 正确答案
  • B.Anthropic(Claude 3.7 等)← 正确答案
  • C.Google Gemini(2.0 等)← 正确答案
  • D.以上均不支持,仅限自家模型

答案:ABC。官方文档列出 OpenAI、Anthropic、Google Gemini、Azure、DeepSeek、Moonshot、Ollama 等主流接入方式,统一由 LangChain/LiteLLM 封装。D 与事实完全相反。选择模型时注意需支持工具调用(tool calling),否则动作循环无法执行。

Q9. browser-use 在无显示器的 Linux 服务器上跑“有头模式”的正确方案?

单选题 · hard

  • A.headless 模式直接运行即可
  • B.用 Xvfb 虚拟显示后启动进程← 正确答案
  • C.使用 Docker Desktop 模拟显示
  • D.关闭 GPU 加速即可正常显示

答案:B。服务器没有 X Server,有头模式浏览器找不到显示设备;标准做法是 Xvfb 虚拟显示,如 xvfb-run python app.py。headless 是“不要显示”而不是“有头模式”;Docker Desktop 面向桌面容器,不解决 Linux X display 问题。

Q10. 关于 Manus 与 browser-use 的关系,正确的是?

单选题 · hard

  • A.Manus 是 browser-use 官方商业版
  • B.Manus 确认基于开源方案构建← 正确答案
  • C.browser-use 是 Manus 私有 SDK
  • D.两者完全无关,只是同名巧合

答案:B。Manus 上线后,其创始团队在社区回应中确认浏览器自动化能力基于开源方案(含 browser-use)构建。browser-use 本身保持 MIT 开源、独立演进,既不是 Manus 的商业版,也不是其私有 SDK——这是“开源组件被商业产品采用”的典型案例。

参考来源