mcpField
N
nab

nab

本地服务
github.com浏览器自动化172 天前更新

关于 nab

nab 是本地 Rust 命令行工具和 MCP 服务,可将网页整理为适合 LLM 的 Markdown、分析音视频并监控 URL 变化。它面向需要提取网页内容和本地处理媒体的 Agent 与开发者。

主要功能

  1. 01将 URL 获取为简洁 Markdown
  2. 02按 token 预算提取内容
  3. 03本地转录音频和视频
  4. 04识别录音中的说话者
  5. 05监控 URL 变化并通知

适用场景

  1. 01为 LLM 研究获取聚焦内容
  2. 02转录并区分访谈说话者
  3. 03跟踪状态页面的变化

MCP 相关

nab 提供支持 stdio 和 Streamable HTTP 的 MCP 服务,包含内容获取与分析工具,以及用于监控 URL 的资源。MCP 获取功能支持聚焦提取和 token 限额。

配置

本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。

暂未收录安装方式

我们还没有获取到这个服务的安装包或远程地址,请按项目 README 中的说明安装。

代码仓库
安装包
cargonab0.12.6

工具

还没有获取到工具列表

本地服务需要在你的电脑上运行后才能读取工具,维护者暂未提供工具列表。

详细介绍

nab

CI Crates.io Downloads docs.rs Rust License: MIT + PolyForm NC MCP Protocol MCP 2026-07-28 nab MCP server Install in VS Code Install in Cursor

节省 Token 的网页抓取工具 + 多语言 ASR + URL 监视器。支持 MCP 2025-11-25 和 2026-07-28(部分支持:不等待的调用)。使用 Rust 编写。优先支持 macOS arm64,同时支持跨平台。

demo

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-mcpMCP 2025-11-25 和 2026-07-28 服务。支持 stdio + Streamable HTTP。提供 12 个工具、4 个提示词、2+N 个资源、结构化日志、sampling、roots、elicitation。
nab::content::ocrApple 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 Siliconnab-aarch64-apple-darwinnab-mcp-aarch64-apple-darwin
macOS Intelnab-x86_64-apple-darwinnab-mcp-x86_64-apple-darwin
Linux x86_64 (glibc)nab-x86_64-unknown-linux-gnunab-mcp-x86_64-unknown-linux-gnu
Linux x86_64(静态 musl)nab-x86_64-unknown-linux-muslnab-mcp-x86_64-unknown-linux-musl
Linux ARM64 (glibc)nab-aarch64-unknown-linux-gnunab-mcp-aarch64-unknown-linux-gnu
Linux ARM64(静态 musl)nab-aarch64-unknown-linux-muslnab-mcp-aarch64-unknown-linux-musl
Windows x64nab-x86_64-pc-windows-msvc.exenab-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 arm6425 种欧盟语言;通过 Qwen3-ASR 可选支持中文、日语、韩语和越南语PyAnnote community-1
sherpa-onnxLinux/x86、macOS、WindowsParakeet 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>anyany、regression、semantic
--diff <kind>semantictext、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/MFA
  • auth_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 / Xx.com/*/status/*FxTwitter API
Redditreddit.com/r/*/comments/*JSON API
Hacker Newsnews.ycombinator.com/item?id=*Firebase API
GitHubgithub.com/*/*/issues/*、*/pull/*REST API
Google WorkspaceDocs、Sheets、Slides导出 API + OOXML
YouTubeyoutube.com/watch?v=*、youtu.be/*oEmbed
Wikipedia*.wikipedia.org/wiki/*REST API
StackOverflowstackoverflow.com/questions/*API
Mastodon*/users/*/statuses/*ActivityPub
LinkedInlinkedin.com/posts/*oEmbed
Instagraminstagram.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/design/ 目录记录了近期的设计提案:

配套工具

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_proxyHTTPS 代理 URL
HTTP_PROXY / http_proxyHTTP 代理 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 多项注册
trvlAI 旅行 Agent——提供 36 个 MCP 工具,用于航班、酒店和地面交通
nab网页内容提取——使用 Cookie 和反机器人绕过功能获取任意 URL
axterminatormacOS GUI 自动化——通过 Accessibility API 提供 34 个 MCP 工具

许可证

自 v0.9.0 起,nab 采用双重许可:

范围许可证文件
核心抓取 / 分析 / 监视 / MCP 服务 / 公共网页抓取MITLICENSE
指定的企业版模块(经过身份验证的访问 + 反机器人)PolyForm Noncommercial 1.0.0LICENSE-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 许可。

评论

支持 Markdown

第一次接触 MCP?

从协议是什么,到在客户端里装上第一个服务,这几条回答覆盖了大多数入门问题。

一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。