DEV Community

韩

Posted on

Browser-Use的5个隐藏用法 🔥

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=Trueground_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())
Enter fullscreen mode Exit fullscreen mode

效果: 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())
Enter fullscreen mode Exit fullscreen mode

效果: 整套登录流程直接跳过。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())
Enter fullscreen mode Exit fullscreen mode

效果: 5个独立浏览器Session同时跑。规划LLM把"查5个球员的年龄"拆成5个原子搜索,所有结果并行返回。

数据来源: Browser-Use GitHub 96,591 Stars,examples/custom-functions/parallel_agents.py在2026-06-02 main分支确认。

隐藏用法 #4:内置文件系统,Agent自己读写和追加

大多数人的做法: 把抓取的内容塞进超长字符串,祈祷它能塞进LLM的上下文窗口。

隐藏技巧:Agentfile_system_path=...,就能拿到一个沙箱化的read_filewrite_fileappend_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())
Enter fullscreen mode Exit fullscreen mode

效果: 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()
Enter fullscreen mode Exit fullscreen mode

效果: Agent登录成功。LLM从来不直接读TOTP密钥,框架在DOM层替换成实时验证码。生产环境搭配onepassword_2fa.py里的1Password SDK使用。

数据来源: Browser-Use GitHub 96,591 Stars,examples/custom-functions/2fa.pyonepassword_2fa.py在2026-06-02 main分支确认。

总结:5个隐藏用法

  1. 自我评判Agent——use_judge=True在CI里抓幻觉。
  2. 真机Chrome Profile——Browser.from_system_chrome()跳过所有登录。
  3. 并行Agent——LLM规划器+asyncio.gather,5倍吞吐。
  4. 内置文件系统——file_system_path让上下文窗口保持干净。
  5. 2FA自动填充——sensitive_data在DOM层注入TOTP验证码。

延伸阅读

如果这篇改变了你看网页Agent的角度,这些也别错过:

互动时间: 哪个Browser-Use的功能最让你震惊?评论区写下你心中的#6隐藏用法——我每条都看,最精彩的那条会写进下一篇文章。

Top comments (0)