mcpField
C
Crawlerpeek

Crawlerpeek

本地服务
crawlerpeek.com商业与营销33 天前更新

关于 Crawlerpeek

Crawlerpeek 是用于检查爬虫能否访问 URL 的只读库、命令行工具和 MCP 服务。它报告 robots.txt 规则与实际抓取结果,也可验证爬虫 IP 或生成 robots.txt 规则。

主要功能

  1. 01检查各爬虫的 robots.txt 访问规则
  2. 02使用爬虫 User-Agent 抓取页面
  3. 03报告重定向、状态码和拦截情况
  4. 04验证爬虫 IP 地址
  5. 05生成 robots.txt 规则

适用场景

  1. 01发布前检查 AI 爬虫访问情况
  2. 02在 CI 中运行访问检查
  3. 03排查服务器日志中的爬虫请求

MCP 相关

stdio MCP 服务提供四个只读工具:check_ai_access、see_as_bot、verify_bot_ip 和 generate_robots_txt。每次调用的结果缓存 10 分钟。

配置

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

mcp.json · 通用配置
{
"mcpServers": {
"crawlerpeek-crawlerpeek": {
"command": "npx",
"args": [
"-y",
"crawlerpeek"
]
}
}
}
启动命令npx -y crawlerpeek

本地服务需要在你的电脑上安装运行环境(如 Node.js 18+)。各客户端的配置文件位置不同,请参考客户端文档。

安装包
npmcrawlerpeek0.2.0

工具

4

收录的工具列表 · 更新于 2 天前

参数类型必填说明
urlstring是要检查页面的公开 http(s) URL。
botsarray否要检查的 Bot token;省略时使用默认的 15 个。已知值:GPTBot、OAI-SearchBot、ChatGPT-User、ClaudeBot、Claude-SearchBot、Claude-User、PerplexityBot、Perplexity-User、Google-Extended、Applebot-Extended、CCBot、meta-externalagent、Bytespider、Googlebot、Bingbot、Applebot、meta-externalfetcher、DuckAssistBot、Amazonbot、AhrefsBot、SemrushBot、MJ12bot、facebookexternalhit、Slackbot。
httpboolean否还使用每个爬虫的 user agent 获取页面(默认为 true)。false 表示仅检查 robots.txt。

详细介绍

crawlerpeek

npm CI License: MIT

检查 AI 爬虫是否能访问你的网站。对于每种机器人(GPTBot、OAI-SearchBot、ChatGPT-User、ClaudeBot、Claude-SearchBot、PerplexityBot、Google-Extended、Googlebot、Bingbot、CCBot 等),它会告诉你:

  • robots.txt 是否允许该机器人访问 URL 路径(RFC 9309:user-agent 组、通配符、$、最长匹配优先),以及
  • 使用该机器人的 user-agent 字符串抓取时,页面实际返回的内容:状态、重定向后的最终 URL、内容类型、大小、标题,以及响应是否看起来像拦截页或验证页。

它还会生成欢迎 AI 爬虫的 robots.txt。提供库、用于 CI 的 CLI 和 MCP 服务。要求 Node 20 或更高版本,无运行时依赖,支持 ESM 和 CommonJS,并附带 TypeScript 类型。

可通过网页工具执行相同检查:crawlerpeek.com。包含 CI 和 MCP 客户端示例的文档:crawlerpeek.com/cli。

安装

npm install crawlerpeek       # library
npx crawlerpeek --help        # CLI, no install needed

CLI

npx crawlerpeek check https://example.com
https://example.com
robots.txt: ok (HTTP 200) at https://example.com/robots.txt

Bot                 robots    HTTP
GPTBot              blocked   200  FAIL
ClaudeBot           allowed   403 (block page)  FAIL
Google-Extended     allowed   -
npx crawlerpeek check https://example.com/pricing --bots GPTBot,ClaudeBot --fail-on blocked
npx crawlerpeek check https://example.com --bots all --json
npx crawlerpeek check https://example.com --no-http          # robots.txt only
npx crawlerpeek see https://example.com --bot ClaudeBot      # one bot, full detail
npx crawlerpeek verify 66.249.66.1 --bot Googlebot          # is this IP really Googlebot?
npx crawlerpeek robots --disallow /admin/,/cart/ --sitemap https://example.com/sitemap.xml

退出代码:0 表示正常,1 表示满足 --fail-on 条件,2 表示用法错误(包括未知选项)或请求错误。see 在页面抓取成功时退出代码为 0,无论其 HTTP 状态如何;请求失败或被拒绝时退出代码为 2。

verify <ip> [--bot GPTBot] [--json] 用于检查服务器日志中的地址是否确实属于某个爬虫。它只使用运营方公开说明的信息:已发布的 IP 范围 JSON(Google、OpenAI、Anthropic、Perplexity、Bing、Apple、Common Crawl、DuckDuckGo、Ahrefs),或带正向确认的反向 DNS(Google、Bing、Apple、Common Crawl、Ahrefs)。如果不指定 --bot,则会检查所有支持上述方法的机器人。每个结果都包含 method(ip-list、reverse-dns 或 none)、verified(true、false,或在无法判断时为 null,例如列表无法访问或运营方未说明验证方法)以及 detail。列表会缓存一小时,且绝不会向该 IP 发送任何内容。退出代码:至少有一个机器人通过验证时为 0,未通过验证或无法判断时为 1,用法错误时为 2。

--fail-on失败条件
blockedrobots.txt 禁止机器人访问该路径,或页面向该机器人返回 401/403/406/451,或返回验证页
any-non-200除上述情况外,还包括任何其他状态(404、5xx、最终跳转到其他地址的重定向)或请求失败

未指定 --fail-on 时,无论结果如何,退出代码均为 0。--bots 接受机器人名称或 all;默认检查 15 种机器人:主要 AI 爬虫以及 Googlebot 和 Bingbot。无法获取的 robots.txt(超时、5xx、重定向被拒绝或没有目标地址)会报告为 unknown,原因记录在 robotsTxt.error 中,且绝不会计为拦截。注意:这与 RFC 9309 §2.3.1.4 有意不同;根据该规范,爬虫会将无法访问的 robots.txt(5xx)视为“禁止所有访问”(Google 也是如此),因此,返回 5xx 的 robots.txt 实际上会对许多机器人关闭网站,即使 --fail-on blocked 仍会通过。请将 unknown 视为需要修复的问题。

库

import { checkAiAccess, seeAsBot, verifyBotIp, generateRobotsTxt, failingBots } from "crawlerpeek";

const report = await checkAiAccess("https://example.com/pricing", { bots: ["GPTBot", "ClaudeBot"] });
report.bots[0].robots; // { access: "allowed", pathAllowed: true, matchedGroup: "*" }
report.bots[0].http;   // { status: 200, finalUrl, redirects, contentType, bytes, title, looksBlocked, outcome: "ok", ... }
failingBots(report, "blocked"); // ["ClaudeBot"] when it is closed or challenged

await seeAsBot("https://example.com", "PerplexityBot");

await verifyBotIp("66.249.66.1", { bot: "Googlebot" }); // [{ bot: "Googlebot", method: "ip-list", verified: true, detail, source }]

generateRobotsTxt({ disallow: ["/admin/"], blockBots: ["CCBot"], sitemap: "https://example.com/sitemap.xml" });

generateRobotsTxt 会为每种 AI 机器人单独指定名称,并设置 Allow: /。在该组中会重复列出禁止访问的路径,这是有意为之:有专属组的机器人会忽略 * 组。

MCP 服务

crawlerpeek mcp 通过标准输入/输出使用 Model Context Protocol,并公开四个只读工具:check_ai_access、see_as_bot、verify_bot_ip、generate_robots_txt。每次调用的结果缓存 10 分钟。不会调用大模型;这些工具只会获取你提供的 URL。

将 crawlerpeek 添加到 Cursor   在 VS Code 中安装 在 VS Code Insiders 中安装

客户端安装
Claude Codeclaude mcp add --transport stdio crawlerpeek -- npx -y crawlerpeek mcp
Claude Code(插件:MCP 服务和技能)/plugin marketplace add crawlerpeek/crawlerpeek,然后运行 /plugin install crawlerpeek@crawlerpeek
Claude Desktop从 Releases 下载 crawlerpeek-<version>.mcpb 并打开,或添加下方 JSON
Codexcodex mcp add crawlerpeek -- npx -y crawlerpeek mcp
VS Codecode --add-mcp '{"name":"crawlerpeek","type":"stdio","command":"npx","args":["-y","crawlerpeek","mcp"]}'
其他客户端下方 JSON

通用配置(Claude Desktop、Cursor、Windsurf、Cline 等使用此 mcpServers 结构):

{ "mcpServers": { "crawlerpeek": { "command": "npx", "args": ["-y", "crawlerpeek", "mcp"] } } }

VS Code 使用 .vscode/mcp.json,以 servers 为根键,并在条目中设置 "type": "stdio"。Codex 使用 ~/.codex/config.toml;请调高启动超时时间,以免首次 npx 下载触发默认的 10 秒超时:

[mcp_servers.crawlerpeek]
command = "npx"
args = ["-y", "crawlerpeek", "mcp"]
startup_timeout_sec = 30

Agent 技能

skills/crawlerpeek/ 是一项 Agent 技能:其中的 SKILL.md 会告知 AI Agent 何时检查 AI 爬虫访问权限、运行哪些命令,以及如何读取结果。它只使用通用的 frontmatter 字段,因此同一个文件夹可在多个 Agent 中使用。

Agent安装
Claude Code已随上方插件安装,或将文件夹复制到 ~/.claude/skills/crawlerpeek
claude.ai将 crawlerpeek 文件夹压缩成 zip 并在 Customize > Skills 下上传(需要代码执行和网络访问权限,详见技能说明)
Codex将文件夹复制到 ~/.agents/skills/(所有项目通用),或复制到仓库中的 .agents/skills/
OpenClaw将文件夹复制到 ~/.agents/skills/,或复制到工作区中的 skills/
Hermeshermes skills install crawlerpeek/crawlerpeek/skills/crawlerpeek
git clone --depth 1 https://github.com/crawlerpeek/crawlerpeek.git
mkdir -p ~/.agents/skills && cp -r crawlerpeek/skills/crawlerpeek ~/.agents/skills/

之后请重启 Agent,使其加载新技能。技能与 MCP 服务彼此独立:连接 MCP 服务后,技能会使用其中的工具;否则会运行 npx -y crawlerpeek。

GitHub Action

复合操作位于 action/;详见 action/README.md。

- uses: crawlerpeek/crawlerpeek/action@v0
  with: { url: "https://example.com", fail-on: blocked }

你需要了解的事项

  • see-as-bot 会从你的计算机发送该机器人的 user-agent 字符串。 它不是真正的机器人,也不来自运营方的 IP 范围。会验证机器人 IP 的网站(Googlebot、GPTBot 等会公开其 IP)可能会区别对待仅声称自己是机器人的请求,通常会将其拦截。因此,此处 Googlebot 返回 403 可能是正常情况;如果浏览器返回 200,而某个不常见的机器人返回 403,通常说明存在 WAF 或 CDN 规则。robots.txt 本身会使用如实的 crawlerpeek/<version> user agent 获取。
  • Google-Extended 和 Applebot-Extended 是 robots.txt 控制令牌,而不是爬虫:它们会获得 robots.txt 的判定,但绝不会被实际访问。
  • 页面以原始 HTML 的形式获取,不会运行 JavaScript。
  • robots.txt 是一项请求,不是访问控制。某些由用户触发的抓取器(ChatGPT-User、Perplexity-User)可能不会遵守;运营方的文档会说明具体情况。
  • 机器人列表和 user-agent 字符串来自运营方的文档,且可能会变化;该列表上次与运营方文档核对的日期是 2026-10-18。

安全限制

每个机器人发送一个请求,另加一个 robots.txt 请求;请求按顺序执行,间隔 300 ms(--delay);整个请求链的超时时间为 10 s;最多跟随 5 次重定向,并在每次重定向后重新检查(如果重定向到禁止访问的目标,则会为该机器人或 robots.txt 报告,但不会停止运行);响应正文上限为 2 MB;不使用 cookie。DNS 解析后会拒绝私有、环回、链路本地和元数据地址(并在连接时再次检查),也会拒绝 80 和 443 以外的端口以及包含凭据的 URL。--allow-private(CLI 和 crawlerpeek mcp)或 allowPrivate: true 可解除这些限制,以便进行本地测试。

贡献

欢迎提交问题和拉取请求,详见 CONTRIBUTING.md。请私下报告安全问题,详见 SECURITY.md。

许可证

MIT

评论

支持 Markdown

第一次接触 MCP?

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

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