citlyze docs
使用 Citlyze

AI 爬虫

看看哪些 AI 爬虫真正访问你的网站,以及如何安装追踪。

AI 爬虫追踪展示哪些 AI 引擎真正在访问你的网站:GPTBot、ClaudeBot、PerplexityBot、Bingbot 等。它与 GEO 审计互补:审计告诉你机器人能否到达页面;爬虫追踪告诉你它们是否真的来了。

为什么用服务器端捕获

AI 训练爬虫不运行 JavaScript,Google Tag Manager 或 JavaScript 像素永远 看不到 GPTBot 或 ClaudeBot。Citlyze 在服务器端捕获爬虫访问,那里能看到 真实的请求 User-Agent,因此不执行 JavaScript 的爬虫也会被统计。

人类这一半则不同:由 AI 回答引荐的访客会运行 JavaScript,因此对 AI 流量来说,浏览器代码片段或 Tag Manager 安装就够用了(见 安装 AI 流量追踪)。本页的 服务器端安装方式会同时捕获两类访问。

安装追踪

前往 AI 爬虫 → 安装追踪并生成站点密钥。密钥有两部分(密钥 ID 和签名 密钥),只显示一次;两者都要复制。然后为你的平台添加对应代码片段 (每个选项的逐步安装讲解见 安装 AI 爬虫追踪):

  • Cloudflare(推荐):把 Worker 片段放在站点前面。
  • Vercel / 反向代理:添加中间件片段。
  • WordPress:下载 AI Crawler Tracker by Citlyze,在 wp-admin → 插件中 上传,然后在其设置中填写全部三个字段:Tracker base URL (https://app.citlyze.com)、Key IDSigning secret。再使用 发送测试事件(Send test event)验证连接。在填写追踪器基础 URL 之前,插件不会上报任何数据。
  • 自建服务器 / Node:适用于自托管站点(AWS、GCP、Azure、裸机、容器): 添加 Express 风格的中间件片段(Node 20+)。它可适配 Fastify、Koa 或原生 http,其他语言也可以直接实现签名信标协议

每个事件都用你的密钥签名,追踪器可以拒绝伪造的信标。

该签名只证明这份上报来自你的网站,并不能说明访问者是谁。确认访问者确实是 GPTBot 是另一个步骤,见验证如何工作

标准 Shopify 商店无法运行服务器端捕获,而且 Shopify 不支持在商店前架设代理 (例如 Cloudflare),因此标准 Shopify 无法使用完整的爬虫追踪。Headless 的 Hydrogen 或 Oxygen 店面运行服务器端代码,可以使用自建服务器片段。Webflow 托管同样无法运行服务器代码;在 Webflow Enterprise 上,自行管理的反向代理 可以在代理层运行 Cloudflare Worker 或自建服务器片段。

Cloudflare Worker 和自建服务器中间件会上报每次被抓取请求的 HTTP 状态码,用于驱动下文的错误 洞察。WordPress 插件在页面渲染之前运行,因此只能区分 404 与其他情况;而 Vercel 中间件在响应产生之前运行,因此完全无法上报状态码。

WordPress 全页缓存和 CDN 可能不运行插件就直接响应请求。对于大量使用缓存的 网站,请使用 Cloudflare Worker 以避免少计。

自建服务器与其他语言

自建服务器标签页提供的是 Node 中间件,但任何技术栈都可以上报:一个信标就是 一次带签名的 HTTPS POST,发送到 https://app.citlyze.com/api/track,携带 JSON 请求体(最大 32 KB)和 Content-Type: application/json

必需的请求头:

请求头
x-aeo-schema字面字符串 2
x-aeo-key-id你的密钥 ID(生成站点密钥时显示的 UUID)。
x-aeo-ts以秒计的 Unix 时间戳;必须与追踪器时钟相差 5 分钟以内。
x-aeo-nonce每个事件唯一:16–64 个字符,由十六进制数字和连字符组成。去掉连字符的 UUID 即可。每个 nonce 只接受一次;重放会被忽略。
x-aeo-signature小写十六进制 HMAC,按下述方式计算。

计算签名:

  1. 派生签名用密钥:对你的签名密钥(完整的 ctk_... 字符串)取小写 64 位 十六进制 SHA-256。将该十六进制字符串的 UTF-8 字节用作 HMAC 密钥; 不要对它做十六进制解码。
  2. 构造消息:"2\n" + timestamp + "\n" + nonce + "\n" + bodyDigest,其中 bodyDigest 是你实际发送的请求体字节的小写十六进制 SHA-256。签名之后 任何重新序列化都会使签名失效。
  3. x-aeo-signature 就是用第 1 步的密钥对该消息计算的小写十六进制 HMAC-SHA256。

请求体字段(除注明外均为必填):

  • userAgent:访问者的 User-Agent,最长 1024 个字符。
  • path:请求路径,以 / 开头,不含查询字符串和片段标识,最长 2048 个字符。
  • visitorIp:你的服务器看到的客户端 IP。位于负载均衡器或反向代理之后 时,从你自己的代理设置的转发头中取值;爬虫身份验证检查的正是这个字段。
  • referrer:空字符串,或去掉查询和片段的 https:// 来源 URL。只对从 AI 回答点击进入的人类访问有意义。
  • status:响应的三位 HTTP 状态码;如果在响应产生之前上报,则为 unknown
  • method:大写的 HTTP 方法。

只上报 User-Agent 看起来是自动化程序、或来源是 AI 回答引擎的请求,并在响应 之后以即发即弃的方式发送信标;追踪器故障绝不应拖慢你的网站。

要验证你的集成,发送一个带 "test": trueuserAgentcitlyze-connection-test/ 开头、且 "path": "/citlyze-test" 的信标。签名 正确的测试事件返回 HTTP 200 且不存储任何内容;真实事件始终返回 204, 无论该访问最终是否出现在你的报告中。

轮换或撤销密钥

如果签名密钥可能已泄露(例如被提交到代码仓库或出现在截图中),请使用密钥 旁边的轮换。轮换会为同一密钥签发新的签名密钥:密钥 ID、名称、域名和 全部历史记录都会保留,但旧的签名密钥会立即停止通过验证,请尽快在代码 片段或插件中更新为新的签名密钥。 撤销则不同:它会永久停用该密钥,并停止该站点的追踪。

解读分析

AI 爬虫 → 分析页面针对所选时间范围展示:

  • 头部指标卡:爬虫总访问、不同爬虫数、最活跃爬虫和趋势
  • 爬虫访问随时间变化(每日总量)
  • 各爬虫趋势(每个爬虫一条线)
  • 按爬虫细分,含组织、用途、访问量和趋势
  • 来自 AI 回答的人类访问:从 ChatGPT、Perplexity、Gemini、Copilot 等 点击进入的访客,以及他们的主要着陆页;包含转化在内的完整引荐报告见 AI 流量
  • 被抓取最多的页面(前 10,附完整列表链接)
  • 未识别的机器人:与任何已知 AI 爬虫都不匹配的类机器人 User-Agent, 归入"未知机器人"分组,让新爬虫尽早显现

使用预设时间范围(7/30/90 天)、自定义日期范围和爬虫筛选器聚焦视图。追踪 多个站点的工作区还会显示站点筛选器。

验证如何工作

任何客户端都能在 User-Agent 里写上 GPTBot。所以 User-Agent 只是一种声称, 而非证据。Citlyze 也按此处理:核心爬虫数据只统计我们能独立确认的流量。

每次访问会得到三种置信度之一:

  • 已验证:我们对照运营方公开的信息确认了访问者的网络身份。只有这些计入 你的总数。
  • 疑似:有旁证支持,例如你的 CDN 将该请求标记为已知机器人,但没有独立 确认。
  • 未验证:User-Agent 声称是某个爬虫且没有矛盾之处,但我们无法确认。会 单独展示,绝不计入你的总数。

验证会使用运营方所支持的方式:

方式能证明什么
已签名请求请求带有加密签名,我们对照运营方公开的密钥完成了校验。这是最强的证据。
公布的 IP 段来源地址落在运营方为其爬虫公布的 IP 段内。
反向 DNS来源地址解析到运营方的域名,而该域名又解析回同一地址。
已知 IP 段来源地址落在运营方文档中固定记录的 IP 段内。
CDN 证明你的 CDN 将该请求识别为已知机器人。属旁证,并非定论。
仅 User-Agent除了自报的名称之外没有任何依据。始终为未验证。

未公布任何可校验信息的运营方,最多只能达到未验证。这是该爬虫本身的特性, 不是你的配置有问题;这也正是我们分开展示、而不是混成一个数字的原因。

有两点值得了解:

  • 代理流量单独统计。 由人操作的工具(例如 ChatGPT Agent)会出现在代理活动 中,而不计入爬虫总数:一个人点击与一个爬虫为你建立索引,并不是同一种信号。
  • 有时我们无法完成校验:运营方的 IP 列表可能暂时无法访问。这类访问会保持 未验证而不是被计入,因此你的总数绝不会包含我们未确认的内容。

被抓取页面

AI 爬虫 → 被抓取页面是完整的下钻视图:所选时间范围内 AI 爬虫抓取过的 每个页面,支持搜索、排序和分页。每行显示访问量、占全部爬虫流量的份额、与 上一周期的趋势对比、错误数、最活跃爬虫和最近访问时间;展开一行可查看按 爬虫的细分。

相关时,表格上方会出现两条洞察:

  • 被抓取但从未被引用:AI 引擎抓取了但从未在你追踪的回答中引用的页 面;适合改写为更清晰、更易被引用的内容。
  • 返回错误的页面:以 4xx/5xx 响应爬虫的页面。损坏的页面无法被读取或 引用。完整范围需要 Cloudflare 或自建服务器安装方式;WordPress 安装方式能捕获 404,但无法捕获 5xx。

在包含数据导出的套餐中,表格可下载为 CSV

通过 API 和 MCP 获取数据

安装追踪后,爬虫访问即可编程获取:

两者均为只读、限定在你的工作区内。REST 资源支持按 crawler_id、被追踪站 点和精确 path 筛选;来自 AI 回答的人类访问通过 GET /api/v1/ai-referrals 获取。

本页内容