第19篇:浏览器自动化——AI 帮你上网办事
Hermes 功能详解第19篇:浏览器自动化。让 AI 打开网页、点击操作、抓取信息。
这篇讲的是:如何让 Hermes Agent 像真人一样打开浏览器、点击按钮、填写表单、抓取信息,帮你把网上的活儿干了。
想象一下,你雇了一个“数字助理”,它不仅能看懂网页,还能亲手操作。你只需要说“帮我把这个网页上的商品价格都记下来”,它就能自己打开浏览器、翻页、记录,最后给你一份清单。这就是浏览器自动化的魅力。
它支持哪些“上网方式”?
Hermes 提供了好几种“浏览器替身”,你可以按需选择:
- 默认模式(什么都不用配):不设置云端提供商、
/browser connect端点或真实配置开关时,Hermes 会自己启动一个打包好的 Chromium(默认无头、每个会话一个、用完即弃),并把browser_exec指向它。你的系统 Chrome 完全不会被碰,也不需要开chrome://inspect或点“允许远程调试”弹窗,在没有桌面浏览器的服务器上也能用。驱动引擎是 browser-harness(Browser Use CLI 的引擎),它是 Hermes 的常规 Python 依赖,每次安装都会自带,桌面版也一样,不用另外下载。 - 云端模式:用 Nous 订阅(走 Tool Gateway,不用另外配密钥)、Browserbase、Browser Use 或 Firecrawl 的云浏览器,不需要你本地装浏览器,适合不想占内存的朋友。浏览器提供商插件也能自己加一个。
- 轻量引擎 Lightpanda:一个从零写起的开源无头浏览器,启动几乎瞬间、内存只有 Chrome 的 1/16、速度快 9 倍,很适合长期蹲在小内存 VPS 上的 AI。装好二进制放进
PATH,在hermes tools→ Browser Automation 里选 Lightpanda 即可(配置里是browser.engine: lightpanda)。 - 连接你自己的浏览器:用你自己的 Chrome、Edge、Brave 等浏览器(通过 CDP 连接,
/browser connect)。 - 隐身模式:用 Camofox 这个“伪装大师”,它能模拟不同的浏览器指纹,降低被网站识别为机器人的概率。
真正的“司机”只有一个工具:browser_exec。每次调用你(其实是模型)写一段 Python,代码里已经预置了浏览器助手函数——new_tab(url)、goto_url(url)、wait_for_load()、page_info()、js(expr)、fill_input(selector, text)、click_at_xy(x, y)、capture_screenshot()、cdp(...)。代码打印出来的内容就是返回值;浏览器会话(开着的标签页、cookie、当前页面)在多次调用之间保持,Python 变量则不保留。所以模型可以把“打开→等加载→抓内容→点下一步”整套动作用一次调用干完,而不是一步一次调用。
想直接看页面结构,用 page_info() 或 js('...') 取;需要底层能力(比如拿无障碍树)就 cdp('Accessibility.getFullAXTree')。
小提示: 如果只是查资料,优先用
web_search或web_extract,它们更快更省。只有需要操作页面(点按钮、填表单、处理动态内容)时才动用浏览器。
快速上手:3 步搞定云端模式
第1步:注册并拿到钥匙(API Key)
去 browserbase.com 注册一个账号,拿到你的 API Key 和项目 ID。这就像你租了一台远程电脑,钥匙就是登录凭证。
第2步:告诉 Hermes 你的钥匙
打开终端,编辑配置文件(通常在 ~/.hermes/.env),把钥匙填进去:
# 添加以下两行
BROWSERBASE_API_KEY=你的钥匙
BROWSERBASE_PROJECT_ID=你的项目ID
第3步:开始使唤 AI
现在你可以直接说:“打开百度,搜索‘今天天气’,把第一条结果念给我听。” Hermes 就会远程打开浏览器,一步步执行。
小提示: 如果你用的是 Browser Use 自家的云浏览器,需要配置
BROWSER_USE_API_KEY;其他浏览器来源则沿用它们原本的凭证,不用改。
进阶技巧:本地开发者的福音
如果你正在本地开发网站(地址是 localhost:3000),又配置了云端浏览器,Hermes 有个聪明的自动分流功能:访问公网用云端,访问本地地址自动切换到本地浏览器。这样你既能截图本地页面,又能抓取 GitHub 上的资料,不用来回切换。
这个功能默认开启,而且不受 security.allow_private_urls 约束:那个开关管的是云浏览器和网页工具,而分流用的本地浏览器跑在 Hermes 主机上,像一个 curl http://localhost 那样直连内网。所以托管在 Docker 或 VPS 上的 Hermes,能让 AI 逛到这台主机自己的回环服务和局域网。想反过来(全部走云端)可以关掉它:
browser:
cloud_provider: browserbase
auto_local_for_private_urls: false
本地浏览器还有几个常用开关:
browser:
executable_path: "" # 指定要启动的 Chromium 可执行文件,留空用打包版
user_data_dir: "" # 持久化配置目录;留空 = 每个会话用全新配置
chromium_args: [] # 额外的 Chromium 命令行参数,例如 ["--lang=de-DE"]
headed: false # true = 显示可见窗口
command_timeout: 30 # Chromium 启动超时下限(秒)
inactivity_timeout: 120 # 空闲多少秒后关闭浏览器
browser.user_data_dir 能让 cookie 和登录状态跨会话保留;留空则每次都是隔离的一次性浏览。
如果提示找不到 Chromium:跑一句
hermes pm install chromium就行。安装时加过--skip-browser(或-SkipBrowser)的,这条命令也会把那个选择撤销,以后更新会继续帮你把浏览器带最新。Linux 上可能还要补系统库:npx playwright install-deps chromium。
配套工具:CDP 直通、原生弹窗、密码保险库
除了 browser_exec,浏览器工具集还配了三个“专才”,各管一件事:
| 工具 | 干什么 |
|---|---|
browser_cdp |
发一条原始 CDP 命令:拿 cookie、控网络、在跨域 iframe 里执行代码,或者任何助手函数没覆盖到的底层操作 |
browser_dialog |
应答页面弹出的原生 JS 对话框(alert / confirm / prompt / beforeunload)——没人应答的话,页面的 JS 线程会一直卡住 |
browser_vault |
把存好的登录、银行卡、地址和 2FA 验证码填进当前页面,而密钥本身从不进入对话 |
几点实操细节:
browser_cdp和browser_dialog只在配置了 CDP 端点时才会出现(/browser connect、BROWSER_CDP_URL或browser.cdp_url);本地或云端自动起的浏览器不带这两个工具。- 弹窗策略在
browser.dialog_policy里配:默认must_respond(等 AI 明确应答,超过browser.dialog_timeout_s、默认 300 秒自动放行),也可以设auto_dismiss(一律关掉)或auto_accept(一律同意,适合那些烦人的beforeunload弹窗)。 browser_vault先用browser_vault(action="list")看有哪些条目(只显示句柄),再用fill、save_login、enter_code动作;页面来源和保存的条目对不上时,填充会被拒绝。设置和密码管理器后端见凭据保险库文档。
用你自己的登录身份上网
默认情况下,本地浏览器用的是干净的一次性配置,等于什么都没登录。如果你想让 AI 用你自己的账号去操作(比如帮你发帖、填表单),可以打开“真实配置”开关:
# ~/.hermes/config.yaml
browser:
use_real_profile: true
打开后,Hermes 会把你浏览器当前正在用的那个配置(连同 cookie、保存的登录、偏好设置)复制一份快照,然后用你真正的浏览器程序在后台无窗口运行,不会抢你的焦点,你可以继续干别的活。你的原始配置不会被直接打开,所以不会和你正在用的浏览器抢锁。
小提示: 想让浏览器窗口可见、方便你手动接管(比如过登录验证、验证码),可以设置
browser.headed: true。它还会在对话轮次之间保留浏览器,让登录状态保持温热;空闲浏览器仍会在browser.inactivity_timeout后回收,关机时全部关闭。无显示器的服务器/CI 上始终以无头方式运行,云端会话不受影响。
注意:复制不了配置时,浏览器照样能用。 真实配置浏览不会把浏览器从你手里抢走:如果 Hermes 复制不了你的配置,这次会话里 AI 拿到的是一个没有你登录状态的全新浏览器,并且它第一次的浏览器结果会说明原因(real_profile_unavailable),这样它会告诉你,而不是假装已经登录。常见情况有:
- Windows: 正在运行的 Chrome/Edge/Brave 会以独占(拒绝所有)锁占住 cookie 数据库。想以你的身份上网,得先完全退出浏览器,包括后台/托盘里的实例(Chrome 的“关闭后继续运行后台应用”会让
chrome.exe在你关窗后还活着)。 - 你的默认浏览器不是受支持的 Chromium(Firefox、Beta/Dev/Canary 渠道),或者指定的配置不存在。
- cookie 数据库读不了或损坏:提示里会点名是哪个库、以及 SQLite 报的错。
在 macOS 和 Linux 上,运行中的 Chrome 会以写锁占住 Login Data、Login Data For Account 和 Web Data(保存的密码和自动填充),但 Cookies 仍然能复制,而保持登录靠的正是 cookie。Hermes 会复制 cookie、跳过被锁的密码/自动填充文件,所以你可以让浏览器开着。每个数据库都通过 SQLite 的在线备份复制(绝不直接拷文件,那可能丢掉最近的登录)。
如果你有多个浏览器配置(比如一个工作号、一个私人号),不想让“最近用过的那个”决定 AI 的身份,可以明确指定:
browser:
use_real_profile: true
real_profile_pin: "Profile 2" # 浏览器用户数据目录下的文件夹名
指定的配置不存在时,绝不会偷偷退回最近使用的那个:AI 拿到的是一个没有你登录状态的全新浏览器,并附带一条点名这个错误配置的提示。把开关关掉后,Hermes 会在下次用到浏览器时删掉快照目录,凭证不会残留。
总结
浏览器自动化就像给 AI 装了一双“手”和“眼睛”,让它能真正替你操作网页。默认的本地 Chromium 开箱即用、云端模式适合不想折腾的朋友、Lightpanda 适合小机器、Camofox 适合需要“隐身”的场景、/browser connect 适合想用自己已登录浏览器的人。 关键是,所有操作都只用自然语言下达指令,不用写一行代码。
下篇预告: 光会操作浏览器还不够,AI 还得会“看懂”图片和视频。下一篇我们聊聊 视觉分析功能——让 AI 帮你“看图说话”。
📖 官方文档
本文根据 Hermes Agent 官方文档编写,原文见:官方文档 › user-guide/features/browser