19个月冲到96,591 Stars的网页Agent,90%的人都低估了它
你知道吗?Browser-Use只用了19个月就在GitHub上拿到96,591颗星,Forks也突破了10,000。大多数团队把它当成"能调GPT的Playwright包装"——其实不是。这个库自带隐身云浏览器、自我评判Agent、内存文件系统、并行Agent编排器,还有一个懂2FA的敏感数据接口。我翻完了官方examples目录(16个子文件夹,80+脚本)以及v0.12.9的Release Notes,挑出5个90%开发者根本不会打开的隐藏用法,一次说清楚。
放在2026年的AI版图里看,网页Agent已经从"演示玩具"变成"生产基础设施"。Anthropic、NVIDIA、Stripe都在用网页Agent舰队跑抓取、测试和填表。Browser-Use是这场变革里Python生态的事实标准库——v0.12.9发版日期2026-05-26,248个未关闭Issue,Discord里平均6分钟就有问题被解答。
隐藏用法 #1:能自己批改作业的Agent
大多数人的做法: 执行agent.run(),解析final_result(),直接上线。Agent幻觉写错了一个数字,等到生产环境才发现。
隐藏技巧: 传use_judge=True加ground_truth字符串,Browser-Use会自动起第二次LLM调用,给第一次的整条轨迹打分。Judge模型会读完浏览历史,告诉你答案到底对不对。
import asyncio
from browser_use import Agent
from browser_use.llm.browser_use.chat import ChatBrowserUse
async def main():
llm = ChatBrowserUse(model='bu-2-0')
agent = Agent(
task="如果Eliud Kipchoge能以破纪录的马拉松配速一直跑,跑到地月最近距离需要多少千小时?用Wikipedia上月球最小近月点。保留到千位。",
llm=llm,
use_judge=True,
judge_llm=llm,
ground_truth='17',
)
history = await agent.run()
if history.is_judged():
print('判决:', history.judgement())
asyncio.run(main())
效果: Agent返回17(正确)。把ground_truth改成16,Judge会输出"false"判决,并指出哪一步错了。非常适合做离线评测集。
数据来源: Browser-Use GitHub 96,591 Stars、10,826 Forks,examples/features/judge_trace.py在2026-06-02 main分支确认存在。
隐藏用法 #2:直接复用你电脑上的Chrome,登录态不用重做
大多数人的做法: 启动一个无头Chromium,手动登录每个网站,脚本一退出Session就丢。
隐藏技巧: 用Browser.from_system_chrome(profile_directory=...)挂到你本机Chrome上。所有Cookie、保存的密码、2FA令牌一起跟过来。
import asyncio
from browser_use import Agent, Browser, ChatGoogle
def select_chrome_profile():
profiles = Browser.list_chrome_profiles()
for i, p in enumerate(profiles, 1):
print(f' {i}. {p["name"]}')
choice = int(input(f'选择(1-{len(profiles)}): '))
return profiles[choice - 1]['directory']
async def main():
profile = select_chrome_profile()
browser = Browser.from_system_chrome(profile_directory=profile)
agent = Agent(
llm=ChatGoogle(model='gemini-3-flash-preview'),
task='打开amazon.com,搜索白板笔',
browser=browser,
)
await agent.run()
asyncio.run(main())
效果: 整套登录流程直接跳过。Agent打开Amazon,看到你保存的地址,直接进入搜索。Notion、Linear、Gmail,凡是你SSO后面的东西,都能用。
数据来源: Browser-Use GitHub 96,591 Stars,examples/browser/real_browser.py在2026-06-02确认存在。
隐藏用法 #3:一个LLM规划器,同时起几十个Agent并行跑
大多数人的做法: 循环遍历10个URL,顺序跑,等4分钟,放弃。
隐藏技巧: parallel_agents.py示例用一次LLM调用把任务拆成子任务,再用asyncio.gather()并发启动。要查50个明星的年龄?90秒搞定。
import asyncio
from browser_use import Agent
from browser_use.llm.google import ChatGoogle
MAIN_TASK = '查询C罗、梅西、姆巴佩、哈兰德、贝林厄姆的年龄'
async def create_subtasks(main_task: str, llm) -> list:
prompt = f"把任务拆成5个独立子任务,每个人一个,返回JSON列表:\n{main_task}"
raw = await llm.ainvoke(prompt)
import json
return json.loads(raw.content)
async def main():
llm = ChatGoogle(model='gemini-3-flash-preview')
subtasks = await create_subtasks(MAIN_TASK, llm)
agents = [Agent(task=t, llm=llm) for t in subtasks]
results = await asyncio.gather(*(a.run() for a in agents))
for t, r in zip(subtasks, results):
print(f'{t} -> {r.final_result()}')
asyncio.run(main())
效果: 5个独立浏览器Session同时跑。规划LLM把"查5个球员的年龄"拆成5个原子搜索,所有结果并行返回。
数据来源: Browser-Use GitHub 96,591 Stars,examples/custom-functions/parallel_agents.py在2026-06-02 main分支确认。
隐藏用法 #4:内置文件系统,Agent自己读写和追加
大多数人的做法: 把抓取的内容塞进超长字符串,祈祷它能塞进LLM的上下文窗口。
隐藏技巧: 给Agent传file_system_path=...,就能拿到一个沙箱化的read_file、write_file、append_file动作集。Agent可以在多步之间持久化工作,不用污染对话历史。
import asyncio
from browser_use import Agent, ChatOpenAI
async def main():
agent = Agent(
task='打开 https://mertunsall.github.io/posts/post1.html,把文章标题写入 data.md,然后把文章第一句追加到 data.md,最后读回文件,把内容发给我。',
llm=ChatOpenAI(model='gpt-4.1-mini'),
file_system_path='/tmp/agent_fs',
)
history = await agent.run()
print('最终:', history.final_result())
asyncio.run(main())
效果: Agent分多步把data.md建出来,可以回滚,最后在磁盘上拿到干净的产物,而不是内存里30K Token的大块。
数据来源: Browser-Use GitHub 96,591 Stars,examples/file_system/file_system.py在2026-06-02确认,v0.12.3(2026-03-23)Release Notes首次引入文件文件系统API。
隐藏用法 #5:自动填2FA验证码,永远不需要看到明文密钥
大多数人的做法: 把TOTP密钥塞进环境变量,祈祷没人翻日志。
隐藏技巧: 用sensitive_data={'bu_2fa_code': secret},在2FA字段渲染的那一刻把密钥注入Prompt。Agent永远看不到明文密钥,框架在DOM层现场改写输入框。
import os
from browser_use import Agent
# 从环境变量取密钥,绝不硬编码
secret_key = os.environ.get('OTP_SECRET_KEY', 'JBSWY3DPEHPK3PXP')
sensitive_data = {'bu_2fa_code': secret_key}
task = '''
1. 打开 https://authenticationtest.com/totpChallenge/ 登录。
2. 如果要2FA:输入 bu_2fa_code。
6位验证码由密钥自动生成。
'''
Agent(task=task, sensitive_data=sensitive_data).run_sync()
效果: Agent登录成功。LLM从来不直接读TOTP密钥,框架在DOM层替换成实时验证码。生产环境搭配onepassword_2fa.py里的1Password SDK使用。
数据来源: Browser-Use GitHub 96,591 Stars,examples/custom-functions/2fa.py和onepassword_2fa.py在2026-06-02 main分支确认。
总结:5个隐藏用法
-
自我评判Agent——
use_judge=True在CI里抓幻觉。 -
真机Chrome Profile——
Browser.from_system_chrome()跳过所有登录。 -
并行Agent——LLM规划器+
asyncio.gather,5倍吞吐。 -
内置文件系统——
file_system_path让上下文窗口保持干净。 -
2FA自动填充——
sensitive_data在DOM层注入TOTP验证码。
延伸阅读
如果这篇改变了你看网页Agent的角度,这些也别错过:
互动时间: 哪个Browser-Use的功能最让你震惊?评论区写下你心中的#6隐藏用法——我每条都看,最精彩的那条会写进下一篇文章。
Top comments (0)