让 AI 操作浏览器替我打工——Browser Use 实战

一、项目简介

一句话就能让AI自动操作浏览器搜索商品,下单支付,还能进行 deep research,生成完整的攻略报告。Browser User 就是这样一个让 AI 大模型自动操作浏览器的开源项目,短短几个月已经斩获了 60k Star。近期火爆的 A I产品 minus,也选择了 Browser Use 作为其核心组件。

Browser Use 是一个基于 Python 开发的开源库,它将先进的 AI 技术与浏览器自动化功能深度融合。通过集成 Playwright 等浏览器自动化工具,让开发者使用任何支持 LangChain 的大型语言模型(如GPT-4、Claude等)来自动化浏览网页、提取信息、模拟用户操作等。

我们把 Browser Use 在本地搭建测试一下,这次我使用的 AI 是免费的 DeepSeek V3 版,中间会穿插部分源代码的知识,补充讲解下项目的核心原理。

我们来到这个 Browser User 项目的 GitHub 地址,有三个开源项目,其中 browser-use 项目是命令行的,不带UI界面。web-ui 是有一个网页版的界面,为了方便使用,我们先来看 web-ui。

二、本地搭建实战(Web-UI版)

打开 web-ui 后有一个安装说明,我们按照步骤把它安装一下

步骤 1:克隆存储库

首先把项目下载到本地,并进入到项目文件夹

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

第 2 步:设置 Python 环境

第二步配置 Python 运行环境,这里推荐使用 uv 来配置,uv 是一个管理Python运行环境和Python包的工具。把UV的安装命令粘贴过来

这里使用 UV 创建 python3.11 的运行环境

uv venv --python 3.11

激活虚拟环境:

.venv\Scripts\activate # Windows(命令提示符):
source .venv/bin/activate # macOS/Linux:

然后安装 Python 依赖

uv pip install -r requirements.txt

安装浏览器自动化工具

playwright install chromium --with-deps

接下来我们来编写配置文件,这里需要把配置文件的样例复制一份,改成 .env,这个配置文件主要用来配置大模型的 API。

这里使用 OpenRouter 提供的免费大语言模型 DeepSeek V3 0324,我们先把 OpenRouter 的 base_url 复制下来。

因为 OpenRouter 的格式与 OpenAI 是完全兼容,我们就把地址填写到 OpenAI 这里,接下来获取一个API key,然后我们把生成出来的 API 可以复制一下,填写到项目里保存。

步骤 3:启动项目

接下来就可以来启动项目了。

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

打开了网页 http://127.0.0.1:7788 界面。

在页面中还需要进一步设置。来到 Agent Setting,注意要把模型的名字改一下,这里我使用的是免费的 DeepSeek V3,并且 DeepSeek V3 没有视觉功能,因此不勾选 Use Vision。

三、实战演示:B站自动化搜索

目前已经配置完成了,我们来测试一下,在 Run Agent 中输入:

打开b站,搜索“ai算法”,按“最多播放”排序,打开第一个视频

这里打开了一个新的浏览器项目,对每一个可互动的元素都进行了彩色标注。

元素标注

browser use 把页面上的按钮和元素拆解成一种更容易理解,更像文本的格式交给 AI,帮助 AI 搞清楚网页上有哪些选项,然后自主做出决策。也使用了模型的视觉识别功能作为辅助,不过视觉识别并不是必须的,比如本次使用的 DeepSeek V3 就没有视觉功能同样可以完成任务。

然后通过递归的方式,对网页上的所有元素进行深度优先遍历,确保每一个节点都能被访问跟处理,使用 JS 代码创建了一个 div,然后随机选择一种颜色,再把这个 div 渲染到网页上面,这样就实现了彩色的标注。

但 Browser use,打开的浏览器是一个全新的浏览器,这里面是没有任何登录信息的。我们可以通过修改配置文件的方式,让 brother use 使用我们自己电脑上的浏览器,这样就免除了登录这一步骤,扩展了它的功能。

找到项目的 .env 配置文件,有一个 chrome path,把它 chrome 浏览器的路径复制保存,再行重启,然后在 browser setting 把 use on browser 使用自己的浏览器这个选项勾上,这样就是使用我们自己电脑的 chrome 浏览器。

这里有一个重点,在启动任务之前,需要先把 chrome 浏览器关闭,把控制权限完全交给 AI,这样才能生效

我们来看一下运行日志,运行的时候,AI把一个大的任务拆分成了许多个步骤,这里日志里写了 step 1、Step 2、step 3 等。

INFO     [agent] 🚀 Starting task: 打开b站,搜索“ai算法”,按“最多播放”排序,打开第一个视频
INFO     [agent] 📍 Step 1
INFO     [agent] 🤷 Eval: Unknown - The browser is currently on an empty page (about:blank). No previous actions have been taken yet.
INFO     [agent] 🧠 Memory: Starting the task: Open Bilibili, search for 'ai算法', sort by 'Most Played', and open the first video. Current step: 1/100.
INFO     [agent] 🎯 Next goal: Navigate to Bilibili's homepage to begin the task.
INFO     [agent] 🛠️  Action 1/1: {"go_to_url":{"url":"https://www.bilibili.com"}}
INFO     [src.webui.components.browser_use_agent_tab] Step 1 completed.
INFO     [controller] 🔗  Navigated to https://www.bilibili.com
INFO     [agent] 📍 Step 2
INFO     [agent] 👍 Eval: Success - Successfully navigated to Bilibili's homepage.
INFO     [agent] 🧠 Memory: Task progress: 1. Navigated to Bilibili (completed). Next steps: 2. Search for 'ai算法', 3. Sort by 'Most Played', 4. Open the first video. Current step: 2/100.
INFO     [agent] 🎯 Next goal: Search for 'ai算法' on Bilibili.
INFO     [agent] 🛠️  Action 1/2: {"input_text":{"index":9,"text":"ai算法"}}
INFO     [agent] 🛠️  Action 2/2: {"click_element_by_index":{"index":10}}
INFO     [src.webui.components.browser_use_agent_tab] Step 2 completed.
INFO     [controller] ⌨️  Input ai算法 into index 9
INFO     [agent] Element index changed after action 1 / 2, because page changed.
INFO     [agent] 📍 Step 3
INFO     [agent] 👍 Eval: Success - Successfully input 'ai算法' into the search bar.
INFO     [agent] 🧠 Memory: Task progress: 1. Navigated to Bilibili (completed). 2. Searched for 'ai算法' (completed). Next steps: 3. Sort by 'Most Played', 4. Open the first video. Current step: 3/100.
INFO     [agent] 🎯 Next goal: Sort the search results by 'Most Played'.
INFO     [agent] 🛠️  Action 1/1: {"click_element_by_index":{"index":15}}
INFO     [src.webui.components.browser_use_agent_tab] Step 3 completed.
WARNING  [browser] 👁️ Foregound tab changed by human from bilibili.com/ to search.bilibili.com/al…  (navigation) but agent will stay on bilibili.com/
INFO     [controller] 🖱️  Clicked button with index 15: ai算法
视频
INFO     [controller] New tab opened - switching to it
INFO     [agent] 📍 Step 4
INFO     [agent] 👍 Eval: Success - Successfully searched for 'ai算法' and navigated to the search results page.
INFO     [agent] 🧠 Memory: Task progress: 1. Navigated to Bilibili (completed). 2. Searched for 'ai算法' (completed). Next steps: 3. Sort by 'Most Played', 4. Open the first video. Current step: 3/100.
INFO     [agent] 🎯 Next goal: Sort the search results by 'Most Played'.
INFO     [agent] 🛠️  Action 1/1: {"click_element_by_index":{"index":25}}
INFO     [src.webui.components.browser_use_agent_tab] Step 4 completed.
INFO     [controller] 🖱️  Clicked button with index 25: 最多播放
INFO     [agent] 📍 Step 5
INFO     [agent] 👍 Eval: Success - Successfully sorted the search results by 'Most Played'.
INFO     [agent] 🧠 Memory: Task progress: 1. Navigated to Bilibili (completed). 2. Searched for 'ai算法' (completed). 3. Sorted by 'Most Played' (completed). Next step: 4. Open the first video. Current step: 4/100.
INFO     [agent] 🎯 Next goal: Open the first video from the sorted search results.
INFO     [agent] 🛠️  Action 1/1: {"click_element_by_index":{"index":31}}
INFO     [src.webui.components.browser_use_agent_tab] Step 5 completed.
WARNING  [browser] 👁️ Foregound tab changed by human from search.bilibili.com/al… to bilibili.com/v ideo/BV1… (navigation) but agent will stay on search.bilibili.com/al…
INFO     [controller] 🖱️  Clicked button with index 31: 强推!这可能是B站最全的(Python+机器学习+深度学习)系列课程了,不愧是上海交 大和腾讯联合出品!快速入门巨简单,还学不会来锤爆我!人工智能_神经网络_
INFO     [controller] New tab opened - switching to it
INFO     [agent] 📍 Step 6
INFO     [agent] 👍 Eval: Success - Successfully opened the first video from the sorted search results.
INFO     [agent] 🧠 Memory: Task progress: 1. Navigated to Bilibili (completed). 2. Searched for 'ai算法' (completed). 3. Sorted by 'Most Played' (completed). 4. Opened the first video (completed). Ultimate task is now complete.
INFO     [agent] 🎯 Next goal: Complete the task by confirming the video is open.
INFO     [agent] 🛠️  Action 1/1: {"done":{"text":"Successfully opened the first video from the 'ai 算法' search results sorted by 'Most Played'. The video is titled '强推!这可能是B站最全的(Python+机器学习+深度学习)系 列课程了,不愧是上海交大和腾讯联合出品!快速入门巨简单,还学不会来锤爆我!人工智能_神经网络_'.","success":true}}
INFO     [src.webui.components.browser_use_agent_tab] Step 6 completed.
INFO     [agent] 📄 Result: Successfully opened the first video from the 'ai算法' search results sorted by 'Most Played'. The video is titled '强推!这可能是B站最全的(Python+机器学习+深度学习)系列课程了,不愧是上海交大 和腾讯联合出品!快速入门巨简单,还学不会来锤爆我!人工智能_神经网络_'.
INFO     [agent] ✅ Task completed
INFO     [agent] ✅ Successfully
INFO     [agent] 📝 Total input tokens used (approximate): 20822
INFO     [src.webui.components.browser_use_agent_tab] Agent task finished. Duration: 82.55s, Tokens: 20822

任务拆解逻辑

而在每一步中,又分为 4 小步:

  1. 先需要先对上一步的结果进行评估(👍 Eval),确定上一步的执行是成功的;
  2. 接下来思考这一步要做什么(🧠 Memory);
  3. 目标是什么(🎯 Next goal);
  4. 然后 AI 把这次的目标拆分成具体的动作(🛠️ Action)。

比如在这个例子中,step 1 是打开 Bilibili。由于没有上一步,所以不需要进行评估(👍 Eval);然后思考这一步需要做什么(🧠 Memory):【打开b站,搜索“ai算法”,按“最多播放”排序,打开第一个视频】;接下来的目标(🎯 Next goal)是打 Bilibili,动作(🛠️ Action)是打开 https://www.bilibili.com 网页。这样 step 1 就完成了。

在 step 2 中,整体过程与上述类似,先评估 step 1 的结果成功,然后在页面找到搜索框,输入“ai算法”,再点击搜索按钮。

接着再进行下一步,以此循环,直到完成整个任务。

当任务完成后,会生成一张 gif 图片,记录了每步的截图。

五、深度研究(Deep Research)实战

我们来看下一个重要功能,deep research 就是深度研究,这里我找了一个测试用例。

4月日本之旅,需要一份4月15到23日,从西雅图出发的七天日本行程,预算2500到5000美元,适合我和我的未婚妻。

The April trip to Japan requires a seven day itinerary departing from Seattle from April 15th to 23rd, with a budget of $2500 to $5000, suitable for me and my fiance

INFO     [src.agent.deep_research.deep_research_agent] Generating new research plan for topic: The April trip to Japan requires a seven day itinerary departing from Seattle from April 15th to 23rd, with a budget of $2500 to $5000, suitable for me and my fiancee
INFO     [agent] 🚀 Starting task:
        Research Task: round-trip flights from Seattle to Japan April 15-23 2024
        Objective: Find relevant information answering the query.
        Output Requirements: For each relevant piece of information found, please provide:
        1. A concise summary of the information.
        2. The title of the source page or document.
        3. The URL of the source.
        Focus on accuracy and relevance. Avoid irrelevant details.

与上述类似,也是先分析任务,再拆解任务,输出结果。深入研究功能跟普通功能的最大区别是,它会进行三次的深度查找,每次都会自动到对应的网站查找结果,都会整理成这么一个 markdown 文件,最后会把三次的结果整合起来,形成一份完整的输出。

browser use 作为一个完全的开源项目,最终达成这个效果已经很不错了。

六、命令行版开发指南

最后,来看看命令行版本。其实也非常简单

第一步:安装 browser-use

pip install browser-use

第二步:安装 browser-use 包及其"memory"额外依赖项

pip install "browser-use[memory]"

第三步:安装浏览器

playwright install chromium --with-deps --no-shell

示例1:爬取Reddit内容

使用 deepseek 的 API KEY 接入

import asyncio
import os
import sys

sys.path.append(os.path.dirname(os.path.dirname(os.path.dirname(os.path.abspath(__file__)))))

from dotenv import load_dotenv

load_dotenv()

from langchain_deepseek import ChatDeepSeek
from pydantic import SecretStr

from browser_use import Agent

api_key = os.getenv('DEEPSEEK_API_KEY', 'sk-xxxxxxxxxxxxxxxxxxxxxxx')
if not api_key:
    raise ValueError('DEEPSEEK_API_KEY is not set')


async def run_search():
    agent = Agent(
        task=(
            '1. Go to https://www.reddit.com/r/LocalLLaMA '
            "2. Search for 'browser use' in the search bar"
            '3. Click on first result'
            '4. Return the first comment'
        ),
        llm=ChatDeepSeek(
            base_url='https://api.deepseek.com/v1',
            model='deepseek-chat',
            api_key=SecretStr(api_key),
        ),
        use_vision=False,
    )

    await agent.run()


if __name__ == '__main__':
    asyncio.run(run_search())

示例2:结构化数据获取(豆瓣图书TOP10)

搜索豆瓣深度学习相关 top 10 书籍
代码逻辑:

  1. 定义 Book 类、Books 类,创建 Controller 对象,要求搜索结果以 Books 形式返回。
  2. 可选:这里指定使用本地已安装的 chrome 浏览器。
  3. 设置任务提示词,要求 AI 按照具体步骤操作。先搜索获取前 10 的书的链接,然后进入每一本书的链接,获取具体信息。
  4. 根据 Agent 运行返回的结构化数据(Books),打印每本书的信息。

具体代码:

import asyncio
from pydantic import BaseModel
from typing import List
from browser_use import Agent, Controller
from langchain_deepseek import ChatDeepSeek
from pydantic import SecretStr
import os


class Book(BaseModel):
    book_title: str  # 书名
    douban_url: str  # 豆瓣链接
    author: str  # 作者
    brief_introduction: str  # 简介
    score: float  # 评分


class Books(BaseModel):
    books: List[Book]


controller = Controller(output_model=Books)
# config = BrowserConfig(
#     chrome_instance_path="C:\\Program Files\\Google\\Chrome\\Application\\chrome.exe"
# )
# browser = Browser(config=config)


api_key = os.getenv('DEEPSEEK_API_KEY', 'sk-xxxxxxxxxxxxxxxx')
if not api_key:
    raise ValueError('DEEPSEEK_API_KEY is not set')


async def main():
    task = '''请按照以下步骤执行:
    1、进入豆瓣读书,搜索深度学习相关的书籍,获取排名前 10 的每本书的详情链接。并记录下来。
    2、遍历步骤 1 记录的链接,进入每本书的详情链接,获取书的信息; 
    3、返回前 10 的书的信息
    '''
    model = ChatDeepSeek(
        base_url='https://api.deepseek.com/v1',
        model='deepseek-chat',
        api_key=SecretStr(api_key),
    )
    agent = Agent(
        task=task,
        llm=model,
        controller=controller,
        use_vision=False)

    history = await agent.run()

    result = history.final_result()
    if result:
        parsed: Books = Books.model_validate_json(result)

        for book in parsed.books:
            print('\n--------------------------------')
            print(f'书名:         {book.book_title}')
            print(f'豆瓣链接:      {book.douban_url}')
            print(f'作者:         {book.author}')
            print(f'简介:         {book.brief_introduction}')
            print(f'评分:         {book.score}')
    else:
        print('No result')


if __name__ == '__main__':
    asyncio.run(main())

最后,AI 将深度学习相关的 top 10 书本,以结构化形式返回(操作过程,符合提示词的要求,先记录了十本书的链接,然后进入每本书详情页获取具体信息):

--------------------------------
书名:         深度学习入门
豆瓣链接:      https://book.douban.com/subject/30270959/
作者:         斋藤康毅
简介:         本书是深度学习真正意义上的入门书,深入浅出地剖析了深度学习的原理和相关技术。书中使用Python3,尽量不依赖外部库或工具,从基本的数学知识出发,带领读者从零创建一个经典的深度学习网络,使读者在此过程中逐步理解深度学习。
评分:         9.5

--------------------------------
书名:         深度学习
豆瓣链接:      https://book.douban.com/subject/27087503/
作者:         伊恩·古德费洛, 约书亚·本吉奥, 亚伦·库维尔
简介:         《深度学习》是深度学习领域奠基性的经典教材,由全球知名的专家Ian Goodfellow、Yoshua Bengio和Aaron Courville撰写。全书内容包括三部分:第1部分涉及基本数学工具和机器学习概念,为深度学习的预备知识;第2部分系统深入地讲解成熟的深度学习方法和技术;第3部分讨论具有前瞻性的研究方向和想法,适合各类读者,包括专业大学生、研究生及软件工程师。
评分:         8.4

--------------------------------
书名:         深度学习入门2
豆瓣链接:      https://book.douban.com/subject/36303408/
作者:         [日] 斋藤康毅
简介:         《深度学习入门:基于Python的理论与实现》作者的又一力作。本书延续前作的风格,通过通俗的语言和大量示意图讲解,帮助读者深入理解现代深度学习框架。本书引导读者从零创建一个深度学习框架DeZero,在此过程中加深对Python编程和深度学习框架机制的理解。
评分:         9.6

--------------------------------
书名:         动手学深度学习(PyTorch版)
豆瓣链接:      https://book.douban.com/subject/36142067/
作者:         阿斯顿·张, 扎卡里·C. 立顿, 李沐, 亚历山大·J. 斯莫拉
简介:         本书是《动手学深度学习》的升级版,采用PyTorch框架,提供深度学习的互动式学习体验。书中修订了所有内容并新增注意力机制、预训练等。目前已有全球400多所大学采用该书作为教材。主要面向在校大学生、技术和研究人员,适合对Python编程有基本了解的读者。
评分:         9.4

--------------------------------
书名:         Python深度学习 (第2版)
豆瓣链接:      https://book.douban.com/subject/36078304/
作者:         弗朗索瓦·肖莱
简介:         近年来,深度学习在自然语言处理、计算机视觉等领域取得了非凡的进展。从机器翻译和文本生成到自动驾驶和虚拟助手,我们受益于深度学习技术的逐渐普及。然而,深度学习还远未发挥全部潜力。欢迎来到深度学习的世界!在这个规模呈爆发式增长的领域,仍有许多“宝藏”等待你去发掘。本书由流行深度学习框架 Keras 之父弗朗索瓦·肖莱执笔,不用数学公式,而用Python代码帮助你直观理解深度学习的核心思想。
评分:         9.5

--------------------------------
书名:         深度学习入门4
豆瓣链接:      https://book.douban.com/subject/36991430/
作者:         [日]斋藤康毅
简介:         本书前半部分介绍强化学习的重要思想和基础知识,后半部分介绍如何将深度学习应用于强化学习,遴选讲解了深度强化学习的最新技术。
评分:         9.3

--------------------------------
书名:         机器学习与深度学习算法基础
豆瓣链接:      https://book.douban.com/subject/35218628/
作者:         贾壮
简介:         本书共分为上下两篇,共18章:第一篇为经典机器学习模型部分,讲解常用的机器学习经典模型。第二篇为深度学习和神经网络部分,介绍时下流行和通用的模型。
评分:         9.5

--------------------------------
书名:         深度学习进阶:自然语言处理
豆瓣链接:      https://book.douban.com/subject/35225413/
作者:         斋藤康毅
简介:         《深度学习进阶:自然语言处理》是《深度学习入门:基于Python 的理论与实现》的续作,围绕自然语言处理和时序数据处理,介绍深度学习中的重要技术,包括word2vec、RNN、LSTM、GRU、seq2seq 和Attention 等。
评分:         9.5

--------------------------------
书名:         深度学习: 智能时代的核心驱动力量
豆瓣链接:      https://book.douban.com/subject/30425822/
作者:         特伦斯·谢诺夫斯基
简介:         本书探讨了深度学习在科技领域的广泛应用,深度学习是人工智能实现繁荣的核心技术。
评分:         7.6

--------------------------------
书名:         神经网络与深度学习
豆瓣链接:      https://book.douban.com/subject/35044046/
作者:         邱锡鹏
简介:         新一代“炫目”的人工智能技术之核心本质就是神经网络与深度学习
评分:         8.5
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。