关于 CrawlForge MCP Server
CrawlForge MCP Server 为 MCP 客户端提供网页抓取、爬取、搜索、研究和提取工具。它输出 Markdown 与结构化数据,并支持使用本地 Ollama 进行 LLM 提取。
主要功能
- 01网页抓取与爬取
- 02实时搜索与深度研究
- 03提取 Markdown 和 JSON
- 04使用 Ollama 提取 LLM 数据
- 05浏览器自动化与隐身访问
适用场景
- 01将网页内容提取为 Markdown
- 02批量处理多个 URL
- 03用自然语言开展研究与提取
MCP 相关
向 MCP 客户端提供抓取、爬取、搜索、研究和提取等工具,可从 Claude Desktop、Claude Code、Cursor 等客户端连接。
配置
本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。
npx -y crawlforge-mcp-serverCRAWLFORGE_API_KEY密钥CrawlForge API key for authentication and usage/credit tracking. Get a free key at https://www.crawlforge.devDATAFORSEO_LOGIN密钥DataForSEO account login. Optional — only needed to enable the serp_rank tool (real Google organic rank lookups); billed separately to the caller's own DataForSEO account.DATAFORSEO_PASSWORD密钥DataForSEO account password. Optional — only needed to enable the serp_rank tool.本地服务需要在你的电脑上安装运行环境(如 Node.js 18+)。各客户端的配置文件位置不同,请参考客户端文档。
工具
本地服务需要在你的电脑上运行后才能读取工具,维护者暂未提供工具列表。
详细介绍
为 Claude、Cursor 和任意 MCP 客户端提供 31 种网页抓取、爬取、深度研究和自主提取工具。
从任意网站获取整洁的 Markdown 和结构化 JSON。立即开始并领取 1,000 个免费积分——无需信用卡。
⭐ 在 GitHub 上为我们点星,持续关注项目动态——这确实有助于更多人发现这个项目。
目录
🎯 为什么选择 CrawlForge?
- 31 种原生支持 MCP 的工具——网页抓取、爬取、搜索、真实 Google SERP 排名跟踪、深度研究、自主
agent、统一的多格式scrape、文档处理、隐身浏览、有状态浏览器会话等,可直接从 AI 助手调用。 - 慷慨的免费额度——立即开始即可获得 1,000 个积分,无需信用卡。这是一次性赠送,而非每月发放,且积分永不过期。
- 默认使用本地 LLM——
extract_with_llm开箱即用,可调用本地 Ollama 模型:无需 LLM API 密钥、无需按 Token 付费,数据也不会离开你的设备。云端服务(OpenAI/Anthropic)为可选项。 - 适配 LLM 的输出——一次抓取即可获得整洁的 Markdown、结构化 JSON(由 Schema 驱动)、截图、链接和元数据。
- 自主
agent——用自然语言描述需求;它会规划、收集并整理答案,同时由编排器强制执行硬性限制(最大步骤数、URL 数和运行时长)——无需提供 URL。 - 强化安全防护——每次请求均有 SSRF 防护、默认拒绝的后端允许列表、经过审核的浏览器自动化操作允许列表,以及按工具进行的积分门控。
- 支持所有 MCP 客户端——Claude Desktop、Claude Code、Cursor 和其他任何支持 MCP 的客户端,只需一条命令即可完成配置。
📊 CrawlForge 与其他方案的对比
| CrawlForge MCP | Firecrawl | 原始抓取 API | |
|---|---|---|---|
| 原生 MCP 服务 | ✅ 31 个工具 | ✅ | ❌ |
| 免费套餐 | ✅ 1,000 点数,一次性发放,永不过期 | 有限 | 不定 |
| 可自托管 / 本地 LLM 提取(Ollama) | ✅ 默认启用,$0/令牌 | ❌ | ❌ |
| 自主 Agent(无需 URL) | ✅ agent | ✅ | ❌ |
| 带来源验证的深度研究 | ✅ deep_research | 部分支持 | ❌ |
| 浏览器自动化 / 操作 | ✅ scrape_with_actions | ✅ | 不定 |
| 隐身 / 反检测引擎 | ✅ Chromium + Camoufox | ✅ | 附加项 |
| 预构建站点模板 | ✅ 10 个站点 | ❌ | ❌ |
| 许可证 | MIT | AGPL-3.0 | 专有 |
本对比反映了撰写时公开文档中记载的功能。CrawlForge 采用 MIT 许可证,并以 MCP 为先——可直接接入 AI 编码助手。
🚀 快速开始(2 分钟)
1. 从 NPM 安装
npm install -g crawlforge-mcp-server
2. 设置 API 密钥(必需)
每个工具都需要 CrawlForge API 密钥——新账户注册后即可获得 1,000 点免费试用额度。推荐的方式会通过浏览器登录,因此无需将密钥粘贴到终端中(编码 Agent 可以代你运行此命令并转发 URL):
crawlforge login
命令会输出一个审批 URL;打开该 URL 并批准后,密钥便会保存到 ~/.crawlforge/config.json。然后运行 crawlforge init,将 MCP 服务注册到客户端。也可以使用交互式向导,它还会配置你的客户端:
npx crawlforge-setup
此向导将:
- 引导你获取免费的 API 密钥
- 安全地配置你的凭据
- 自动配置 Claude Code 和 Cursor(如果已安装)
- 验证设置是否正常运行
没有 API 密钥? 可在 https://www.crawlforge.dev/signup 免费获取
一步完成设置(v4.6.0+):
crawlforge init会检测你的 API 密钥、安装 Agent 技能,并将 MCP 配置段幂等合并到 Claude Code、Claude Desktop 和 Cursor 中。使用crawlforge init --all --yes可用非交互方式配置所有检测到的客户端。
3. 配置 IDE(若未自动配置)
🤖 适用于 Claude Desktop
将以下内容添加到 claude_desktop_config.json:
{
"mcpServers": {
"crawlforge": {
"command": "npx",
"args": ["-y", "crawlforge-mcp-server"]
}
}
}
位置:
- macOS:
~/Library/Application Support/Claude/claude_desktop_config.json - Windows:
%APPDATA%/Claude/claude_desktop_config.json - Linux:
~/.config/Claude/claude_desktop_config.json
重启 Claude Desktop 以启用。
🖥️ 适用于 Claude Code CLI(自动配置)
设置向导会自动将以下内容添加到 ~/.claude.json,以配置 Claude Code:
{
"mcpServers": {
"crawlforge": {
"type": "stdio",
"command": "crawlforge-mcp"
}
}
}
设置完成后,重启 Claude Code 以启用。
💻 适用于 Cursor IDE(自动配置)
设置向导会自动将以下内容添加到 ~/.cursor/mcp.json,以配置 Cursor:
{
"mcpServers": {
"crawlforge": {
"type": "stdio",
"command": "crawlforge-mcp"
}
}
}
重启 Cursor 以启用。
🔁 适用于 n8n(工作流自动化)
n8n 内置的 MCP Client Tool 节点通过 Streamable HTTP 连接(适用于 n8n Cloud 和自托管环境)。以 HTTP 模式运行服务:
export CRAWLFORGE_API_KEY=your_api_key
npm run start:http # Streamable HTTP endpoint at http://localhost:10000/mcp
然后将 MCP Client Tool 节点指向 http://<host>:10000/mcp,传输方式设为 HTTP Streamable,并使用与 API 密钥相同的密钥设置 Bearer 凭据。对于自托管的 n8n,也可以通过 STDIO 使用社区版 n8n-nodes-mcp 节点(npx -y crawlforge-mcp-server)。
使用哪个启动命令?
npx -y crawlforge-mcp-server无需全局安装,且始终运行已发布的版本(推荐用于 Claude Desktop)。若要全局安装(npm i -g crawlforge-mcp-server),请使用专用的crawlforge-mcp可执行文件——它会通过你的PATH解析,因此切换 Node/nvm 版本后仍可使用。MCP 客户端通过 stdio 启动服务时,裸命令crawlforge仍会启动服务(向后兼容 v4.2.5 之前创建的配置);在交互模式下,它是 CLI——运行crawlforge mcp可手动启动服务。
📊 可用工具
CrawlForge 需要 CrawlForge API 密钥——每项工具均按使用量计费并消耗额度。新账户可获得 1,000 个免费试用额度。请访问 crawlforge.dev/signup 获取密钥。
所有工具(需要 API 密钥)
| 工具 | 积分 | 功能 |
|---|---|---|
fetch_url | 1 | 获取任意 URL 的内容 |
extract_text | 1(启用 escalate: true 时预计为 6;普通抓取成功时收费 1) | 提取网页中的纯净文本 |
extract_links | 1(启用 escalate: true 时预计为 6;普通抓取成功时收费 1) | 获取页面中的所有链接 |
extract_metadata | 1 | 提取页面元数据(标题、OG 标签、schema.org) |
scrape_template | 1 | 从知名网站(Amazon、GitHub、LinkedIn、YouTube、Reddit、Hacker News、npm 等)提取结构化数据,无需编写选择器 |
list_ollama_models | 1 | 列出本地安装的 Ollama 模型(帮助你为 extract_with_llm 选择 model) |
get_batch_results | 1 | 按 batchId 获取 batch_scrape 任务的分页结果 |
read_result | 1 | 搜索、截取、读取某个工具返回的结果中的行或 JSON 路径;该结果需带有 truncated: true 和 result_handle(仅在你自己的机器上保留 1 小时)——无需再次抓取页面 |
scrape | 2 | 统一的单次抓取、多格式提取工具。 传入 formats 数组(markdown/html/rawHtml/text/links/metadata/screenshot/json-schema,以及 {type:"highlights",query} 和 {type:"question",question},仅返回匹配的句子、表格行和代码块,并保留原文及其在 markdown 中的偏移量:每次调用额外收取 1 积分;mode:"model" 额外收取 3 积分),以及 onlyMainContent;一次抓取即可提供所有请求的格式,并针对每种格式给出部分成功警告。escalate:true 会在普通抓取受阻时通过隐身浏览器重试一次,并返回页面而非拦截信息(预计最高收费为 5 积分;若普通抓取成功且未执行升级,则费用降回 2 积分) |
scrape_structured | 2 | 使用 CSS 选择器提取结构化数据 |
extract_embedded_state | 2(启用 escalate: true 时预计为 7;普通抓取成功时收费 2) | 读取页面中嵌入的 JavaScript 状态——__NEXT_DATA__、React Server Component 负载(解析行间引用,并提供 data_rows 索引)、Nuxt(解码 Nuxt 3 的 __NUXT_DATA__)、SvelteKit、Apollo、Redux、ytInitialData、Inertia、Shopify、JSON data-* 属性、<script type="application/json">——可通过 path 限定结果范围,通过 keys_only: true 查看前两层键,或通过 find: "<key>" 获取该字段名所在的所有路径。escalate: true 会通过隐身浏览器重新读取受限页面,运行相同的解析器,并读取 window 中的框架全局变量(window_state)。提取过程不使用 LLM |
extract_content | 2 | 增强内容提取 |
map_site | 2 | 发现并映射网站结构(可选的 search= 会为发现的 URL 排序) |
process_document | 2 | 多格式文档处理 |
localization | 2 | 查询某个国家/地区的区域设置(Accept-Language、时区、货币),以便传递给其他工具;仅返回值,不应用任何设置 |
track_changes | 3 | 监控内容随时间的变化 |
analyze_content | 3 | 全面分析内容 |
extract_structured | 3 | 由 LLM 驱动、基于 schema 的提取(使用你自己的 LLM 密钥或本地 Ollama) |
extract_with_llm | 3 | 自然语言提取。默认使用本地 Ollama 模型;传入 provider: "openai" | "anthropic" 和对应的密钥即可使用云端模型(外部 LLM 的费用由你的服务提供商收取) |
browser_session | 3 | 可在多次调用间保持打开状态的浏览器页面,并保留 Cookie 和登录状态。对 URL 执行 open 以开启会话,通过 snapshot 将交互元素列为稳定引用(@e1、@e2),对引用执行 act,通过 read 读取内容,通过 close 关闭会话。按操作计费:open 为 3 积分,read 为 2 积分,snapshot/act/screenshot/close/list 各为 1 积分。当你必须先查看页面再决定点击什么、操作流程跨越多次调用,或登录状态必须在后续读取中保持时,使用此工具;若要在单个页面上执行固定的操作链,请使用 scrape_with_actions |
summarize_content | 4 | 生成智能摘要 |
crawl_deep | 4 | 深度抓取整个网站 |
search_web | 5 | 搜索实时网络(通过 CrawlForge API 使用 Brave Search API) |
reddit_search | 5 | 搜索 Reddit 帖子/评论,或读取完整讨论串——reddit.com 会阻止直接抓取,因此此工具会读取 Arctic Shift 社区档案(免费,无需 Reddit 凭据)。全 Reddit 范围的搜索会使用一次网络搜索来发现帖子,因此按 search_web 定价。可选:使用你自己的 Reddit 应用凭据(REDDIT_CLIENT_ID/REDDIT_CLIENT_SECRET)时,帖子搜索和讨论串读取会优先使用 Reddit 官方 API(实时分数、完整评论树),并在必要时回退到档案;价格不变。Reddit 不再发放未经审批工单的新凭据,详见 docs/reddit-access-and-oauth.md |
serp_rank | 5 | 检查某个域名针对某个关键词在 Google 真实自然搜索结果页(SERP) 中的排名(此排名无法通过 search_web 获取)。由 DataForSEO 提供支持(使用 DATAFORSEO_LOGIN/DATAFORSEO_PASSWORD,费用计入你自己的 DataForSEO 账户)。在完成配置前返回 { configured:false },且收费为 0 积分 |
batch_scrape | 5 | 同时处理多个 URL |
scrape_with_actions | 5 | 浏览器自动化操作链 |
generate_llms_txt | 5 | 生成 AI 交互指南 |
stealth_mode | 5 | 管理防检测浏览器 |
agent | 8(每次成功获取页面的隐身重试额外收取 +5,最多 2 次) | 根据自然语言提示词自主研究/提取——无需提供 URL。 在严格的安全限制下规划、收集并组织答案(由编排器强制执行步骤数/URL 数/耗时上限,而非由 LLM 执行)。若普通抓取受到页面限制,会自动通过隐身浏览器重试——优先处理你指定的 URL——并将该证据标记为 via: "stealth";每次执行的重试额外收取 5 积分 |
deep_research | 10 | 多阶段研究并核实来源 |
十个工具(scrape、fetch_url、extract_content、crawl_deep、batch_scrape、stealth_mode、scrape_with_actions、process_document、deep_research、extract_embedded_state)支持 max_inline_chars(默认值为 40,000;环境变量为 CRAWLFORGE_MAX_INLINE_CHARS):如果结果超过此限制,返回内容将包含 preview 和供 read_result 使用的 result_handle。完整结果会在你自己的机器上保留 1 小时,存放于 ~/.crawlforge/results/ 下,不会上传任何内容。 |
如需查看完整的权威功能参考(所有工具、CLI 命令、隐蔽引擎、研究工作流),请参阅 SKILL.md。
💳 定价
每个工具都按用量计费,并且需要 API 密钥。 新账户可获得 1,000 个免费试用额度,无需信用卡即可开始使用。
| 方案 | 额度 | 适用场景 |
|---|---|---|
| 免费 | 一次性 1,000 | 测试和个人项目 |
| 爱好者($19) | 每月 5,000 | 小型项目和开发 |
| 专业版($99) | 每月 50,000 | 专业用途和生产环境 |
| 商业版($399) | 每月 250,000 | 大规模运营 |
所有方案均包含:
- 使用全部 31 个工具
- 额度永不过期;付费方案的额度可结转至下个月
- API 访问和 webhook 通知
🔧 高级配置
环境变量
# Optional: Set API key via environment
export CRAWLFORGE_API_KEY="cf_live_your_api_key_here"
# Optional: Custom API endpoint (for enterprise)
export CRAWLFORGE_API_URL="https://api.crawlforge.dev"
# As of v3.0.18, this variable is validated against an allow-list of CrawlForge backend hosts.
# Optional: Local LLM (Ollama) overrides — extract_with_llm, extract_structured
# and deep_research all use Ollama when no cloud key is set
export OLLAMA_BASE_URL="http://localhost:11434" # default; set https://ollama.com for Ollama Cloud
export OLLAMA_DEFAULT_MODEL="gemma3:4b" # optional; unset = pick the best installed model automatically
# deep_research judges claims with gemma3:12b when it is installed (ollama pull gemma3:12b);
# conflict detection is on only with that model, or a cloud provider
export OLLAMA_EMBEDDING_MODEL="nomic-embed-text" # default: OLLAMA_DEFAULT_MODEL; used for semantic ranking in deep_research
export OLLAMA_API_KEY="..." # only for authenticated endpoints (required by Ollama Cloud; a local instance needs none)
export DISABLE_OLLAMA="true" # skip Ollama entirely and use CSS/keyword fallbacks
# Optional: Cloud LLM keys — only needed when you pass provider: "openai" or "anthropic"
export OPENAI_API_KEY="sk-..."
export ANTHROPIC_API_KEY="sk-ant-..."
# Optional: limit which tools this client sees — by name, by group, or both (comma-separated)
export CRAWLFORGE_TOOLS="scrape,search_web,extract_content"
export CRAWLFORGE_TOOL_GROUPS="basic,search,scrape" # unset = all tools; unknown names/groups are ignored with a warning
# Optional: deep_research stealth extraction fallback (v4.6.6) — see below
export RESEARCH_STEALTH_ENGINE="auto" # auto (default) | camoufox | chromium
export RESEARCH_STEALTH_FALLBACK="true" # set to "false" to disable entirely
export RESEARCH_MAX_STEALTH_RETRIES="8" # cap on stealth retries per research run
# Optional: your own proxies for the stealth paths that have no caller to ask —
# the scrape escalation stage, the deep_research retry, the agent, browser_session.
# Comma-separated; a proxy passed on a call always wins. CrawlForge supplies none.
export CRAWLFORGE_STEALTH_PROXIES="http://user:[email protected]:8080"
# Unrelated to the PROXY_ROTATION_* variables, which belong to the localization tool.
# Optional: turn off the clearance jar (on by default) — see "Stealth engines and proxies"
export CRAWLFORGE_CLEARANCE_JAR="off"
# Optional: also refuse private networks (RFC1918, ULA, CGNAT, ...) — see "Security & Approvals"
export SSRF_STRICT="true"
# Optional: the only directories process_document may read local files from (":"-separated, ";" on Windows)
export CRAWLFORGE_ALLOWED_DIRS="$HOME/Documents:$HOME/Downloads"
MCP 规范功能
CrawlForge 跟进当前 MCP 规范(2025-06-18)以及部分实验性扩展:
- 结构化输出 —
scrape、map_site、serp_rank、reddit_search、search_web、extract_structured和crawl_deep除常规文本外,还会返回可供机器解析的structuredContent,并根据已发布的outputSchema进行校验;旧版客户端仍可使用文本。 - 可自我纠正的错误 — 现在,无效的工具输入会作为
isError: true结果返回,调用模型可以读取并据此重试,而不再是原始 JSON-RPC 协议错误。 - JSON Schema 2020-12 工具架构、确定性的
tools/list排序(便于客户端提示词缓存),以及只读工具的结果可缓存提示。 - 服务、工具和提示词均支持图标。
- 异步任务(实验性)适用于四个长时间运行的工具 —
crawl_deep、batch_scrape、deep_research、agent— 供支持轮询的客户端使用;不支持的客户端仍会收到同步结果。
线级示例和客户端兼容性说明,请参阅 docs/mcp-spec-adoption.md。
本地大模型快速入门(使用 Ollama 的 extract_with_llm)
extract_with_llm 默认使用本地 Ollama 模型,无需大模型提供商密钥、无需支付按 Token 计费的大模型费用,数据也不会离开你的机器(但仍会扣除 CrawlForge 额度)。
# 1. Install Ollama: https://ollama.com
# 2. Pull any model from https://ollama.com/library
ollama pull llama3.2
# 3. Discover what's installed (from your MCP client)
# list_ollama_models()
# 4. Extract — defaults to Ollama with the model from step 2
# extract_with_llm({ url: "https://example.com", prompt: "…", model: "llama3.2" })
隐身引擎和代理
每个隐身入口点——scrape(设置 escalate: true)、stealth_mode、browser_session、scrape_with_actions 和 deep_research 重试——现在默认使用 auto:如果已安装 Camoufox(二次开发的 Firefox),则使用它;否则回退到 Chromium,并在结果的 warnings[] 中说明原因。每个结果都会注明实际运行的引擎。显式指定引擎时,行为一如既往——camoufox 会直接报错而不回退;chromium 和 playwright 是同一个引擎(对于 scrape 的 escalate_engine,请写作 playwright)。
在 browser_session 和 scrape_with_actions 中,只有设置 stealth: true 时才会应用引擎——常规路径使用标准 Chromium 池。
auto 并非没有代价。2026-09-21 在 Apple Silicon Mac 上各测量一次(启动,加上一个上下文和一个空白页面):Chromium 为 148 毫秒、253 MB;Camoufox 为 946 毫秒、667 MB——每次隐身调用大约多耗时 0.8 秒、多占用 400 MB。对于不会拦截的站点上的高流量任务,请固定使用 engine: "playwright"。
CrawlForge 不提供代理,而数据中心代理无法解决拦截问题:Cloudflare 会在运行任何 JavaScript 之前评估 IP 的 ASN 和 TLS/HTTP2 握手,因此浏览器端的补丁无法弥补数据中心地址的问题。请通过 CRAWLFORGE_STEALTH_PROXIES(逗号分隔的 URL)提供自己的住宅网络出口。调用方未传入代理时,升级阶段、stealth_mode、browser_session、scrape_with_actions、deep_research 重试以及 agent 工具的自动隐身重试都会使用该代理;调用时传入的代理始终优先。使用代理时,Camoufox 会根据出口 IP 推导时区、地区设置和地理位置。
**一次解决的验证挑战不会重复解决。**隐身渲染成功通过 Cloudflare 或 DataDome 验证墙后,供应商的通行 Cookie(cf_clearance、__cf_bm、datadome——不包括其他 Cookie)会保存在 ~/.crawlforge/stealth-clearance.json(权限模式为 0600)中,并在后续隐身上下文中重放,但仅限引擎、User-Agent 和代理均相同的情况,且最长不超过 Cookie 自身的有效期,绝不会超过 24 小时。如果渲染仍然遇到验证墙,则会删除这些 Cookie。设置 CRAWLFORGE_CLEARANCE_JAR=off 可禁用此功能。
详情、测量数据和来源:docs/stealth-engines.md。
deep_research 的隐身提取(Camoufox)
deep_research 会自动重试那些会阻止常规抓取路径的来源(Reddit、Quora、论坛以及受 Cloudflare/DataDome 保护的页面会返回 HTTP 403),改用带有真实浏览器指纹的浏览器,然后从渲染后的 HTML 中重新提取内容。重试次数有限(RESEARCH_MAX_STEALTH_RETRIES,默认值为 8,另有单页超时设置),并且按需加载——只有来源确实被阻止时才会加载浏览器组件。
引擎选择(RESEARCH_STEALTH_ENGINE):
auto(默认)——优先使用 Camoufox(Firefox 反检测),然后回退到 Chromium 隐身引擎,最后回退到普通抓取。camoufox——强制使用 Camoufox。chromium——强制使用 Chromium 隐身引擎。
Camoufox 能通过阻止无头 Chromium 的防护:在 2026-09-21 使用住宅 IP 进行的一次基准测试中,它是唯一成功通过 Cloudflare Turnstile(indeed.com)和 Akamai(harrods.com)的引擎,这两个站点都阻止了 Chromium 隐身引擎。两个引擎都未能通过 DataDome 或交互式 Turnstile,因此这只是更好的抓取路径,并非绕过防护。要启用它,请安装可选依赖并执行一次性二进制文件下载:
# Camoufox is declared as an optional dependency, so a normal install already pulls it.
# If you installed with --no-optional, add it explicitly:
npm install camoufox
# One-time download of the Camoufox Firefox binary (~130 MB):
npx camoufox fetch
如果没有 Camoufox 二进制文件,deep_research 会静默回退到 Chromium 隐身引擎,然后回退到普通抓取——不会报错,但在防护严格的网站上恢复能力会较弱。设置 RESEARCH_STEALTH_FALLBACK=false 可禁用整个回退机制。
注意: IP 信誉导致的严格封锁(例如 Reddit 边缘节点返回的
403)无法通过来自任何 IP 的无头隐身方式解决,需要使用住宅/移动代理;CrawlForge 不提供此类代理——请通过CRAWLFORGE_STEALTH_PROXIES配置服务器使用你自己的代理。详情请参阅 docs/stealth-engines.md。
手动配置
你的配置存储在 ~/.crawlforge/config.json 中:
{
"apiKey": "cf_live_...",
"userId": "user_...",
"email": "[email protected]"
}
📖 使用示例
配置完成后,可在 AI 助手中使用这些工具:
"Search for the latest AI news"
"Extract all links from example.com"
"Crawl the documentation site and summarize it"
"Monitor this page for changes"
"Extract product prices from this e-commerce site"
🔒 安全与隐私
- 安全认证:所有计量工具都需要 API 密钥
- 本地存储:API 密钥安全地存储在
~/.crawlforge/config.json中 - 仅使用 HTTPS:所有连接均使用加密的 HTTPS
- 不保留数据:我们不存储抓取的数据,仅存储使用日志
- 速率限制:内置防滥用保护
- 合规性:遵守 robots.txt 和 GDPR 要求
安全与审批
- SSRF 防护:每个抓取的 URL 都会在发送请求前经过验证,每次连接(包括每次重定向跳转,最多 5 次)都会根据实际连接到的地址进行检查;仅允许 http/https,拒绝云元数据主机名(GCP、Azure)。分为两个级别:
- **默认(Stage 1)**会拦截环回地址(
127.0.0.0/8、::1)、未指定地址(0.0.0.0/8、::)、链路本地地址和云元数据地址(169.254.0.0/16,包括169.254.169.254、fe80::/10)。允许私有网络(RFC191810/8、172.16/12、192.168/16、IPv6 ULA):在你自己的机器上运行时,服务代表你执行操作;读取路由器页面、NAS 或局域网上的内网文档站点是合理用途,而更严格的级别会阻止这些操作。 - **
SSRF_STRICT=true**会额外拦截所有私有和保留地址范围:RFC1918、ULA(fc00::/7)、CGNAT(100.64/10)、组播、保留地址、IPv4 兼容地址(::/96)和 NAT64(64:ff9b::/96)IPv6。如果 Agent 会读取不可信页面(并可能遭受提示词注入,从而被诱导去抓取局域网地址),且不应访问你的本地网络,或者服务器由多人共用,请设置此项。
- **默认(Stage 1)**会拦截环回地址(
- 本地文件(通过
sourceType为file或pdf_file的process_document处理;如果服务面向网络提供服务,则一律拒绝):路径根据 realpath 判断,因此符号链接按其目标路径处理。只读取.pdf、.docx、.txt、.md、.html和.htm文件,且不会读取点目录中的任何内容(~/.ssh、~/.aws、~/.config、~/.crawlforge等)。设置CRAWLFORGE_ALLOWED_DIRS(目录之间以:分隔;Windows 上使用;)可将读取范围限制在这些目录内;这些目录中的点目录限制会解除,但扩展名限制仍然生效。 - 后端端点防护(v3.0.18):服务器自身对 CrawlForge.dev 的调用使用单独的失败时拒绝允许列表(
{crawlforge.dev, www.crawlforge.dev, api.crawlforge.dev},必须使用 HTTPS)。在解析时会拦截将CRAWLFORGE_API_URL设置为任意主机的操作。 - 操作允许列表:
scrape_with_actions仅接受 11 种操作类型(snapshot、wait、click、type、press、scroll、screenshot、executeJavaScript、select、hover、navigate)。不存在下载、写入文件或任意跨页面导航的原语;navigate和初始 URL 一样,受 SSRF 和 robots.txt 限制。 - JavaScript 防护:默认情况下,
executeJavaScript操作会抛出异常。部署时设置ALLOW_JAVASCRIPT_EXECUTION=true可启用此操作(不建议在生产环境中启用)。 - MCP Elicitation(v3.6.0):有四种工具会在执行开销较大的操作前请求用户确认:
deep_research(>50 个 URL)、batch_scrape(同步模式,>25 个 URL)、crawl_deep(预计超过 500 个页面)、extract_structured(未配置 LLM 且架构包含超过 3 个必填字段)。积分不足时也会请求确认。确认机制尽力而为:如果 MCP 客户端不支持 elicitation,工具仍会继续执行(失败时放行)。 - 逐工具积分限制:每种工具都由
withAuth()封装并计量;执行前会检查并扣除积分,且每种工具都必须提供有效的 API key(自 v3.0.18 起,失败时拒绝)。
完整说明请参阅 docs/sandboxing-and-approvals.md。
安全更新
v3.0.3(2025-10-01):已修复身份验证绕过漏洞。所有用户都必须使用有效的 API key 进行身份验证。
完整的安全策略及漏洞报告方式请参阅 SECURITY.md。
🆘 支持
- 文档:https://www.crawlforge.dev/docs
- 问题反馈:GitHub Issues
- 电子邮件:[email protected]
- Discord:加入我们的社区
📄 许可证
MIT 许可证 - 详情请参阅 LICENSE 文件。
🤝 参与贡献
欢迎参与贡献!请先阅读我们的贡献指南。
由 CrawlForge 团队倾情打造 ❤️
评论
一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。