关于 nab
nab 是本地 Rust 命令行工具和 MCP 服务,可将网页整理为适合 LLM 的 Markdown、分析音视频并监控 URL 变化。它面向需要提取网页内容和本地处理媒体的 Agent 与开发者。
主要功能
- 01将 URL 获取为简洁 Markdown
- 02按 token 预算提取内容
- 03本地转录音频和视频
- 04识别录音中的说话者
- 05监控 URL 变化并通知
适用场景
- 01为 LLM 研究获取聚焦内容
- 02转录并区分访谈说话者
- 03跟踪状态页面的变化
MCP 相关
nab 提供支持 stdio 和 Streamable HTTP 的 MCP 服务,包含内容获取与分析工具,以及用于监控 URL 的资源。MCP 获取功能支持聚焦提取和 token 限额。
配置
本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。
我们还没有获取到这个服务的安装包或远程地址,请按项目 README 中的说明安装。
工具
本地服务需要在你的电脑上运行后才能读取工具,维护者暂未提供工具列表。
详细介绍
nab
节省 Token 的网页抓取工具 + 多语言 ASR + URL 监视器。支持 MCP 2025-11-25 和 2026-07-28(部分支持:不等待的调用)。使用 Rust 编写。优先支持 macOS arm64,同时支持跨平台。

nab 是一个单独的 Rust 二进制程序,擅长做好三件事:将任意 URL 抓取为整洁的 Markdown(使用真实浏览器 Cookie 并规避反机器人机制);使用设备端多语言 ASR 和说话人分离分析任意音频或视频文件;以及监视任意 URL 的变更,并在内容发生变化时推送通知。一切都在本地运行,默认无需设置 API 密钥。输出内容专为大模型上下文窗口优化。
为什么选择 nab
- 专为节省 Token 而设计。 nab 只返回大模型真正需要的内容——整洁的 Markdown、基于 BM25-lite 的查询聚焦提取,以及理解结构的 Token 预算——降低网页研究的 Token 成本,而不是把原始 HTML 倒进上下文窗口。
- 多模态,完全在设备端运行。 转录任意音频或视频并分离说话人(FluidAudio / Parakeet TDT v3 在 Apple Neural Engine 上运行——2 小时片段可达到实时速度的 131 倍,支持 25 种欧盟语言、词级时间戳,并可选用 Qwen3-ASR 支持 zh/ja/ko/vi),并通过 Apple Vision 对图像进行 OCR(支持 15 种语言,约 10–50 ms)。无需云服务,也无需 API 密钥。
- 访问需要身份验证的内容。 使用真实浏览器 Cookie、1Password 自动登录并支持 TOTP/MFA、WebAuthn 密钥、指纹伪装和 WAF 规避;可像访问公开 URL 一样,通过同一命令访问内部仪表板、SaaS 应用和付费墙后的研究内容。
- 监视网络内容。 通过 MCP 资源订阅任意 URL——支持条件 GET、语义差异比较和自适应退避。为整个网络提供 RSS。
- 默认启用提示词注入防护。 发给 AI 的隐藏指令会显示给你,而不会被模型悄然执行——参见安全性。
一切都由一个本地 Rust 二进制程序完成。无需云后端,默认无需 API 密钥,输出内容专为大模型上下文窗口优化。
快速开始
告诉你的 AI 助手(推荐):
阅读 https://github.com/MikkoParkkola/nab,并将 nab 安装为我的网页抓取和音频分析 MCP 服务
你的 Agent 会安装二进制程序、完成自身配置,然后开始抓取。可在 Claude Code、Cursor、Windsurf 以及任何可访问终端的 AI 中使用。
或者手动安装并尝试:
brew trust --tap MikkoParkkola/tap # Homebrew 6.0+
brew install MikkoParkkola/tap/nab # install
nab fetch https://news.ycombinator.com # fetch as markdown
nab models fetch fluidaudio # download ASR model
nab analyze interview.mp4 --diarize # transcribe + identify speakers
nab watch add https://status.openai.com --interval 5m # subscribe to changes
功能
| 命令 | 功能说明 |
|---|---|
nab fetch <url> | 将任意 URL 获取为整洁的 Markdown。支持 HTTP/3、浏览器 Cookie 注入(Brave / Chrome / Firefox / Safari / Edge / Dia)、1Password 自动登录、指纹伪装、获取时使用 YARA-X 对提示词注入/数据外泄特征进行脱敏,以及 12 个站点提供方。MCP 获取还支持面向查询的提取、可读性处理和令牌预算。 |
nab browser <url> | 通过已配置的 Chrome DevTools Protocol WebSocket 端点,明确选择使用浏览器渲染 JavaScript 密集型网页。不捆绑 Chromium,默认情况下 nab fetch 绝不会自动启动浏览器或远程提供方。 |
nab analyze <video|audio> | 转录并区分说话人。使用 Apple Neural Engine 上的 FluidAudio(Parakeet TDT v3),处理 2 小时片段可达实时速度的 131 倍,提供词级时间戳,支持 25 种欧盟语言,可选用 Qwen3-ASR 处理 zh/ja/ko/vi,也可通过 MCP sampling 选择主动阅读。 |
nab watch add <url> | 监控 URL,并通过可订阅的 MCP 资源推送通知。覆盖整个 Web 的 RSS。支持条件 GET、语义差异和自适应退避。 |
nab models fetch <name> | 持久安装推理模型二进制文件。支持 fluidaudio(macOS Apple Silicon 上的默认选项)、sherpa-onnx(跨平台 Parakeet TDT,CPU 实时速度约 30 倍)和 whisper(通用备用方案,whisper-large-v3-turbo,支持 99 种语言)。 |
nab-mcp | MCP 2025-11-25 和 2026-07-28 服务。支持 stdio + Streamable HTTP。提供 12 个工具、4 个提示词、2+N 个资源、结构化日志、sampling、roots、elicitation。 |
nab::content::ocr | Apple Vision OCR 引擎。支持 15 种语言。由 Apple Neural Engine 加速。每张图像约需 10–50 ms。仅限 macOS。 |
安全:提示词注入防护
网页越来越常带有写给 AI 而非写给你的指令——这些指令隐藏在 HTML 注释、display:none / aria-hidden 文本、data-ai / data-mcp / data-agent 属性载荷或 WebMCP 清单中。使用天真的工具获取此类网页时,这些隐藏指令会直接进入模型的上下文,并可能被执行。这类攻击被称为提示词注入式网络钓鱼。
nab 将每个获取的网页都视为恶意输入,并在任何内容到达你的 Agent 之前运行两个本地、无需联网的防护机制——默认启用,无需标记或设置:
- 安全摄取防护 — 检测并剥离人类不可见、针对机器的标记(面向 AI 的注释、隐藏的
display:none/aria-hidden文本、仅供 Agent 使用的data-*载荷、WebMCP 广告),并以Info/Warn/Block严重级别报告每次检测,让你看到网页试图告诉 Agent 什么,而不是让这些内容被悄悄执行。 - YARA-X 特征防护 — 扫描每个返回的正文,查找提示词注入、数据外泄、机密泄露和混淆特征,默认对匹配的部分进行脱敏。设置
NAB_YARA_ACTION=refuse可直接阻止获取(或设置NAB_YARA_BYPASS=1作为经过审计的紧急退出选项)。
最终效果:隐藏指令会变得对你可见,而不会被模型执行——这正是让 Agent 使用 nab fetch 而非内置网页获取工具的有力理由。
**许可:**两种防护机制均为 Enterprise Edition 模块——根据 PolyForm Noncommercial 1.0.0,个人及非商业用途免费;商业/企业用途需要商业许可证(参见 COMMERCIAL.md 和 许可部分)。
安装
Homebrew(macOS,推荐)
brew tap MikkoParkkola/tap
brew install nab
预构建二进制文件(无需 Rust 工具链)
大多数用户应选择此方式——这些二进制文件可直接运行,无需在你的机器上编译。
如果你安装了 cargo-binstall,它会自动获取适用的预构建二进制文件:
cargo binstall nab
否则,请直接从 GitHub Releases 下载。下表中的每个平台都提供 nab CLI 和 nab-mcp 服务,以及 checksums-sha256.txt:
| 平台 | CLI 二进制文件 | MCP 服务二进制文件 |
|---|---|---|
| macOS Apple Silicon | nab-aarch64-apple-darwin | nab-mcp-aarch64-apple-darwin |
| macOS Intel | nab-x86_64-apple-darwin | nab-mcp-x86_64-apple-darwin |
| Linux x86_64 (glibc) | nab-x86_64-unknown-linux-gnu | nab-mcp-x86_64-unknown-linux-gnu |
| Linux x86_64(静态 musl) | nab-x86_64-unknown-linux-musl | nab-mcp-x86_64-unknown-linux-musl |
| Linux ARM64 (glibc) | nab-aarch64-unknown-linux-gnu | nab-mcp-aarch64-unknown-linux-gnu |
| Linux ARM64(静态 musl) | nab-aarch64-unknown-linux-musl | nab-mcp-aarch64-unknown-linux-musl |
| Windows x64 | nab-x86_64-pc-windows-msvc.exe | nab-mcp-x86_64-pc-windows-msvc.exe |
macOS Apple Silicon 安装示例(请将文件名替换为适用于你平台的文件名):
shasum -a 256 -c checksums-sha256.txt --ignore-missing
chmod +x nab-aarch64-apple-darwin
mv nab-aarch64-apple-darwin /usr/local/bin/nab
xattr -d com.apple.quarantine /usr/local/bin/nab 2>/dev/null || true
从 crates.io 安装(从源代码编译)
在本地构建 nab——需要 Rust 工具链(1.95 或更高版本),并需要几分钟时间:
cargo install nab
从源代码构建
git clone https://github.com/MikkoParkkola/nab.git
cd nab
cargo install --path .
避免重复安装
如果你通过多个渠道安装 nab(例如,同时使用 Homebrew tap
和 cargo install),最终使用哪个副本取决于 PATH 顺序。在许多
配置中,/opt/homebrew/bin 位于 ~/.cargo/bin 之前,因此 Homebrew 二进制文件可能会
遮盖更新的 cargo 安装版本——此时 nab --version 会显示较旧的版本。
运行内置诊断工具,查看 PATH 中的所有 nab、实际使用的是哪个版本,
以及它们各自的版本号:
nab doctor
如果 PATH 中的二进制文件已过时,其中的 doctor 命令可能早于此
命令;请通过完整路径调用较新的安装版本进行诊断,例如
~/.cargo/bin/nab doctor。要解决此问题,请只保留一种安装渠道
(brew uninstall nab 或 cargo uninstall nab),或调整 PATH 顺序,
将你想使用的安装目录放在前面。
MCP 配置
MCP Registry 名称:mcp-name: io.github.MikkoParkkola/nab
将以下内容添加到 MCP 客户端配置中(Claude Desktop、Cursor、Windsurf 等):
{
"mcpServers": {
"nab": {
"command": "nab-mcp",
"args": []
}
}
}
或者使用自动安装程序:
nab mcp install # Claude Desktop (default)
nab mcp install --client claude-code # Claude Code
nab mcp install --client cursor # Cursor
nab mcp install --client windsurf # Windsurf
nab mcp install --client codex # OpenAI Codex CLI
nab mcp install --client vscode # VS Code Copilot
nab mcp install --client zed # Zed
nab mcp install --dry-run # preview without writing
也支持:gemini、amazon-q、lm-studio。
完整的工具列表请参阅 工具,功能和 HTTP 传输说明请参阅 MCP 集成。
Claude Code 插件
此仓库包含一个本地 Claude Code 插件,位于 plugin/。它将 nab MCP 自动注册功能与 Claude Elite 的 research、url-insight、wayback、ia 和 oreilly 技能打包在一起。
claude --plugin-dir ./plugin
该插件为 fetch、经身份验证的 Brave Cookie 抓取、归档检索和多来源研究提供 /nab 工作流。它优先展示 nab 的身份验证感知路径:对于现有浏览器会话,使用 nab fetch --cookies brave <url>;对于 1Password/TOTP 流程,使用 nab fetch --1password <url>。
用法
Fetch
# Basic fetch — auto-detects browser, returns markdown
nab fetch https://example.com
# Use cookies from a specific browser
nab fetch https://github.com/notifications --cookies brave
# 1Password auto-login (TOTP/MFA supported)
nab fetch https://internal.company.com --1password
# Google Workspace (Docs, Sheets, Slides) with comments
nab fetch --cookies brave "https://docs.google.com/document/d/DOCID/edit"
# Output JSON with confidence scores
nab fetch https://example.com --format json
# Batch fetch with parallelism
nab fetch --batch urls.txt --parallel 8
# Explicit browser rendering for JS-heavy pages
NAB_BROWSER_CDP_WS=wss://... nab browser https://example.com
nab fetch https://example.com --render --browser-cdp-url wss://...
fetch 的常用标志:
| 标志 | 描述 |
|---|---|
--cookies <browser> | auto、brave、chrome、firefox、safari、edge、none |
--1password / --op | 查询 1Password 凭据并自动登录 |
--proxy <url> | HTTP 或 SOCKS5 代理 |
--format <fmt> | full(默认)、compact、json |
--raw-html | 跳过 Markdown 转换 |
--readability | 强制对通用 HTML 页面进行可读性提取 |
--max-output-tokens <n> | 设置输出令牌上限;返回的 Markdown 会预留 80% 的空间 |
--remote-fallback | 选择启用通过 r.jina.ai 远程恢复内容较少的页面;内部、需身份验证或敏感 URL 请勿使用 |
--render / --interactive | 选择启用配置好的 CDP 浏览器渲染,以处理大量使用 JS 的页面;需要 NAB_BROWSER_CDP_WS 或 --browser-cdp-url |
--diff | 显示与上次抓取相比的变化 |
-X <method> -d <data> | HTTP 方法和请求正文 |
-o <path> | 将正文写入文件 |
MCP fetch 还支持 focus、readability、max_tokens 和 session 参数,用于按查询重点提取内容、可读性提取、结构感知令牌预算和持久化加密 Cookie 会话。
Analyze
nab analyze 在本地转录音频和视频文件。macOS arm64 上的默认后端为 FluidAudio,它会在 Apple 神经网络引擎上运行 Parakeet TDT v3。
# Download the ASR model (~600 MB, one-time)
nab models fetch fluidaudio
# Transcribe a video
nab analyze interview.mp4
# Add speaker diarization (PyAnnote community-1)
nab analyze interview.mp4 --diarize
# Force a language hint (BCP-47)
nab analyze podcast.mp3 --language fi
# Word-level timestamps
nab analyze talk.mp4 --word-timestamps
# Active reading: nab uses MCP sampling to look up references mentioned in the audio
nab analyze interview.mp4 --active-reading
# Expose speaker embeddings for matching against hebb's voiceprint database
nab analyze interview.mp4 --diarize --include-embeddings
# Output JSON
nab analyze podcast.mp3 --format json
一份时长为 2 小时 9 分钟的英语音频文件(Karen Hao 访谈,M 系列 MacBook Pro)的实际数据:
| 指标 | 数值 |
|---|---|
| 实际耗时 | 59.6 秒 |
| 实时处理倍速 | 131 倍 |
| FluidAudio 平均置信度 | 97.18 % |
| 音频提取(ffmpeg) | 约为实时速度的 650 倍 |
| 后端 | 平台 | 语言 | 说话人分离 |
|---|---|---|---|
fluidaudio(macOS arm64 上的默认后端) | macOS arm64 | 25 种欧盟语言;通过 Qwen3-ASR 可选支持中文、日语、韩语和越南语 | PyAnnote community-1 |
sherpa-onnx | Linux/x86、macOS、Windows | Parakeet ONNX,25 种以上语言 | sherpa-onnx pyannote-seg-3.0 |
whisper-rs | 通用备用方案 | whisper-large-v3-turbo,99 种语言 | 无 |
Watch
nab watch 可将任意 URL 转换为可订阅的资源。内容发生变化时,MCP 客户端会收到 notifications/resources/updated 通知。
nab watch add https://news.ycombinator.com --interval 10m
nab watch add https://example.com/pricing --interval 1h --selector "table.pricing"
nab watch add https://api.openai.com/status --interval 5m --notify-on regression
nab watch list
nab watch logs <id>
nab watch remove <id>
每个监视项的选项:
| 标志 | 默认值 | 描述 |
|---|---|---|
--interval <duration> | 1h | 轮询间隔(5m、1h、24h) |
--selector <css> | none | 使用 CSS 选择器,将差异范围限定为单个元素 |
--notify-on <kind> | any | any、regression、semantic |
--diff <kind> | semantic | text、semantic、dom |
轮询器使用条件 GET(If-None-Match、If-Modified-Since),因此 304 响应几乎不产生任何开销。连续失败五次的监视项会自动静音。遇到 429 和 503 时会启用自适应退避。
Models
nab models list # show installed model versions
nab models fetch fluidaudio # download FluidAudio binary + Parakeet weights
nab models update fluidaudio # check for upstream updates
nab models verify fluidaudio # checksum + smoke test
whisper 和 sherpa-onnx 均作为跨平台备用方案,与 macOS 默认的 fluidaudio 后端一同提供。
MCP 集成
nab-mcp 是原生 Rust MCP 服务。它通过 stdio(默认)或 Streamable HTTP 运行。它并未完全遵循 2026-07-28。在该版本下,无需等待的调用均可处理,包括 fetch、fetch_batch、submit、auth_lookup、fingerprint、validate、benchmark、watch_create、watch_list 和 watch_remove。仅当 login、analyze 和 task 调用不会触发征询或采样时,才会处理这些调用。会触发征询或采样的 2026-07-28 调用会返回 JSON-RPC 错误,不会等待。会话、征询、采样和任务仍使用 2025-11-25。2026-07-28 请求无需 initialize,也无需会话 ID。在 HTTP 上,该调用会发送匹配的 mcp-protocol-version 标头。在 stdio 上,成功响应或 JSON-RPC 错误都可能是第一条消息。crates.io 构建没有 SDK 补丁,因此该 nab-mcp 编译时不会包含 2026 钩子,也不会提供 2026-07-28 服务。
快速设置(推荐)
nab mcp install # Claude Desktop (default)
nab mcp install --client claude-code # Claude Code
nab mcp install --client cursor # Cursor
nab mcp install --client windsurf # Windsurf
nab mcp install --client codex # OpenAI Codex CLI
nab mcp install --client vscode # VS Code Copilot
nab mcp install --client zed # Zed
nab mcp install --dry-run # preview what would change
也支持:gemini、amazon-q、lm-studio。此操作会自动检测 nab-mcp 二进制文件的路径,备份现有配置,并添加 nab 条目。安装后请重启客户端。
手动设置
添加到 MCP 客户端配置(~/.config/claude/mcp.json 或同等配置文件):
{
"mcpServers": {
"nab": {
"command": "nab-mcp",
"args": []
}
}
}
HTTP 传输
nab mcp serve --http 127.0.0.1:8765
# or directly:
nab-mcp --http 127.0.0.1:8765
默认绑定到 localhost。根据规范执行来源检查和 MCP-Protocol-Version 标头验证。
MCP 功能
| 功能 | 状态 |
|---|---|
| 工具 | 12 个工具,带有结构化输出架构、注释和验证错误 |
| 提示词 | 4 个提示词(fetch-and-extract、multi-page-research、authenticated-fetch、match-speakers-with-hebb) |
| 资源 | 2 个静态资源 + N 个动态监视资源,均可订阅 |
| 日志记录 | notifications/message,使用 RFC 5424 级别 |
| 采样 | nab 回调宿主大模型,用于主动阅读、重点提取和表单自动填充 |
| 根目录 | 查询 roots/list,用于工作区范围内的保存 |
| 交互请求 | OAuth/SSO 的表单模式 + URL 模式 |
| 参数补全 | 使用 completion/complete 补全工具参数 |
| 服务图标 | 浅色 + 深色 SVG |
| 传输方式 | stdio + Streamable HTTP(可恢复、按会话范围隔离) |
工具
nab-mcp 提供 12 个 MCP 工具:
fetch— 获取 URL 并转换为整洁的 Markdown,支持 Cookie、重点、令牌预算和会话fetch_batch— 并行获取多个 URL(HTTP/2 多路复用、任务增强型异步执行)submit— 提交网页表单,支持 CSRF 处理和智能字段提取login— 使用 1Password 凭据自动登录网站,包括 TOTP/MFAauth_lookup— 查询 URL 对应的 1Password 凭据,但不暴露密码fingerprint— 生成逼真的 Chrome、Firefox 或 Safari 浏览器指纹配置validate— 针对真实网站运行验证测试套件(HTTP/2、HTTP/3、TLS 1.3、1Password)benchmark— 多次计时获取 URL,并统计最小值、平均值和最大值analyze— 使用多语言 ASR 转录音频/视频并区分说话人watch_create— 创建 URL 监视项,在内容发生变化时发送 MCP 资源通知watch_list— 列出活动的 URL 监视项及其 ID、URL 和轮询状态watch_remove— 按 ID 移除 URL 监视项
使用可选的 task Cargo 功能编译的版本还会提供 task,这是一个实验性网页任务入口,可获取并筛选种子 URL,然后返回发现的 API 端点。
站点提供方
nab 可识别 12 个平台的 URL,并使用 API 或稳定的结构化页面数据,而非大范围抓取 HTML。
| 提供方 | URL 模式 | 方法 |
|---|---|---|
| Twitter / X | x.com/*/status/* | FxTwitter API |
reddit.com/r/*/comments/* | JSON API | |
| Hacker News | news.ycombinator.com/item?id=* | Firebase API |
| GitHub | github.com/*/*/issues/*、*/pull/* | REST API |
| Google Workspace | Docs、Sheets、Slides | 导出 API + OOXML |
| YouTube | youtube.com/watch?v=*、youtu.be/* | oEmbed |
| Wikipedia | *.wikipedia.org/wiki/* | REST API |
| StackOverflow | stackoverflow.com/questions/* | API |
| Mastodon | */users/*/statuses/* | ActivityPub |
linkedin.com/posts/* | oEmbed | |
instagram.com/p/*、*/reel/* | oEmbed | |
| Substack | *.substack.com/p/*、substack.com/*/p/* | 文章 DOM(.available-content) |
如果没有匹配的提供方,nab 会回退到标准 HTML 获取和 Markdown 转换。
架构
nab 围绕一组精简且相互独立的子系统构建:cmd/(CLI)、bin/mcp_server/(MCP 服务)、content/(HTML / PDF / OCR 流水线)、analyze/(ASR + 说话人分离 + 视觉)、watch/(URL 监控 + 订阅)、auth/(Cookie + 1Password + WebAuthn)、site/(站点专用提供程序),以及共享的 AcceleratedClient(HTTP/3 + 连接池 + 指纹存储)。
参见:
- docs/ARCHITECTURE.md — 完整的模块图和数据流
- docs/sovereign-stack.md — nab 如何与 hebb 组合,构建本地优先的多模态技术栈
- docs/getting-started.md — 新用户入门指南
设计说明
docs/design/ 目录记录了近期的设计提案:
- analyze-v2.md — 多语言 ASR + 说话人分离 + 视觉流水线
- url-watch-resources.md — 将 URL 监控作为 MCP 可订阅资源
- active-reading.md — 通过 MCP 采样实现主动阅读
- mcp-spec-closure.md — 补齐 MCP 2025-11-25 规范的最后几处缺漏
配套工具
nab 是主权多模态技术栈的一半。另一半是 hebb,一个受神经科学启发的记忆 MCP 服务。组合示例:
nab analyze --diarize --include-embeddings→hebb voice_match→ 为说话人标注姓名nab fetch URL→hebb kv_set→ 个人主权网络记忆nab watch add URL→hebb kv_set(更新时)→ 任何网页的变更时间序列
完整的组合说明请参见 docs/sovereign-stack.md。
配置
nab 无需配置文件。它采用智能默认设置:自动检测浏览器 Cookie、随机化指纹,并输出 Markdown。
持久化状态位于 ~/.nab/:
| 路径 | 用途 |
|---|---|
~/.nab/snapshots/ | 用于 --diff 变更检测的内容快照 |
~/.nab/sessions/ | AES-256-GCM 加密的命名会话容器(非 Windows) |
~/.nab/session-key | 本地生成的会话加密主密钥(非 Windows) |
~/.nab/fingerprint_versions.json | 缓存的浏览器版本(每 14 天自动更新) |
~/.local/share/nab/watches/ | URL 监控状态 |
~/.local/share/nab/models/ | 已安装的推理模型二进制文件 |
~/.nab/telemetry/ | 每日心跳时间戳和本产品的安装 ID |
~/.revaluator/machine-id | 此计算机上各产品共享的随机 ID |
可选的插件配置位于 ~/.config/nab/plugins.toml。插件示例请参见 docs/getting-started.md。
环境变量
| 变量 | 用途 |
|---|---|
HTTPS_PROXY / https_proxy | HTTPS 代理 URL |
HTTP_PROXY / http_proxy | HTTP 代理 URL |
ALL_PROXY / all_proxy | 所有协议的代理 |
RUST_LOG | 日志级别(例如,nab=debug) |
NAB_SSRF_ALLOW_PRIVATE | 设置为 1/true 以允许抓取私有/内部地址(RFC 1918、IPv6 ULA、CGN)。默认关闭。环回地址和云元数据地址仍会被阻止 |
NAB_SSRF_ALLOWLIST | 以逗号分隔的 CIDR/IP 允许列表,仅豁免其中的私有范围(例如,10.252.0.0/16,192.168.1.5)。默认为空;建议优先使用此选项,而非上方的全局标志 |
NAB_KEYCHAIN_INTERACTION | 后台自动化时设置为 never:macOS 钥匙串读取不会打开界面,并且会禁用可能显示提示的 Python Cookie 后备方案 |
NAB_NO_TELEMETRY | 设置为 0 或 false 以外的任何值即可跳过每日心跳。NO_TELEMETRY 和 DO_NOT_TRACK 具有相同作用 |
NAB_TELEMETRY_ENDPOINT | 替换心跳 URL。值为空时使用默认值 |
PUSHOVER_USER / PUSHOVER_TOKEN | 用于 MFA 的 Pushover 通知 |
TELEGRAM_BOT_TOKEN / TELEGRAM_CHAT_ID | 用于 MFA 的 Telegram 通知 |
库用法
use nab::AcceleratedClient;
#[tokio::main]
async fn main() -> anyhow::Result<()> {
let client = AcceleratedClient::new()?;
let html = client.fetch_text("https://example.com").await?;
println!("Fetched {} bytes", html.len());
Ok(())
}
要求
- Rust 1.95+,用于从源代码构建
- ffmpeg,用于
analyze和stream命令:brew install ffmpeg - 1Password CLI(可选,用于凭据集成):参见 1Password 文档
贡献
请参阅 CONTRIBUTING.md,了解开发环境设置、代码风格指南、测试说明和拉取请求流程。
负责任地使用
此工具包含浏览器 Cookie 提取和指纹伪装功能。这些功能旨在用于合法场景,例如访问你自己的已验证内容、自动化测试以及你已获授权的网站。请负责任地使用。
故障排除
MCP 服务无法连接? 直接在终端运行 nab-mcp,查看错误信息。运行 which nab-mcp 确认二进制文件是否存在。如果通过 cargo install nab 安装,nab 和 nab-mcp 都应位于你的 $PATH 中。
Cookie 提取失败? 在 System Settings > Privacy & Security > Full Disk Access 中为终端授予“完全磁盘访问权限”(macOS)。浏览器 Cookie 存储在受保护的目录中。使用 --cookies brave 指定浏览器。绝不能显示钥匙串授权对话框的后台工具可运行 NAB_KEYCHAIN_INTERACTION=never nab ...。macOS 可以静默提供的明文 Cookie 和凭据仍可使用;需要批准的凭据则不可用,Nab 会默认拒绝,而不会调用可能触发提示的备用方案。
未找到 ASR 模型? 运行 nab models fetch fluidaudio 下载模型(约 542 MB)。模型目录为 ~/.nab/models/。运行 nab models list 查看已安装的模型。
Fetch 返回的是 HTML 而不是 Markdown? 某些网站会阻止自动访问。尝试运行 nab fetch URL --cookies brave 使用浏览器会话,或者运行 nab fetch URL --1password 访问需要登录的网站。
从 JavaScript 应用获取的内容过少? 默认情况下,nab fetch 优先使用本地方式且仅通过 HTTP 获取内容。对于需要执行 DOM 的页面,请使用 NAB_BROWSER_CDP_WS 或 --browser-cdp-url 配置外部 CDP 端点,然后运行 nab browser URL 或 nab fetch URL --render。远程浏览器提供商可能会收到 URL 和渲染后的页面内容;本地浏览器 Cookie 不会自动提供给远程浏览器。
YARA-X 防护机制对获取的内容进行了脱敏? nab fetch 和 MCP fetch 默认会在保存或返回内容前扫描返回的正文。设置 NAB_YARA_ACTION=refuse 可改为阻止操作,而不是进行脱敏。NAB_YARA_BYPASS=1 是经过审计的紧急退出选项。
监视时出现“too many open files”? 增大 ulimit:ulimit -n 4096。macOS 默认限制(256)对于许多并发监视任务来说过低。
生态系统
nab 是以下一系列 MCP 工具的一部分:
| 工具 | 说明 |
|---|---|
| mcp-gateway | 通用 MCP 网关——精简的 12-15 个工具界面取代 100 多项注册 |
| trvl | AI 旅行 Agent——提供 36 个 MCP 工具,用于航班、酒店和地面交通 |
| nab | 网页内容提取——使用 Cookie 和反机器人绕过功能获取任意 URL |
| axterminator | macOS GUI 自动化——通过 Accessibility API 提供 34 个 MCP 工具 |
许可证
自 v0.9.0 起,nab 采用双重许可:
| 范围 | 许可证 | 文件 |
|---|---|---|
| 核心抓取 / 分析 / 监视 / MCP 服务 / 公共网页抓取 | MIT | LICENSE |
| 指定的企业版模块(经过身份验证的访问 + 反机器人) | PolyForm Noncommercial 1.0.0 | LICENSE-EE.md |
指定为 EE 的路径(每个文件都包含 // SPDX-License-Identifier: PolyForm-Noncommercial-1.0.0):
src/auth/— 1Password、WebAuthn 和浏览器 Cookie 注入(高级身份验证访问)src/fingerprint/— 浏览器指纹伪装(规避反机器人机制)src/waf/— WAF 挑战处理src/site/— 针对各站点的提供方集成(专有领域知识)src/security/— 安全摄取防护,用于剥除面向机器的 HTML 指令和隐藏元数据crates/nab-yara-engine/— 抓取时执行 YARA-X 签名防护,检测提示词注入、数据外泄、机密信息和混淆内容
实际含义:
- 可免费用于非商业用途,也可修改和再分发。
- EE 模块的商业用途需要单独的商业许可证。
- 企业可通过 GitHub Sponsors 购买标准商业使用许可证,费用为每个指定项目每月 EUR 500。
- 有关商业用途、分支、包装器、共享服务和托管服务部署,请参阅 COMMERCIAL.md。
- v0.9.0 之前的所有版本均完全采用 MIT 许可,并将永远保持 MIT 许可。
评论
一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。