大家好,我是木木。
今天给大家分享一个智能的 Python 库,browser-use。
browser-use
如果你已经开始把 AI Agent 放进日常工作流,迟早会碰到一个很现实的问题:网页不是 API,按钮、表单、弹窗、登录态和页面跳转都需要被可靠地“看见”和“操作”。browser-use 做的就是把浏览器变成 Agent 可以理解和调用的执行环境,让任务不只停留在生成文本,而是能继续往页面动作推进。
项目地址:https://github.com/browser-use/browser-use
官方文档:https://docs.browser-use.com
三大特点
浏览器可控
它把页面导航、点击、输入、截图、Tab 管理等动作封装成工具,适合需要操作真实网页流程的 Agent 任务。
工具可扩
除了内置动作,也可以把内部查询、业务校验、文件处理封装成自定义工具,让 Agent 不只会点页面。
边界清楚
可配置域名白名单、敏感数据、浏览器 profile 和远程浏览器,适合把实验脚本逐步推进到生产流程。
最佳实践
安装方式:python -m pip install browser-use==0.12.6
这类库最怕一上来就把 LLM、浏览器、账号和外部网站全部混在一起调试。更稳的方式是先把会话配置、可用动作、自定义工具和敏感数据边界拆开验证,再把 agent.run() 放进真实任务。下面三个例子都不调用外部账号,也不会真的消费模型额度。
功能一:先配置 BrowserSession 和可用工具
这段代码解决什么问题:在真正跑 Agent 前,先确认浏览器会话的运行模式、允许访问的域名,以及当前有哪些内置动作可用。这样能避免任务执行到一半才发现域名边界、上传动作或 profile 配置不符合预期。
importosos.environ["BROWSER_USE_SETUP_LOGGING"]="false"importimportlib.metadataasmdfrombrowser_useimportBrowserProfile,BrowserSession,Toolsprofile=BrowserProfile(headless=True,allowed_domains=["example.com","docs.browser-use.com"],user_data_dir="/tmp/browser-use-demo",)session=BrowserSession(browser_profile=profile,keep_alive=False)tools=Tools(exclude_actions=["upload_file"])print("browser-use version:",md.version("browser-use"))print("session id:",session.id[:8])print("headless:",session.browser_profile.headless)print("allowed domains:",", ".join(session.browser_profile.allowed_domainsor[]))print("built-in actions:",len(tools.registry.registry.actions))print("sample actions:",", ".join(sorted(tools.registry.registry.actions)[:6]))
这里没有启动真实浏览器,只是在构建任务前做一次配置体检。对生产任务来说,allowed_domains 尤其重要:它能把 Agent 的活动范围收窄到你允许的站点,避免模型误点到不该访问的页面。
功能二:给 Agent 注册业务动作
这段代码解决什么问题:很多自动化任务不只是“打开网页并点击按钮”,还需要查订单、验库存、写入内部系统。Tools 可以把这些能力注册成 Agent 可调用的动作,让网页操作和业务逻辑在同一个任务里协作。
importosos.environ["BROWSER_USE_SETUP_LOGGING"]="false"frombrowser_useimportToolsfrombrowser_use.agent.viewsimportActionResulttools=Tools()@tools.action("Return an internal order status by order_id")asyncdeflookup_order(order_id:str):status={"A-1001":"paid","A-1002":"review"}.get(order_id,"missing")returnActionResult(extracted_content=f"{order_id}: {status}")actions=tools.registry.registry.actionsprint("custom action exists:","lookup_order"inactions)print("description:",actions["lookup_order"].description)print("total actions:",len(actions))print("production tip: keep credentials in files, not prompts")
这个模式适合把内部能力做成很小的、可审计的工具。我的建议是:动作描述写清楚输入输出,敏感凭证只从本地配置或密钥系统读取,不要直接塞进 prompt;同时给写操作加确认或幂等保护。
环境与版本信息
- Demo 环境:Windows 11,Python 3.11
- 本文安装的
browser-use 版本:0.12.6 - 当前包要求 Python:
>=3.11,<4.0 - 关键依赖版本:
pydantic 2.12.5、httpx 0.28.1、aiohttp 3.13.3 - LLM 相关依赖:
openai 2.16.0、anthropic 0.76.0、google-genai 1.65.0 - GitHub 最近一次推送时间:
2026-04-25T01:08:00Z
高级功能
这段代码解决什么问题:真实网页任务经常要填邮箱、手机号、Token 或临时密码。直接把这些值写进任务描述,容易被日志、模型上下文或调试输出带走。sensitive_data 更适合让任务只提“标签”,真实值由运行时按域名范围注入。
importosos.environ["BROWSER_USE_SETUP_LOGGING"]="false"frombrowser_useimportAgent,BrowserSession,BrowserProfilefrombrowser_use.llm.openai.chatimportChatOpenAIsensitive_data={"example.com":{"login_email":"reader@example.com","login_password":"not-in-prompt",}}browser=BrowserSession(browser_profile=BrowserProfile(headless=True,allowed_domains=["example.com"]))llm=ChatOpenAI(model="gpt-4.1-mini",api_key="demo-key-not-used")agent=Agent(task="Open https://example.com and fill login_email plus login_password.",llm=llm,browser_session=browser,sensitive_data=sensitive_data,)print("task mentions labels:","login_email"inagent.taskand"login_password"inagent.task)print("domain scope:",", ".join(sensitive_data))print("secret labels:",", ".join(sensitive_data["example.com"].keys()))print("real password exposed:","not-in-prompt"inagent.task)
这个例子只创建 Agent,不执行 agent.run()。真正接入时,API Key、账号密码和业务 Token 应该从本地配置文件、密钥管理服务或运行环境注入,并且要把日志级别、截图保存、浏览器 profile 生命周期一起纳入上线检查。
适用场景
- 你想让 AI Agent 操作真实网页,比如填表、后台录入、跨页面收集信息
- 你需要把浏览器动作和内部业务工具组合起来,而不是只做普通爬虫
- 你希望对访问域名、登录态、敏感数据和浏览器环境有更明确的控制
不适用场景
- 目标网站已经有稳定 API,直接调用 API 会更简单、更快、更可靠
- 任务对确定性要求极高,不能接受 LLM 对页面理解带来的波动
- 你只是做静态 HTML 抓取,
requests、httpx、BeautifulSoup 或 Scrapy 已经足够
上线检查
- 给 Agent 配好域名白名单、最大步骤数、超时和失败重试策略,不要让任务无限游走。
- 敏感数据只从本地配置或密钥服务读取,日志和截图里不要泄露真实账号信息。
- 对写入、提交、支付、删除等动作加人工确认或幂等保护,先在测试账号上跑通。
总结
browser-use 适合把 AI 从“会回答”推进到“会操作网页”。它不是普通爬虫替代品,而是给浏览器 Agent 准备的一套执行层。用好它的关键,是先把边界收紧,再让模型上手。