缘起:今天风暴了一下,准备实践一下Hermes自动售卖数字产品实现自动变现的MVP,谁知道刚开始就卡在了操作百度网盘,要么被反爬,要么靠之前开发的computer use for win截图点坐标像瞎子摸象。最后换了条路——用 bb-browser 接管你已登录的 Chrome,让 Agent 直接调百度网盘的接口,终于跑通了 list、find、share、upload全自动化MVP。

痛点:我的 Agent 戳不准按钮

要让 AI Agent 自主完成数字商品交付,百度网盘是绕不开的一环。商品上传、分享链接、提取码——这套动作必须稳定可重复。

之前试了两条路:

Hermes 自带的 browser-use
打开百度首页就触发滑块验证码,页面都进不去。

自开发的computer-use-win
能控制我的桌面,但网页操作靠的是截图标坐标点按钮,百度网盘的页面结构复杂,很容易点偏,而且每次网页布局一变就要重新适配。说实话,这个tool开发完觉得挺鸡肋,对于操作Electron窗口,完全依靠大模型的视图理解,费钱不说,操作也相当不流畅,哪就更别说操作浏览器了。

两条路试下来,核心感受是:

Agent 需要的是网页里的数据,不是网页里的像素

既然我已经在 Chrome 里登录了百度网盘——为什么不让 Agent 直接用这个登录态去调页面接口呢?

这就是 bb-browser 的切入点。

方案

bb-browser 的思路很简单:
你的真实浏览器就是 API。它启动一个 daemon 连接你正在用的 Chrome,然后在页面上下文里执行 JS,直接调网页自身的 fetch 接口。

你的 Chrome(已登录百度网盘)
  └─ bb-browser daemon(连接 Chrome DevTools)
       ├─ site adapter:封装高频网站操作
       ├─ eval:在页面跑任何 JS
       └─ fetch:用页面登录态调接口

它通过 site adapter 机制封装了百度、GitHub、知乎等几十个常用网站的命令。没有内置 adapter 的网站,可以用 eval 直接跑自定义 JS。

先测百度搜索

安装 bb-browser:

npm install -g bb-browser@latest
bb-browser site update  # 拉取社区 adapter 包

一条命令测试百度搜索:

bb-browser site baidu/search 'hermes agent' 5 --json

直接拿到结构化结果,没有验证码。

Hermes自带的 browser use 工具被百度拦住,bb-browser 一次就过了。原因是它走的是真实 Chrome 里我自己的登录态和浏览习惯,不是远程无头浏览器——百度不觉得这是机器人。

百度网盘 adapter

bb-sites 社区包里没有百度网盘 adapter,自己写。

适配器目录结构:

~/.bb-browser/bb-sites/baidu-pan/
├── list.js     # 列文件
├── find.js     # 按文件名查找
└── share.js    # 创建分享链接

每个 adapter 一个 JS 文件,在 baidu.com 域名的 tab 上下文里执行 fetch。

列文件

bb-browser site baidu-pan/list --json

输出文件列表、路径、大小、fs_id。

按文件名查找

bb-browser site baidu-pan/find earn-50-rmb-product.zip --json

找到了目标文件:

name: earn-50-rmb-product.zip
path: /earn-50-rmb-product.zip
fs_id: 295531441272474
size: 7080

创建分享链接

bb-browser site baidu-pan/share earn-50-rmb-product.zip a8k2 --json

返回永久分享链接和提取码。

至此,文件查找和分享链接生成已经全自动化了。

上传:最难的一关

adapter 只能在浏览器页面上下文里跑 JS——没法读取本地任意路径的文件。这是浏览器安全模型决定的。

于是改用本地脚本 + 浏览器上下文的组合:

  1. Node 本地读取文件、计算 MD5
  2. 脚本通过 bb-browser 在百度网盘 tab 上执行一段自定义 JS
  3. JS 依次调用百度网盘的内部 API 完成文件创建和写入

先找百度网盘当前在哪个 tab:

bb-browser tab list --json
# 找到 pan.baidu.com 的短 ID,比如 713c

然后上传测试文件:

BB_BROWSER_TAB=713c node scripts/baidu-pan-upload.js \
  --file upload-test.txt \
  --name bb-upload-test.txt

输出:

{
  "ok": true,
  "path": "/bb-upload-test.txt",
  "size": 59,
  "create": {
    "fs_id": 288039632014397,
    "server_filename": "bb-upload-test.txt",
    "errno": 0
  }
}

确认文件已存在:

bb-browser site baidu-pan/find bb-upload-test.txt --json
# ✅ 找到

效果

现在全套链路已经验证通过:

操作 耗时 结果
列文件 1 秒 结构化 JSON
按文件名查找 1 秒 精准定位 fs_id
创建分享链接+提取码 2 秒 永久有效链接
本地文件上传 5 秒 返回 fs_id,可验证

上传脚本有安全限制:当前只处理 20MB 以内的小文件,不做覆盖操作,不涉及删除/重命名。

对比

与之前路线对比:

方案 验证码 登录态 输出 稳定性
Hermes browser 工具 被拦 见不到页面 -
Computer Use 点按钮 截图+坐标 低(网页一改就偏)
bb-browser 调接口 有(真实 Chrome) 结构化 JSON

bb-browser 的 adapter 机制还带来了额外好处——这套操作已经沉淀到本地适配器目录,下次直接复用。


这个验证最关键的发现不是某个技术细节,而是方向上的判断:

让 Agent 用你已登录的浏览器干活,比让 Agent 假装成你干活靠谱得多。

你已经登录了,agent 就直接用——不需要额外处理验证码、不需要构造 cookie、不需要无头浏览器。你的登录态就是 agent 的能力底座。

下一步计划:把这套操作封装成 Hermes Agent 的原生工具,让每次找文件、上传、生成分享链接都可以一条命令完成。


如需要方案细节与源码,评论区找我。

作者:爱折腾的编程老炮

Logo

Agent 垂直技术社区,欢迎活跃、内容共建。

更多推荐