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

一、项目背景与核心作用

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 ChatOpenAIload_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-useweb-ui
核心定位库级工具,供开发者调用图形界面,供用户直接操作
使用方式通过 Python 编程调用 Agent通过 Web 页面交互控制 Agent
安装方式pip 安装库,编写代码运行本地或 Docker 启动 Web 服务
用户体验偏向开发者,需编程能力面向普通用户,无需编程
浏览器控制支持 CLI、MCP、代码调用支持自定义浏览器路径、持久会话
视觉呈现无界面,仅代码运行提供 WebUI 和 VNC 浏览器画面

如果你是开发者,想要构建自己的 AI 浏览器代理系统,browser-use 是更底层的选择;如果你希望快速体验或部署一个可视化的 AI 浏览器助手,web-ui 会更友好。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/web/92946.shtml
繁体地址,请注明出处:http://hk.pswp.cn/web/92946.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

调用springboot接口返回403,问题定位及总结

背景在一次与前端联调后端接口时前端返回接口返回状态码是403&#xff0c;前端返回说已经带了请求token。排查 查看后端控制台没有出现任何错误信息。自己postman手动调用接口&#xff0c;发现接口正常。仔细核对前端调用接口与postman请求的区别&#xff0c;没有发现任何问题。…

布隆过滤器原理分析、应用场景、与redis使用案例

一、核心结构与工作原理1.1 数据结构布隆过滤器由以下两部分组成&#xff1a;位数组&#xff08;Bit Array&#xff09;&#xff1a;一个长度为 m 的二进制数组&#xff0c;初始所有位为0。哈希函数组&#xff1a;k 个独立的哈希函数&#xff0c;每个函数将输入元素映射到位数组…

异步并发×编译性能:Dart爬虫的实战突围

Dart凭借其高效的异步并发模型、AOT编译性能和现代化的语法&#xff0c;正成为爬虫开发中值得关注的新选择。特别是对于Flutter应用开发者而言&#xff0c;Dart提供了一种"全栈同语言"的独特优势。 本文我将通过实战代码展示如何利用Dart的核心优势——包括基于Futur…

Day 8: 深度学习综合实战与进阶技术 - 从优化到部署的完整流程

Day 8: 深度学习综合实战与进阶技术 - 从优化到部署的完整流程 🎯 学习目标: 掌握深度学习模型优化、调试、迁移学习等工业级技能,能够构建高性能的深度学习应用 📚 核心概念概览 核心概念解释: 模型优化: 通过正则化、学习率调度等技术提升模型性能和泛化能力 为什么需…

特征工程--机器学习

1、特征工程1.1 概念特征工程&#xff08;Feature Engineering&#xff09;是机器学习项目中非常关键的一步&#xff0c;它是指通过领域知识来选择、创建或修改能够使机器学习模型更好地工作的特征&#xff08;即输入变量&#xff09;。特征工程的目标是提高模型的性能&#xf…

支持任意 MCP 协议的客户端

支持任意 MCP 协议的客户端&#xff08;如&#xff1a;Cursor、Claude、Cline&#xff09;可方便使用高德地图 MCP server。目前支持Streamable HTTP, SSE 和 Node.js I/O 三种接入方式(推荐用户使用Streamable HTTP)。 快速接入-MCP Server|高德地图API

【线性代数】目录

【线性代数】线性方程组与矩阵——&#xff08;1&#xff09;线性方程组与矩阵初步【线性代数】线性方程组与矩阵——行列式【线性代数】线性方程组与矩阵——&#xff08;2&#xff09;矩阵与线性方程组的解【线性代数】线性方程组与矩阵——&#xff08;3&#xff09;线性方程…

豆包新模型+PromptPilot:AI应用开发全流程实战指南

> 当深度推理的豆包大模型遇上智能提示词引擎,传统AI开发中**70%的调试时间被压缩至几分钟**,一场从“手工调参”到“智能优化”的开发范式革命正在发生。 ## 一、技术架构解析:双引擎驱动智能进化 ### 1.1 豆包新模型的技术突破 2025年火山引擎推出的**豆包1.6系列模型…

Day13 Vue工程化

1.介绍&环境准备 npm两项全局配置2.项目介绍&开发流程 npm create vue3.3.4 / install / run dev3.API风格 setup ref() onMounted()两种风格选项式API写法转为组合式API写法在根组件App.vue中引用写好的xxx.vue4.案例1.引入组件2.完整代码<script></script&g…

Linux中配置DNS

Linux中配置DNS服务 一、什么是DNS DNS (Domain Name System) 是域名服务 &#xff0c;它是由解析器和域名服务器组成的。 域名服务器是指保存有该网络中所有主机的域名和对应IP地址&#xff0c; 并具有将域名转换为IP地址功能的服务器。&#xff08;将网址解析成IP&#xff…

Redis应⽤-缓存与分布式锁

&#x1f308; 个人主页&#xff1a;Zfox_ &#x1f525; 系列专栏&#xff1a;Redis &#x1f525; 什么是缓存 缓存(cache)是计算机中的⼀个经典的概念.在很多场景中都会涉及到 核⼼思路就是把⼀些常⽤的数据放到触⼿可及 (访问速度更快) 的地⽅,⽅便随时读取 对于计算机…

TCP、HTTP/HTTPS、FTP 解析 + 面试回答参考

TCP、HTTP/HTTPS、FTP 解析 面试回答参考 在后端开发、网络编程以及运维面试中&#xff0c;TCP 协议、HTTP/HTTPS、FTP 是高频考点。本文将从原理、流程、面试常问问题出发&#xff0c;帮你一次性搞懂这些核心知识点。一、TCP 三次握手 1. 作用 建立可靠连接&#xff0c;确保双…

ATF(TF-A)安全通告 TFV-13(CVE-2024-7881)

安全之安全(security)博客目录导读 ATF(TF-A)安全通告汇总 目录 一、漏洞描述 二、缓解措施与建议 三、补丁修改 关于该漏洞的具体细节,可参考【CVE-2024-7881】ARM CPU漏洞安全通告】 Title 非特权上下文可以触发数据相关的预取引擎,从而获取特权位置的内容,并将这些…

Pytorch深度学习框架实战教程-番外篇02-Pytorch池化层概念定义、工作原理和作用

相关文章 视频教程 《Pytorch深度学习框架实战教程01》《视频教程》 《Pytorch深度学习框架实战教程02&#xff1a;开发环境部署》《视频教程》 《Pytorch深度学习框架实战教程03&#xff1a;Tensor 的创建、属性、操作与转换详解》《视频教程》 《Pytorch深度学习框架实战…

常见通信协议详解:TCP、UDP、HTTP/HTTPS、WebSocket 与 GRPC

常见通信协议详解&#xff1a;TCP、UDP、HTTP/HTTPS、WebSocket 与 RPC 在现代网络通信中&#xff0c;各种协议扮演着至关重要的角色&#xff0c;它们决定了数据如何在网络中传输、控制其可靠性、实时性与适用场景。对于开发者而言&#xff0c;理解这些常见的通信协议&#xff…

部署一个自己的音乐播放器教程

以下以部署 YesPlayMusic 为例&#xff0c;介绍两种常见的部署方法&#xff0c;一种是通过 Node.js 和 Git 在 Windows 系统上部署&#xff0c;另一种是通过 Docker 在 Linux 系统上部署。具体步骤如下&#xff1a;Windows 系统部署&#xff08;基于 Node.js 和 Git&#xff09…

FFMPEG将H264转HEVC时,码率缩小多少好,以及如何通过SSIM(Structural Similarity Index结构相似性指数)衡量转码损失

最近整理一些视频&#xff0c;我发现太多了&#xff0c;就想把一些本来就需要转码的视频缩小一下。因为转码的时候为了弥补损失&#xff0c;我将码率增大了 10-20%&#xff0c;但是如果将 H264 转 HEVC&#xff08;当然也可以是其他格式&#xff09;&#xff0c;那么或许不用增…

前端,route路由

路由定义与导航动态路由匹配&#xff1a;参数传递&#xff08;/user/:id&#xff09;嵌套路由配置与 <router-view> 层级渲染编程式导航&#xff1a;router.push、router.replace 和 router.go路由守卫与权限控制全局守卫&#xff1a;beforeEach、beforeResolve、afterEa…

Kubernetes网络原理深度解析

Kubernetes网络原理深度解析 1 Kubernetes网络模型 Kubernetes 网络模型是其实现容器化应用高效通信的基础框架。它致力于解决容器编排环境中复杂的网络连通性、服务发现与负载均衡等问题&#xff0c;追求让容器、Pod 等网络端点像传统主机网络一样简洁、可预测地通信 。其核心…

Python3.10 + Firecrawl 下载 Markdown 文档:构建高效通用文章爬虫

在信息爆炸的时代&#xff0c;从各种网站收集和整理文章内容已成为许多开发者和研究人员的常见需求。无论是为了内容聚合、数据分析还是知识管理&#xff0c;一个高效、稳定的通用文章爬虫都是不可或缺的工具。 本文将详细介绍如何使用 Python 3.10 结合 Firecrawl API 构建一个…