只需一句话,AI 即可自动操作浏览器:

搜索商品:

下单支付:

甚至还能进行深度研究(Deep Research),自动生成完整的攻略报告:

Browser use 是一个开源项目,使 AI 大模型能够自动操作浏览器:

短短几个月内,Browser use 已在 GitHub 上获得超过 5 万颗 star:

近期大热的 AI 产品 Manus 也选择了 Browser use 作为核心组件。随后,Manus 联合创始人 @peakji 也公开证实,确实采用了 @browser_use 的开源代码。

本文将带你亲自搭建并测试 Browser use 项目。文中所用 AI 模型为刚刚升级的免费版 DeepSeek V3 0324 OpenRouter

文中还会穿插源码相关知识,补充讲解项目的核心原理。

本地搭建

首先,访问 Browser use 的 GitHub 页面:Browser Use · GitHub

目前 Browser use 包含三个开源项目:

  1. browser-use:命令行版本,无 UI 界面。
  2. web-ui:带有网页版 UI 界面。
  3. macOS-use:AI 代理(AI agents),可与 macOS 系统及其应用程序交互。允许 AI 通过编程接口模拟人类操作,几乎能操控所有 Mac 应用,如启动软件、点击界面元素、输入文本或执行多步骤任务。(本文不涉及此部分)

为方便操作,本文选择带 UI 的 web-ui 项目,点击进入 web-ui 项目页面:

进入后可见项目安装说明:

接下来按照官方步骤进行安装。

首先,在 Windows 电脑的 D:\IdeaPro 目录下新建 browser-use 文件夹,用于统一管理 Browser use 相关内容。

然后在 browser-use 文件夹内打开命令提示符(可在地址栏输入 cmd 回车,或右键菜单打开,或通过 Windows 搜索栏搜索 cmd 后 cd 到该目录),执行以下命令:

git clone https://github.com/browser-use/web-ui.git

项目下载到本地后:

进入刚下载的项目文件夹:

cd web-ui

下一步是配置 Python 运行环境。官方推荐使用 UV 工具:

UV 是一个用于管理 Python 环境和包的工具。点击官方链接进入 UV 官网:

在 UV 官网左侧菜单栏找到 Installation:

由于我用的是 Windows 系统,先切换到 Windows 选项卡:

将 UV 提供的安装脚本复制:

powershell -ExecutionPolicy ByPass -c "irm https://astral.sh/uv/install.ps1 | iex"

在 Windows 搜索栏搜索 PowerShell,打开窗口,把 UV 安装命令粘贴进去并回车:

安装完成后,继续操作。已进入 web-ui 文件夹目录,在命令窗口(如遇命令找不到需重开窗口),使用 UV 创建 Python 3.11 运行环境:

uv venv --python 3.11

使用官方文档命令激活虚拟环境,Windows 示例:

.venv\Scripts\activate

激活后,命令行窗口进入虚拟环境:

接下来安装所需 Python 包,官方命令如下:

uv pip install -r requirements.txt

依赖安装较慢,请耐心等待。安装后用 playwright install 命令安装浏览器自动化工具及对应浏览器:

playwright install

接下来编写配置文件,将官方配置文件样例复制一份,命名为 .env:

用 Pycharm 打开项目:

复制 .env.example 并重命名为 .env

该配置文件主要用于配置 AI 的 API、API Key 以及 API 提供商。本文仍选用 Open Router,进入 OpenRouter 官网,在左上角模型搜索框中搜索 DeepSeek,选择 DeepSeek V3 0324(free)版本:

进入模型详情页,切换到 API 选项卡:

复制 OpenRouter 的 API 请求地址:

https://openrouter.ai/api/v1

由于 OpenRouter 格式与 OpenAI 完全兼容,可直接填写到 OpenAI 的 API 地址中:

接着获取 API Key,在 Open Router 右上角点击 Keys:

点击 Create Key 创建新 API Key:

名称可自定义,Credit limit 可选,不填也可以。点击 create:

创建后会生成 API key,复制下来:

填写到项目配置文件 OPENAI_API_KEY 一行:

保存后即可启动项目。GitHub 说明如下:

执行 Python 命令启动:

python webui.py --ip 127.0.0.1 --port 7788

程序会生成本地网站地址,点击 http://127.0.0.1:7788 打开网页版项目 UI:

还需进行一步设置,进入 LLM Settings 选项卡,将模型名称修改为:

本文使用 DeepSeek V3 免费版,在 OpenRouter DeepSeek V3 0324(free)模型详情页 OpenRouter

粘贴到模型名称中:

配置完成后,进行测试。点击 Run Agent 选项卡:

官方预设任务(访问 google.com,输入 “OpenAI”,点击搜索,返回第一个网址),直接点击 Run Agent 测试。

AI 首先会打开新浏览器窗口,访问 google.com,并在搜索栏输入 “OpenAI”:

项目会对每个可互动元素进行彩色标注,自动填入 OpenAI 并点击搜索按钮:

一系列动作完成后,AI 自动关闭浏览器窗口,回到项目 UI 查看 Results,给出本次问题答案:

Browser use 的创新点在于将网页上的按钮和元素拆解为更易理解、类似文本的格式交给 AI,帮助其识别网页选项并自主决策。

Browser use 也用到了模型的视觉识别能力作为辅助,但视觉识别并非必须,比如本文用的 DeepSeek V3 0324 就没有视觉识别,依然能完成任务。

来看下核心代码,找到 .venv 文件夹,进入 Lib\site-packages\browser_use 目录:

再进入 browser_use 目录下 dom 目录,找到 buildDomTree.js 文件:

在该 JS 文件中,核心方法 buildDomTree 位于 761 行,可搜索定位:

源代码不再贴出,简要说明:buildDomTree 采用递归方式,对网页所有元素进行深度优先遍历,确保每个节点都能被访问和处理。

Browser use 页面炫酷的标注效果,核心方法是 highlightElement:

源码中通过 JS 创建 div,并用 document.body.appendChild(container) 添加到网页:

// 创建或获取高亮容器
let container = document.getElementById(HIGHLIGHT_CONTAINER_ID);
if (!container) {
container = document.createElement("div");
container.id = HIGHLIGHT_CONTAINER_ID;
container.style.position = "fixed";
container.style.pointerEvents = "none";
container.style.top = "0";
container.style.left = "0";
container.style.width = "100%";
container.style.height = "100%";
container.style.zIndex = "2147483647";
document.body.appendChild(container);
}

高亮元素创建后,接着用 CSS 根据索引生成颜色:

// 根据索引生成颜色
const colors = [
"#FF0000",
"#00FF00",
"#0000FF",
"#FFA500",
"#800080",
"#008080",
"#FF69B4",
"#4B0082",
"#FF4500",
"#2E8B57",
"#DC143C",
"#4682B4",
];
const colorIndex = index % colors.length;
const baseColor = colors[colorIndex];
const backgroundColor = baseColor + "1A"; // 不透明度为 10% 的颜色

最后将 div 渲染到网页,实现彩色标注。

免登录

Browser use 启动的浏览器是全新环境,没有任何登录信息,所有账号都需重新登录。

其实可以通过修改配置文件,让 Browser use 调用本机浏览器,从而免除登录步骤,进一步扩展功能。

具体操作如下:在 Windows 搜索栏输入 Chrome

右键,选择“打开文件所在位置”:

此时只是快捷方式:

需继续右键,进入 Chrome 安装目录:

找到 Chrome 可执行文件,将路径复制,回到项目 .env 配置文件,找到 CHROME_PATH 配置项,粘贴路径:

Windows 11 可直接复制,Windows 10 需在路径末尾加 chrome.exe

配置好 CHROME_PATH 后,重启项目。命令行 Ctrl + C 停止项目,再输入:

python webui.py --ip 127.0.0.1 --port 7788

重启后(模型名会恢复默认),需重新配置模型:

在 browser Settings 选项卡,勾选 Use Own Browser,即使用本机 Chrome:

重点:启动任务前需关闭 Chrome 浏览器。切换到 Edge,关闭 Chrome:

确保软件列表中没有 Chrome,完全交由 Browser 控制。接下来开始测试。

我更换了一个提示词,前往淘宝电商网站购买一根逗猫棒。只购买逗猫棒,其他商品一律不选,也不多买,仅下单逗猫棒。随后点击“Run Agent”。

自动打开了 Chrome 浏览器,这个浏览器是我自己电脑上的 Chrome,开始解析网页:

网页解析完成后,输入 www.taobao.com 并点击搜索:

成功进入淘宝网站,注意查看我截图中的网站是已经登录过的,我的登录状态仍然可以继续使用,接下来就可以继续执行下一步了,首先对网页元素进行解析:

页面元素解析完毕后,自动输入“逗猫棒”,整个过程无需人工干预:

随后自动进入逗猫棒的商品详情页,并解析该页面:

紧接着,商品被自动加入购物车:

进入购物车页面后,自动解析网页,并选择需要购买的商品:

确认订单信息:

由于我已设置小额免密支付,AI 自动点击付款按钮后,便直接完成了支付操作:

进入到命令行窗口,查看本次操作的结果 Successfully,任务完成:

除了使用自己的浏览器,还有一种免登录的方式,就是把 cookie 导入进 Playwright,这种方式我更推荐。

因为我测试下来这种方法更稳定,效果更好。操作如下:点击浏览器右上角的扩展,点击管理扩展:

找到“在 Chrome 应用商店中发现更多扩展程序和主题”,点击进入:

搜索 Cookie Editor:

将 Cookie Editor 安装到浏览器中:

然后来到我们想要的网站,比如淘宝,我已经登陆过了,然后在扩展栏目中找到我们刚刚安装的 Cookie Editor,点击打开:

在 Cookie Editor 中点击 Export,导出当前网站的 Cookie 信息,导出格式选择 JSON 格式:

此时我在电脑桌面上新建了一个 cookie.json 文件,然后用编辑软件打开,把刚才用 Cookie Editor 导出的 JSON 信息粘贴到这个文件中:

接下来需要修改一点代码,找到 web-ui 项目的根目录打开 webui.py 文件,找到 BrowserContextConfig 469 行,添加一句 cookies_file=我们的 cookie.json 文件路径:

cookies_file="E:\\Desktop\\cookie.json",

Windows 系统下路径需要用两个反斜束,或者直接用一个正斜束。

代码修改完成后,重启项目。注意此时需将 Browser Settings 中的 Use Own Browser 选项取消掉:

还是让它使用 Playwright 浏览器。切换到 Run Agent 选项卡,我们再来测试一下,我让他打开淘宝,点击 Run Agent:

发现控制台命令行报错,查看错误日志发现提示 sameSite: expected one of (Strict|Lax|None),只允许 Strict|Lax|None。为修复这个问题,我打开 cookie.json 文件,发现 sameSite 的取值有 no_restriction:

还有 unspecified:

我将这两个值都修改为 “None”,注意是字符串 “None”,保存文件后,重新启动项目:

另外一种情况同理,不再截图。

重启后,继续刚才的任务,注意修改 Model Name,打开淘宝(此时报错已消失,网站成功打开且保持登录状态):

通过导入 Cookie 的方式,实现了浏览器的自动登录,大大拓展了 Browser use 的能力边界,可以完成更多复杂的自动化操作。

文章内容较多,已拆分篇幅,下一篇将继续介绍 Browser use 如何进行深度研究(Deep Research),自动生成完整的攻略报告,敬请期待。

推荐阅读:

主题 链接
一文彻底搞懂 MCP:AI 大模型的标准化工具箱 点击阅读
使用 Cursor 进行项目开发的个人心得分享 点击阅读
Cursor 神器进阶:AI 提交信息生成 + Composer 黑科技 点击阅读
Cursor 最稳定的自动更新禁用方案 点击阅读
一些关于 Cursor 的使用技巧 点击阅读

AI浏览器自动化实战的更多相关文章

  1. Selenium2学习-014-WebUI自动化实战实例-012-Selenium 操作下拉列表实例-div+{js|jquery}

    之前已经讲过了 Selenium 操作 Select 实现的下拉列表:Selenium2学习-010-WebUI自动化实战实例-008-Selenium 操作下拉列表实例-Select,但是在实际的日 ...

  2. Selenium2学习-039-WebUI自动化实战实例-文件上传下载

    通常在 WebUI 自动化测试过程中必然会涉及到文件上传的自动化测试需求,而开发在进行相应的技术实现是不同的,粗略可划分为两类:input标签类(类型为file)和非input标签类(例如:div.a ...

  3. Selenium2学习-035-WebUI自动化实战实例-033-页面快照截图应用之三 -- 区域截图(专业版)

    之前有写过两篇博文讲述了 WebUI 自动化测试脚本中常用的截图方法,敬请参阅如下所示链接: 浏览器显示区域截图 浏览器指定区域截图 那么当需要截取的区域不在浏览器显示窗口范围之内时,之前的方法显然无 ...

  4. Selenium2学习-027-WebUI自动化实战实例-025-JavaScript 在 Selenium 自动化中的应用实例之三(页面滚屏,模拟鼠标拖动滚动条)

    日常的 Web UI 自动化测试过程中,get 或 navigate 到指定的页面后,若想截图的元素或者指定区域范围不在浏览器的显示区域内,则通过截屏则无法获取相应的信息,反而浪费了无畏的图片服务器资 ...

  5. Selenium2学习-018-WebUI自动化实战实例-016-自动化脚本编写过程中的登录验证码问题

    日常的 Web 网站开发的过程中,为提升登录安全或防止用户通过脚本进行黄牛操作(宇宙最贵铁皮天朝魔都的机动车牌照竞拍中),很多网站在登录的时候,添加了验证码验证,而且验证码的实现越来越复杂,对其进行脚 ...

  6. Selenium2学习-016-WebUI自动化实战实例-014-Selenium 窗口选择

    在日常的 WebUI 自动化测试脚本编写过程中,经常需要打开新的页面,或者在多个打开的页面之间进行切换,以对页面元素进行相应的操作,以模拟用户的行为,实现 UI 的自动化测试.在过往的时间中,经常有初 ...

  7. Selenium2学习-010-WebUI自动化实战实例-008-Selenium 操作下拉列表实例-Select

    此文主要讲述用 Java 编写 Selenium 自动化测试脚本编写过程中,对下拉列表框 Select 的操作. 下拉列表是 Web UI 自动化测试过程中使用率非常高的,通常有两种形式的下拉列表,一 ...

  8. Selenium2学习-007-WebUI自动化实战实例-005-解决 Firefox 版本不兼容:org.openqa.selenium.WebDriverException: Failed to connect to binary FirefoxBinary

    此文主要讲述 Java 运行 Selenium 脚本时,因 Friefox 浏览器版本与 selenium-server-standalone-x.xx.x.jar 不兼容引起的 org.openqa ...

  9. 《Selenium+Pytest Web自动化实战》随到随学在线课程,零基础也能学!

    课程介绍 课程主题:<Selenium+Pytest Web自动化实战> 适合人群: 1.功能测试转型自动化测试 2.web自动化零基础的小白 3.对python 和 selenium 有 ...

  10. 2-2 selenium IDE自动化实战

    Selenium IDE 自动化实战 任务1: 自动在百度搜索"我要自学网" 然后在搜索结果页面点击进入自学网主页 任务2 实现自学网自动登录个人账号 Test2017 12345 ...

随机推荐

  1. JVM:方法区、堆

    https://docs.oracle.com/javase/specs/jvms/se8/html/jvms-2.html#jvms-2.6.2

  2. 用 DeepSeek 分析,SaaS 多租户的3种隔离模式,结果。。。

    大家好,我是汤师爷~ 在SaaS模式下,多租户之间的资源隔离是基础且关键的一环. SaaS服务商需要在确保运营效率和控制成本的前提下,搭建一个让多个租户能够同时访问的共享环境. 虽然大家都在用同一套S ...

  3. Pyinstaller打包工具

    本篇博客主要介绍的是pyinstaller在windows下的基本使用和基础避坑 在windows中使用pyinstaller工具打包时会出现一个问题,在打包列表会看到这样的警告信息: django. ...

  4. [记录点滴] 使用工具和命令对redis数据进行备份恢复

    [记录点滴] 使用工具和命令对redis数据进行备份恢复 0x00 摘要 本文记录了如何使用工具对redis数据进行恢复备份,涉及的有Redis-Dump,MySQL,Redis管道命令. 0x01 ...

  5. Luogu P10179 水影若深蓝 题解 [ 绿 ] [ 并查集 ] [ 构造 ]

    水影若深蓝:挺好的一道并查集构造题. 观察 不难发现"距离为 \(2\)"这个条件我们可以通过黑白染色实现,我们把他们的中转点染成与他们相反的颜色,把这两个距离为 \(2\) 的点 ...

  6. datawhale-leetcode打卡 第013-025题

    搜索旋转排序数组(leetcode-033) 这道题非常简单,基本送分,之前做的代码还能用上 class Solution: def search(self, nums: List[int], tar ...

  7. Arduino函数库和程序架构

    Arduino程序的架构大体可分为3个部分. (1)声明变量及接口的名称. (2)setup().在Arduino程序运行时首先要调用setup()函数,用于初始化变量.设置针脚的输出/输入类型.配置 ...

  8. 最优化方法之AdaGrad、RMSProp、Adam

    结论: 1.简单来讲,设置全局学习率之后,每次通过,全局学习率逐参数的除以历史梯度平方和的平方根,使得每个参数的学习率不同 2.效果是:在参数空间更为平缓的方向,会取得更大的进步(因为平缓,所以历史梯 ...

  9. Typecho添加一个当前页面加载完成速度时间

    判断当前页面加载是否快速,通常是直接在浏览器中访问网站,看自己的直观感受是否快速.而客观的方法则是计算具体的页面加载时间并显示出来给看. 1.在当前主题的functions.php文件添加下面的代码: ...

  10. Shell - [01] 概述

    一.shell是什么 Shell 是一个命令解释器,接收应用程序/用户命令去调用操作系统内核. Shell 是一个功能强大的编程语言,易编写.易调试.灵活性强. 二.shell的解析器有哪些 [roo ...