GitHub Browser-Use 的部署失败记录:失败了,失败了。。。。

发布于:2025-08-14 ⋅ 阅读:(14) ⋅ 点赞:(0)

一、项目背景与核心作用

browser-use 是一个开源的浏览器自动化工具,通过集成 AI 智能体(如 GPT、Claude、DeepSeek 等大型语言模型),实现用自然语言控制浏览器操作。其核心目标是 简化网页交互自动化,尤其适合复杂、多步骤的任务(如数据抓取、表单填写、跨网站操作等)。

与传统工具(如 Selenium)的对比优势
  1. AI 驱动决策:通过自然语言指令生成操作流程,无需手动编写脚本。
  2. 自我纠错能力:执行中自动检测错误并调整策略(如元素定位失败时尝试替代方案)。
  3. 多模态支持:结合 HTML 解析与视觉模型,处理动态页面更鲁棒。
  4. 跨任务持久化:支持保持浏览器会话状态,实现链式任务(如登录后连续操作)。
  5. 结构化网页理解:将网页DOM元素转换为简洁的文本索引,大幅降低LLM处理开销,提升操作准确性。

  6. 多场景支持:适用于电商比价、求职申请、监控报警等自动化任务。

  7. 与 MCP 客户端集成:支持 Model Context Protocol(MCP),可与 Claude Desktop、其他 MCP 客户端互联互通


二、核心功能

  1. 任务分解

    • 用户输入自然语言指令(如“查找伦敦到纽约的最便宜航班”)。
    • AI 模型(如 GPT-4)将指令分解为可执行的浏览器操作步骤(打开网站→输入搜索条件→提取结果)。
  2. 浏览器控制引擎

    • 基于 Playwright 实现浏览器自动化(支持 Chrome/Firefox 等)。
    • 自动解析页面元素(按钮、输入框),生成 XPath 或 CSS 选择器。
  3. 自我纠正机制

    • 若操作失败(如元素未加载),自动重试或调用备用方案。
    • 记录操作历史,便于回溯调试。
  4. 输出结构化数据
    结果可保存为 CSV、PDF 或直接推送到数据库。


三、工作原理

browser-use 通过解析浏览器的 userAgent 字符串和其它相关环境变量,结合内置的解析规则,提取浏览器名称、版本号和操作系统信息。部分库会融合特性检测(feature detection)以验证浏览器实际支持的功能,而不仅仅局限于 userAgent 的静态信息。

1. 系统架构
  1. Agent:接收任务描述,调用 LLM 生成执行指令。

  2. Controller:解析指令,映射到标准浏览器操作(点击、填表、抓取等)。

  3. 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 替换为 firefoxwebkit 更精细控制安装行为,适用于容器和安全环境
⚙️ 参数解析
  • 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]" 执行正常:

执行之后,还是用不了:

⚠️备注:

您可以使用其 Web UI 或桌面应用程序测试浏览器的使用情况。github上有web U1,和App的项目。

六、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 会更友好。


网站公告

今日签到

点亮在社区的每一天
去签到