Hermes + 爬虫浏览器 调研手册
概述
本文档记录关于 Hermes Agent 与 Web 爬虫/浏览器自动化 的调研内容、工具链、使用方式及集成方案。
Hermes 内置完整的浏览器自动化工具集,同时可通过 MCP、CLI 子进程、Python 脚本等方式与第三方爬虫框架集成,实现从简单数据提取到复杂网页交互的全覆盖。
Hermes 内置浏览器工具
Hermes Agent 自带完整的浏览器自动化能力(Browser Toolset),基于本地 Chromium 或远程 Browserbase/Camofox 浏览器实例。
可用工具
| 工具 | 功能 |
|---|---|
browser_navigate | 导航到指定 URL,初始化浏览器会话 |
browser_snapshot | 获取页面可访问性树的文本快照(含交互元素 ref ID) |
browser_click | 按 ref ID 点击页面元素(如 @e5) |
browser_type | 向输入框填写文本 |
browser_scroll | 向上/向下滚动页面 |
browser_press | 键盘按键(Enter、Tab、Escape 等) |
browser_vision | 截图 + AI 视觉分析 |
browser_console | 读取浏览器控制台输出 / 执行 JS 表达式 |
browser_get_images | 获取页面所有图片 URL 和 alt 文本 |
browser_back | 返回上一页 |
使用场景
- 低代码爬取 — navigate 到页面 → snapshot 查看内容 → 提取数据
- 表单自动化 — type 填写 → click 提交 → 读取结果
- 浏览器内 JS 执行 — browser_console 的 expression 参数可直接运行 JS 提取复杂数据
- 验证码/视觉分析 — browser_vision 截图分析
- 单页应用(SPA)爬取 — 浏览器渲染后提取动态内容
启用方式
hermes tools enable browser
# 需要可用的 Chromium(本地安装 / Browserbase / Camofox)
MCP + 浏览器集成
Hermes 原生 MCP 客户端可接入多种浏览器/爬虫相关 MCP 服务器:
Puppeteer MCP
- 用途:Headless Chrome 控制(导航、截图、PDF、点击、填写)
- 安装:在 Hermes config.yaml 中添加 MCP 配置
- 优势:比内置 browser 工具更细粒度的页面控制
Playwright MCP
- 用途:跨浏览器自动化(Chromium / Firefox / WebKit)
- 优势:多浏览器支持、网络拦截、移动端模拟
Browserbase MCP
- 用途:云端无头浏览器(反检测、代理、并发)
- 优势:大规模爬虫、反爬规避
终端 + 爬虫框架集成
通过 Hermes 的 terminal() 工具可调用常见的 Python/Node.js 爬虫框架:
Python 生态
| 框架 | 用途 | 安装 |
|---|---|---|
| requests + BeautifulSoup4 | 静态 HTML 解析提取 | pip install requests beautifulsoup4 |
| Scrapy | 大规模爬虫框架 | pip install scrapy |
| Playwright (Python) | 无头浏览器自动化 | pip install playwright && playwright install |
| Selenium | 传统浏览器自动化 | pip install selenium |
| httpx | 异步 HTTP 客户端 | pip install httpx |
| selectolax | 高性能 HTML 解析 | pip install selectolax |
| pandas | 结构化数据处理/导出 | pip install pandas |
Node.js 生态
| 工具 | 用途 | 安装 |
|---|---|---|
| Puppeteer | Headless Chrome 控制 | npx puppeteer |
| Playwright (Node) | 跨浏览器自动化 | npx playwright |
| Cheerio | 服务端 jQuery 解析 | npm install cheerio |
| Crawlee | 爬虫框架(支持 headless) | npm install crawlee |
纯终端工具
| 工具 | 用途 |
|---|---|
curl | HTTP 请求 |
wget | 文件/网站下载 |
jq | JSON 解析 |
htmlq | HTML CSS 选择器解析 |
pup | 命令行 HTML 解析器 |
ripgrep (rg) | 文本搜索 |
ydotool / xdotool | Linux 桌面自动化 |
集成方案
方案一:内置 Browser 工具(推荐日常使用)
架构:Hermes 直接调用内置浏览器工具
// 示例:爬取新闻标题
browser_navigate(url: "https://example.com/news")
browser_snapshot() // 获取页面内容和元素 ref
// Hermes 从 snapshot 提取需要的数据
// 示例:搜索并提取结果
browser_navigate(url: "https://google.com")
browser_type(ref: "@e3", text: "查询关键词")
browser_press(key: "Enter")
browser_snapshot() // 搜索结果
优势:零额外依赖,工具原生集成,支持 AI 视觉分析
局限:不适合大规模高并发爬取
方案二:Python 脚本 + execute_code(中等规模)
架构:Hermes 通过 execute_code 运行 Python 爬虫脚本
from hermes_tools import terminal
# 安装依赖
terminal("pip install httpx beautifulsoup4")
# 爬取脚本
code = \"""
import httpx, json
from bs4 import BeautifulSoup
r = httpx.get('https://example.com', timeout=30)
soup = BeautifulSoup(r.text, 'html.parser')
titles = [h.text.strip() for h in soup.select('h2.title')]
print(json.dumps(titles, ensure_ascii=False))
\"""
result = terminal(f'python3 -c {shlex.quote(code)}')
data = json_parse(result['output'])
优势:Python 生态完整,适合中等复杂度的爬虫任务
方案三:Playwright/Scrapy 脚本 + terminal(大型爬虫)
架构:编写独立爬虫脚本,通过 terminal() 执行
# 写入爬虫脚本
write_file(path="/tmp/crawler.py", content="...")
# 执行
terminal("python3 /tmp/crawler.py --output /tmp/data.json", timeout=300)
# 读取结果
read_file(path="/tmp/data.json")
优势:可处理复杂爬虫逻辑(翻页、登录、反爬)、大文件、长时间运行
方案四:Cron 定时爬虫
架构:Hermes cron 定时执行爬虫任务
- 定时触发 → 爬取数据 → 处理/分析 → 通过 Telegram 等平台推送结果
- 适用于:价格监控、新闻聚合、竞品跟踪
- 支持 script 模式(纯脚本爬虫)或 agent 模式(AI 驱动爬虫)
# 定时爬虫 cron 示例
cronjob(action="create", schedule="0 8 * * *",
prompt="每天早晨爬取 Hacker News 首页头条,汇总发送到 Telegram",
skills=["youtube-content"])
反爬与应对策略
| 反爬手段 | 应对方案 |
|---|---|
| User-Agent 检测 | 浏览器工具自动模拟真实 UA |
| IP 频率限制 | 代理池 / Browserbase 代理 / 延时请求 |
| Cloudflare/WAF | Playwright/Puppeteer 模拟完整浏览器指纹;Browserbase 内置反检测 |
| JavaScript 渲染 | 浏览器工具 / Playwright 自动执行 JS |
| 验证码 | browser_vision AI 识别 |
| 登录鉴权 | 浏览器工具自动登录后 maintain session |
| 动态 DOM/API | browser_console 执行 JS 提取 / 拦截 Network 请求获取原始 API 数据 |
对比总结
| 方案 | 适用场景 | 学习成本 | 性能 | 反爬能力 |
|---|---|---|---|---|
| 内置 browser 工具 | 快速交互、AI 视觉分析 | 低 | 中 | 中(真实浏览器) |
| execute_code + Python | 中等规模静态/API 爬取 | 低 | 高 | 低(需自行处理) |
| Playwright/Puppeteer MCP | 生产级浏览器爬虫 | 中 | 中 | 高(可配置指纹) |
| Scrapy 独立脚本 | 超大规模爬虫 | 高 | 最高 | 中(需中间件) |
| Browserbase (云端) | 高并发、强反爬场景 | 低 | 高(云端) | 最高 |
注意事项
- 尊重 robots.txt — 爬取前检查目标网站的爬虫协议
- 请求频率控制 — 加延时避免对目标服务器造成压力
- 大规模爬取慎用公共 IP — 建议使用代理或 Browserbase 等方案
- 浏览器权限 — 内置 browser 工具需要本地 Chromium;可通过 Browserbase 或 Camofox 使用云端浏览器
- 数据存储 — 爬取结果可通过 write_file 保存为 JSON/CSV,或集成到 gbrain/Trilium 等知识库
- 内存/超时 — 大型爬虫建议用 terminal(background=true) 避免超时
调研进度
- [x] Hermes 内置 Browser 工具调研
- [x] MCP + 浏览器集成调研
- [x] 终端爬虫框架集成调研
- [x] 集成方案设计
- [ ] PoC 验证