当前位置: 首页 > news >正文

Browser-Use 实战指南:让 AI 自己操控浏览器的 7 个实用场景

Browser-Use 实战指南:让 AI 自己操控浏览器的 7 个实用场景

你打开浏览器,搜索、填表、采集数据、截图、下载文件。这些每天重复的动作,能不能让 AI 替你干?

Browser-Use给了一个相当干脆的答案:把浏览器交给 AI,你只告诉它"做什么",剩下的事它自己搞定。

今天这篇不讲概念,直接上代码。场景覆盖从最简单的页面导航到多步自动化工作流,每段代码都标注了说明和踩坑点。


一、快速上手

安装很简单,Python 3.11+ 环境:

pipinstallbrowser-use# 安装 Chromium(首次运行需要)playwrightinstallchromium

引入一个 LLM 后端。官方推荐用ChatBrowserUse(专为浏览器任务优化,速度快 3-5 倍),也可以用 OpenAI/Anthropic/Google 的模型:

frombrowser_useimportAgent,ChatBrowserUsefromdotenvimportload_dotenvimportasyncio load_dotenv()# 从 .env 读 API Keyasyncdefmain():llm=ChatBrowserUse()# 最推荐,0.3 美金/百万 tokenagent=Agent(task="打开 browser-use 的 GitHub 首页,告诉我 star 数量",llm=llm)awaitagent.run()if__name__=="__main__":asyncio.run(main())

跑完后终端会打印出 agent 每一步的行为——它自己导航、等待页面加载、提取文字、做出判断。你什么都不用管。

如果你想用 uv 快速初始化工程:

uv init&&uvaddbrowser-use&&uvsyncuvx browser-use init--templatedefault# 生成示例文件

二、7 个实战场景

场景 1:自动化表单填写

这是最直接的场景。想象一下每天早上要登录后台、填写日报的场景:

frombrowser_useimportAgent,ChatBrowserUse,Browserimportasyncioasyncdeffill_report():browser=Browser()agent=Agent(task=""" 1. 打开 https://xxx.com/login 2. 用账号 admin@example.com / password123 登录 3. 点击"日报填写" 4. 在"今日工作"输入框填写:完成了 API 文档更新和三个 bug 修复 5. 在"明日计划"输入框填写:开始用户权限模块开发 6. 点击提交按钮 """,llm=ChatBrowserUse(),browser=browser)awaitagent.run()browser.close()asyncio.run(fill_report())

关键点:把任务写成清晰的步骤列表,agent 会自动识别页面元素。如果步骤 4-5 的输入框有明确的 label(比如 “今日工作”),它几乎不会定位错。

如果表单有验证码?browser-use Cloud 版内置了验证码解析,开源版可以配合 2Captcha 等第三方服务。

场景 2:网页数据抓取(对比传统方式)

传统爬虫用requests+BeautifulSoup,遇到 JS 渲染的页面就抓瞎。用 browser-use 就不存在这个问题——它操控的是真实浏览器。

frombrowser_useimportAgent,ChatBrowserUsefrompydanticimportBaseModelimportasyncioclassProductInfo(BaseModel):name:strprice:strrating:strstock_status:strclassProductList(BaseModel):products:list[ProductInfo]asyncdefscrape_products():agent=Agent(task="打开京东,搜索'机械键盘',列出前 10 个商品的名字、价格、评分和库存状态",llm=ChatBrowserUse(),output_schema=ProductList# 结构化输出!)result=awaitagent.run()forpinresult.output.products:print(f"{p.name}| ¥{p.price}|{p.rating}|{p.stock_status}")asyncio.run(scrape_products())

对比传统方式:

对比项requests + BS4browser-use
JS 渲染❌ 需要额外处理✅ 天然支持
反爬突破❌ 需要代理池✅ 可配 stealth 浏览器
数据解析✅ 精确控制✅ 结构化输出
开发速度慢(逐字段适配)快(自然语言描述)
稳定性页面改结构就崩语义理解,容错高

对于需要登录才能抓取的站,用use_cloud=True或者复用本地 Chrome profile(见场景 7)。

场景 3:多步骤操作(登录 → 导航 → 下载)

真实场景往往是多个步骤串在一起,比如每天上班第一件事:登录后台 → 导出昨日数据 → 下载报表。

frombrowser_useimportAgent,ChatBrowserUseimportasyncioasyncdefdaily_report_download():agent=Agent(task=""" 1. 打开公司后台 https://dashboard.example.com 2. 用账号 admin@company.com / MyP@ss2026 登录 3. 等待页面加载完成 4. 点击左侧菜单"数据报表" 5. 在日期选择器中选择"昨天" 6. 点击"导出 CSV" 7. 等待文件下载完成 """,llm=ChatBrowserUse())awaitagent.run()asyncio.run(daily_report_download())

browser-use 的 Agent 会自动:

  • 等待页面加载(不会在 loading 状态就操作)
  • 滚动到可视区域再点击
  • 处理弹窗和模态框
  • 重试失败步骤

踩坑提醒:文件下载路径需要设置 Chrome 的下载目录。默认下载到系统 Downloads,建议显示指定:

frombrowser_useimportBrowser,BrowserConfig config=BrowserConfig(download_path="/path/to/your/downloads")browser=Browser(config=config)

场景 4:与 LLM 配合的自定义 Agent 流程

有时候标准的 Agent 不够用,你需要注入自定义逻辑。browser-use 提供了Tools机制:

frombrowser_useimportAgent,ChatBrowserUse,Tools tools=Tools()@tools.action(description="将文本写入本地文件,filename是文件名,content是内容")defsave_to_file(filename:str,content:str)->str:withopen(f"/data/{filename}","w",encoding="utf-8")asf:f.write(content)returnf"已保存到 /data/{filename}"asyncdefcustom_flow():agent=Agent(task=""" 1. 打开知乎热榜 2. 获取排名前 5 的热点话题及摘要 3. 对每个话题调用 save_to_file,保存到 today_hot_{序号}.md """,llm=ChatBrowserUse(),tools=tools)awaitagent.run()asyncio.run(custom_flow())

想象空间很大:

  • send_email(to, subject, body)→ 抓取数据后自动发邮件
  • database_query(sql)→ 把网页数据和本地数据库联动
  • wechat_notify(msg)→ 异常时发微信通知
  • slack_post(channel, msg)→ 汇报到团队频道

场景 5:定时巡检/监控网页变化

结合系统的 cron,你可以让 browser-use 定期检查某个页面,发现变化就通知自己:

# monitor_price.pyfrombrowser_useimportAgent,ChatBrowserUseimportjson CHECK_URL="https://item.jd.com/xxxxx.html"TARGET_PRICE=2000.0asyncdefcheck_price():agent=Agent(task=f"打开{CHECK_URL},提取当前价格数字",llm=ChatBrowserUse())result=awaitagent.run()# result 的文本里包含了价格信息if"¥"instr(result):# 解析价格逻辑...print("价格有变动,通知!")

配合 cron 每天跑一次:

# crontab09* * *cd/path/to/project&&python monitor_price.py

如果加上自定义工具里的send_emailwechat_notify,就是一个完整的价格监控系统。

场景 6:截图 + 视觉分析

browser-use 可以截图并交给 LLM 分析。这对 UI 自动化测试、页面完整性检查非常有用:

frombrowser_useimportAgent,ChatBrowserUseasyncdefui_audit():agent=Agent(task=""" 1. 打开 https://your-app.com/dashboard 2. 截取当前页面全屏截图 3. 分析截图,检查: - 所有图表是否正常渲染 - 是否有 404 或报错信息 - 页面布局是否错乱 4. 将检查结果输出为结构化报告 """,llm=ChatBrowserUse())awaitagent.run()asyncio.run(ui_audit())

这对需要每周做 UI 巡检的团队来说,能省下大量人工。配合 CI 管道,部署后是自动化的测试环节。

场景 7:多平台内容自动发布

这是公众号运营者的终极需求——写一篇文章,自动发布到多个平台。

browser-use 需要复用浏览器的登录状态,才能操作需要登录的平台(如知乎、掘金、CSDN)。

方案一:复用本地 Chrome 用户数据:

frombrowser_useimportBrowser,BrowserConfig config=BrowserConfig(chrome_instance_path="/Applications/Google Chrome.app/Contents/MacOS/Google Chrome",user_data_dir="/path/to/your/chrome/profile")browser=Browser(config=config)

这样 browser-use 使用的就是你已经登录了知乎、掘金的浏览器实例,免去了每一步都要登录的麻烦。

方案二:用 Cloud 版的cloud_profile_id

@sandbox(cloud_profile_id='your-profile-id')asyncdefpublish_task(browser:Browser):agent=Agent(browser=browser,llm=ChatBrowserUse())# ...

然后写个发布 Agent:

asyncdefcross_platform_publish(content_md:str):agent=Agent(task=f""" 1. 打开知乎编辑器 2. 将以下文章内容填入编辑器(Markdown 内容会自动渲染):{content_md[:200]}# 截取前 200 字示意 3. 选择"科技"话题标签 4. 点击发布 5. 切换到掘金编辑器,重复 2-4 6. 切换到 CSDN 编辑器,重复 2-4 7. 汇总每个平台的发布状态 """,llm=ChatBrowserUse())awaitagent.run()

这是我对 OpenWrite 替代方案的调研结论——browser-use 理论上可以实现全自动多平台分发,但稳定性不如专门的平台(因为网页改版会导致步骤失效)。适合作为补充方案,而不是主干。


三、最佳实践

稳定性优化

  1. 任务描述要具体

    • ❌ “检查京东页面”
    • ✅ “打开京东,搜索’机械键盘’,提取前 5 个结果的价格和商品名”
  2. 给每一步增加安抚时间
    使用Browser的默认配置已经内置了等待机制,不需要手动time.sleep()

  3. 设置超时避免卡死

    agent=Agent(task=...,llm=llm,max_actions_per_step=50)
  4. 定期清理浏览器缓存
    browser-use 每次运行默认开新浏览器上下文,不会留下缓存干扰。

反爬与检测规避

  • 开源版默认的 Chromium 指纹比较明显,容易被反爬系统识别
  • Cloud 版提供 stealth 浏览器(指纹混淆 + 代理轮换)
  • 如需自建:考虑undetected-chromedriver模式,或者用BrowserConfig自定义 user-agent 和 viewport

错误处理

try:awaitagent.run()exceptExceptionase:print(f"执行失败:{e}")# 自动截图保存现场,方便排查awaitbrowser.take_screenshot("failure_screenshot.png")

四、对比其他方案

特性Browser-UsePlaywrightSeleniumPuppeteer
交互方式自然语言代码代码代码
智能度高(LLM 驱动)
稳定性中(依赖 LLM 质量)
学习成本低(一句话描述任务)
反爬能力中(Cloud版强)
适用场景临时/多变任务固定流程自动化兼容性测试Chrome 专用

一句话总结:传统框架适合你知道每一步要干什么的场景,browser-use 适合你知道要达成什么目标但不确定中间步骤的场景。两者不冲突,可以互补。


写在最后

browser-use 目前 GitHub 79k+ star,社区活跃度非常高。它的真正价值不在于替代传统自动化框架,而在于把"浏览器操作"这件事的门槛降到了自然语言层面

以前写一个爬虫要分析 DOM、调试 XPath、处理反爬。现在?“帮我把这个页面的数据整理成表格”——AI 替你干了。

但也要清醒:它不适合高频率、高可靠性的生产流水线。LLM 的不确定性意味着偶尔会"抽风",比如点错按钮、填错位置。关键场景建议混合使用:browser-use 做快速原型验证,Playwright 做稳定的核心流程。

工具是手段,不是目的。知道什么时候用哪个,比纠结哪个更强更重要。


如果你已经用起来了,或者有更骚的操作,欢迎来聊。

http://www.jsqmd.com/news/842127/

相关文章:

  • 3.3V供电,实测5mA!KT6368A蓝牙5.1透传模块开箱上电全记录
  • 对比官方直连体验Taotoken在模型切换与路由上的便利
  • MATLAB仿真GPS调制和捕获
  • 3种智能解析技术:VideoDownloadHelper如何突破网页视频下载限制
  • 终极Gerber文件查看器Gerbv:免费开源PCB设计验证的5大优势
  • NPJ Precis Oncol(IF=8)中国科学院深圳先进技术研究院吴红艳教授等团队:深度可解释放射基因组学解析乳腺MRI肿瘤微环境
  • 基于加速度计的体感音乐控制器:用MakeCode与Circuit Playground Express实现交互式乐器
  • 2026四川存储服务器公司TOP名录:国产gpu服务器厂家/国产存储服务器厂家/国产服务器价格表/国产服务器供应商/选择指南 - 优质品牌商家
  • 手把手教你为Vue3项目集成OnlyOffice 9.3:从配置到回调保存的完整实战
  • NotebookLM如何让AI替你精准定位审稿人潜台词?——基于572份Accepted回复文本的NLP语义聚类分析
  • 「全场景适用」2026最新论文去机器味指南:3款工具红黑榜与5个核心提示词
  • 2026年云南柔性防护网制造厂深度解析:如何选择专业可靠的合作伙伴 - 2026年企业推荐榜
  • 如何快速掌握炉石传说游戏自动化:开源智能助手完整教程
  • Display Driver Uninstaller:显卡驱动清理的终极解决方案
  • 从零打造会发光的航天飞机模型:焊接入门与PCB组装实战
  • 性价比高的激光切割机怎么选?这些品牌值得你深入了解!
  • 特斯拉Model 3无线充电垫DIY:基于Qi标准与3D打印的集成方案
  • 树莓派复古游戏系统搭建:从GPIO控制到RetroPie模拟器实战
  • Grafana 升级后插件不兼容报错 incompatible version 怎么处理?
  • 衍射光学元件(DOE)和微结构元件
  • 2026年主流云平台对ONNX Runtime的支持情况
  • 3分钟掌握DeepMosaics:AI智能马赛克处理与图像修复工具
  • 基于AMG8833与ESP32的DIY热成像相机:从硬件选型到软件插值算法全解析
  • 基于GeoDa与R语言的空间数据回归实践技术应用
  • DIY便携UV美甲灯:从电路设计到3D打印的完整制作指南
  • AI 术语通俗词典:反向传播
  • 短视频矩阵的流量互导机制:多账号之间如何用系统设计实现流量自增长
  • iOS传感器数据采集与云端传输实战:CoreMotion与Adafruit IO集成指南
  • 国产PLM重塑香精香料价值链:从原料创新到消费体验的全链路数字连接
  • 别再为导入报错发愁了!手把手教你用Parasolid格式把SolidWorks模型完美导入Adams(附常见错误排查)