关于 Unrendered: AI Crawler Checker
Unrendered: AI Crawler Checker 是用于检查网站对 AI 爬虫呈现情况的 MCP 服务,可比较原始 HTML 与浏览器渲染页面。它在本机 Google Chrome 中运行扩展的分析代码,并报告爬虫访问情况和页面差异。
主要功能
- 01比较原始 HTML 与渲染内容
- 02衡量原始 HTML 的内容覆盖率
- 03检查元数据与仅由 JavaScript 显示的文本
- 04检查机器人 robots.txt 规则及响应
- 05在本机 Chrome 中运行分析
适用场景
- 01发现无 JavaScript 爬虫无法读取的内容
- 02检查 AI 机器人访问及 robots.txt 规则
- 03排查源页面与渲染页面的差异
MCP 相关
该 MCP 服务提供 `analyze_page`,用于比较页面与原始 HTML;还提供 `check_ai_bots`,用于检查 robots.txt 判定和机器人请求结果。MCP 客户端可通过这些工具检查网址。
配置
本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。
工具
本地服务需要在你的电脑上运行后才能读取工具,维护者暂未提供工具列表。
详细介绍
unrendered-mcp:AI 爬虫检测器 MCP 服务
一个 MCP 服务,可向 AI 助手提供 Unrendered Chrome 扩展的分析结果:对比不运行 JavaScript 的爬虫收到的内容(原始 HTML)与浏览器渲染出的页面。
它不会重新实现分析逻辑。扩展自身的快照代码(src/content/snapshot.ts)、analyze、robots.txt 解析器和机器人分类器会被打包,并在你安装的 Google Chrome 中原样运行。
安装
需要 Node 20 或更高版本,以及 Google Chrome。不会下载浏览器。
npx -y unrendered-mcp
Claude Code
claude mcp add unrendered -- npx -y unrendered-mcp
Claude Desktop
添加到 claude_desktop_config.json:
{
"mcpServers": {
"unrendered": {
"command": "npx",
"args": ["-y", "unrendered-mcp"]
}
}
}
如果缺少 Chrome,工具会返回相应错误。UNRENDERED_CHROME_CHANNEL 用于选择其他 Chromium 渠道(默认为 chrome)。
默认情况下,工具会拒绝主机为环回、私有、链路本地或多播地址,或解析到此类地址的 URL,因为 URL 来自可能读取过恶意页面的模型。设置 UNRENDERED_ALLOW_PRIVATE_HOSTS=1 可分析本地开发服务器。Chrome 将在启用沙盒的情况下运行。
工具
analyze_page({ url })
在无头 Chrome 中加载 URL,在页面的隔离世界中获取扩展的快照(与内容脚本的行为相同),运行 analyze,并返回精简的 JSON 对象:
coverage:主内容(以及所有可见文本)中,其词语出现在原始 HTML 中的比例,包含词数和所用依据(main-landmark或outside-landmarks)main_content_words:原始 HTML 中找到的词语、仅在 JSON-LD 或 hydration 数据中找到的词语,以及仅在 JavaScript 运行后出现的词语missing_from_raw_html:仅在 JavaScript 运行后出现的最大文本块(经过截断,最多 15 条)fields:标题、meta description、canonical、hreflang、html lang、robots meta 和 JSON-LD 的差异(最多 30 行)links_only_after_javascript、text_in_raw_html_removed_by_javascriptgate:当原始请求返回的是质询页面(Cloudflare、AWS WAF、DataDome)、HTTP 错误、不同的 URL 或获取失败时,不会计算覆盖率,并说明原因not_checked:此次运行未验证的内容
check_ai_bots({ url })
对于扩展列表中的每个机器人,返回该 URL 的 robots.txt 判定结果(包括匹配的规则和行),以及服务器在收到该机器人公开的 user-agent 请求时的响应(same、different、blocked、challenged、rate-limited、redirected-elsewhere、error),并提供 noindex 信息。没有经过验证的 user-agent 字符串的机器人、Googlebot 和 Applebot(扩展不会模拟它们),以及 Google-Extended 等控制令牌,只会得到 robots.txt 判定结果(http: "not_probed")。
运行位置
- 所有操作都在你的机器上运行。每次调用都会启动 Chrome 无头模式,并在之后关闭。
analyze_page会在该 Chrome 中加载页面。页面会请求自身所需的资源,而原始 HTML 会像扩展中一样由页面自身请求三次。check_ai_bots会从 Node 顺序请求/robots.txt和该 URL 约 20 次,分别使用 Chrome 的 user-agent 和每个机器人的 user-agent。- 分析代码会在空白 Chrome 页面中运行,因为它需要浏览器 DOM 解析器。
隐私
除向你分析的网站(以及它重定向到或加载资源的地址)发送请求外,不会向任何地方发送数据。没有分析、遥测、账户,也不会存储任何内容。每次调用都会使用全新的临时 Chrome 配置文件,并在结束时丢弃。
与扩展程序已知的差异
- 无法在不使用扩展 API 的情况下访问封闭的 shadow root,因此其中的文本会被视为未出现在渲染结果中。
- 浏览器以无头模式运行,分辨率为 1280x720,语言区域为
en-US,且没有你的登录信息或 Cookie;用户代理是 Chrome 的用户代理,但不含Headless标记。 check_ai_bots从 Node 发送请求,而不是从浏览器发送:TLS 指纹和部分标头与 Chrome 不同,且不会发送 Cookie(扩展程序在探测机器人时也不会发送 Cookie)。字符集回退为utf-8,因为没有加载渲染后的页面来读取其document.characterSet。
开发
pnpm install
pnpm build # bundles the page scripts and the server into dist/
pnpm typecheck
pnpm parity # compares this server with the extension's panel on 20 URLs (build the extension in the repo root first)
许可证
AGPL-3.0-only。
评论
一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。