最近在构建 RAG 系统时,需要将大量技术文档喂给大模型。一开始使用常规的网页抓取方案,结果抓回来的内容惨不忍睹——导航栏、页脚、广告、脚本代码混在一起,50000 token 的 HTML 里真正有用的内容不到 800 token。
更麻烦的是,有些网站加了 Cloudflare 防护,直接返回 403 或验证码页面。用 Playwright 跑无头浏览器又慢又重,一个请求要等好几秒。尝试了 trafilatura、newspaper3k、readability 等开源项目,效果都不理想。
直到发现了 webclaw,一款专为 AI 工作流设计的高性能网页提取工具。

项目介绍
webclaw 的核心目标很明确:把网页转成干净、结构化、适合大模型使用的内容。

不同于传统抓取工具,webclaw 从底层重新设计了整个提取流程。它用 Rust 编写,通过 TLS 指纹模拟浏览器行为,无需启动真正的浏览器就能绕过大多数反爬机制。提取引擎会自动识别并剔除导航栏、广告、脚本等无用信息,只保留核心正文。
核心亮点
Token 优化:减少 90% 无效信息
原始 HTML 页面通常包含大量导航链接、CSS 样式、脚本代码和重复的页脚内容。这些信息对人类阅读是必要的,但对 AI 模型纯粹是浪费 token。
webclaw 采用九步优化流水线,通过文本密度、语义标签、链接比例、位置信息和上下文相关性等指标对 DOM 节点综合评分。导航栏、广告、页脚、评论区等低分值节点会被自动剔除,而文章正文、标题、图片说明等高分值节点会被保留并整理。
极速响应:比 Chrome 方案快 20 倍
传统的 Playwright、Selenium 方案需要启动完整的浏览器实例,加载渲染引擎、JavaScript 引擎、CSS 解析器等,每个请求耗时 2-3 秒。对于需要频繁访问网页的 AI Agent 来说,这种延迟无法接受。
webclaw 不启动浏览器,而是在 TLS 层面模拟浏览器行为——TCP 握手、加密套件、扩展信息、指纹特征全部模拟 Chrome 的行为,让反爬系统误以为是真实用户访问。性能表现:
- 静态页面平均响应时间仅 118ms
- 本地提取 10KB 页面只需 0.8ms
- 本地提取 100KB 页面只需 3.2ms
- 本地提取 500KB 页面只需 12.1ms
- 整体性能比基于 Chrome 的方案快 20 倍
原生 MCP 支持:无缝接入 AI Agent
webclaw 内置了 MCP(Model Context Protocol)服务器,可以直接接入 Claude Code、Cursor、Windsurf、OpenCode、Codex 等主流 AI 工具,无需编写适配代码。
只需一行命令即可完成配置:
npx create-webclaw
该命令会自动检测已安装的 AI 工具,并为每个工具生成相应配置文件。配置完成后重启 AI 工具,webclaw 的所有功能就会自动可用,Agent 可以直接执行网页抓取、站点爬取、内容对比、品牌信息提取等操作。
智能反爬绕过:自动应对 Cloudflare
现代网站普遍使用 Cloudflare、Akamai、DataDome 等反爬系统。这些系统会检查 TLS 指纹、浏览器特征等,普通的 HTTP 请求很容易被拦截。
webclaw 通过 primp 库在底层模拟 Chrome 的 TLS 指纹,使请求看起来完全像来自真实浏览器。对于需要 JavaScript 渲染的页面,webclaw 会自动检测并切换到渲染路径,无需手动配置。
丰富的输出格式
webclaw 支持多种输出格式:
| 格式 | 适用场景 |
|---|---|
| markdown | 保留结构的干净内容 |
| llm | 专为大模型优化的紧凑格式 |
| text | 纯文本,最小化格式 |
| json | 结构化元数据和提取字段 |
| html | 清理后的 HTML |
其中 llm 格式会进一步去除重复链接、空段落等,是喂给 RAG 系统的最佳选择。
快速上手
方法一:MCP 一键安装(推荐)
npx create-webclaw
方法二:Homebrew(macOS)
brew tap 0xMassi/webclaw
brew install webclaw
方法三:预编译二进制
从 GitHub Releases 页面下载 macOS 或 Linux 二进制文件:github.com/0xMassi/webclaw/releases
方法四:Docker
docker run --rm ghcr.io/0xmassi/webclaw https://example.com
使用示例
基础提取:
# 提取单页内容(默认 markdown 格式)
webclaw https://example.com
# 指定输出格式
webclaw https://example.com --format markdown
webclaw https://example.com --format llm
webclaw https://example.com --format json
只保留主内容:
webclaw https://example.com/blog/post --only-main-content
自定义选择器:
webclaw https://example.com \
--include "article, main, .content" \
--exclude "nav, footer, .sidebar, .ad"
爬取文档站:
webclaw https://docs.rust-lang.org --crawl --depth 2 --max-pages 50
提取品牌信息:
webclaw https://github.com --brand
页面变化对比:
# 保存快照
webclaw https://example.com/pricing --format json > pricing-old.json
# 对比变化
webclaw https://example.com/pricing --diff-with pricing-old.json
SDK 使用
TypeScript:
import { Webclaw } from "@webclaw/sdk";
const client = new Webclaw({
apiKey: process.env.WEBCLAW_API_KEY!
});
const page = await client.scrape({
url: "https://example.com",
formats: ["markdown"],
only_main_content: true,
});
console.log(page.markdown);
Python:
from webclaw import Webclaw
client = Webclaw(api_key="wc_your_key")
page = client.scrape(
"https://example.com",
formats=["markdown"],
only_main_content=True,
)
print(page.markdown)
总结
webclaw 是一款真正理解 AI 工作流需求的网页提取工具。它从底层重新设计了网页提取流程,通过 TLS 指纹模拟、智能内容评分、多格式输出等特性,解决了传统抓取工具的三大痛点:
- 抓不到——反爬防护
- 抓不干净——大量噪声
- 抓了没用——格式不适合 AI
如果你正在构建 RAG 系统、AI Agent,或者需要定期抓取网页内容,webclaw 值得一试。
GitHub:github.com/0xMassi/webclaw