搜索爬虫可观测性:验证 Googlebot 身份、抓取路径与响应合同
Search Console 聚合数据无法解释某次抓取拿到了哪个版本。本文把已验证 bot 身份、release、状态码、canonical 与缓存协商连接成可查询证据。
本文要点
- 主题聚焦:AI、DevOps、独立开发
- 适合人群:独立开发者、全栈工程师、AI 应用开发者
- 核心价值:快速理解背景、实践路径、常见误区和工程建议
页面没有流量时,团队常在“Google 没抓”“JavaScript 没渲染”和“抓了但不收录”之间猜测。Search Console 提供重要的站点级结果,却不会替你保存每次边缘请求拿到的 release、缓存命中和 canonical。反过来,只看带 Googlebot 的 User-Agent 也不可靠,任何客户端都能伪造它。LLM 应用可观测性 连接模型调用,本篇为公开内容建立爬虫证据链。
先验证主体,再分析行为
对声称为 Googlebot 的请求,按官方方法做反向 DNS,再对得到的主机名做正向 DNS,确认原始 IP 包含在结果中;也可使用 Google 公布的 IP 范围。验证结果应短期缓存,但保存 method、解析时间、原始 IP、验证依据版本和过期时间。User-Agent 只用于选择待验证 profile,不能直接写 verifiedBot=true。
代理、CDN 和负载均衡器必须先建立可信 hop 清单,再提取客户端地址。若应用无条件接受外部 X-Forwarded-For,攻击者可伪造 bot 身份并绕过限流。DNS 超时状态记为 UNKNOWN,与已验证、明确失败分开;未知请求走普通访客限制,不能因“可能是爬虫”获得额外权限。
每条访问证据使用 crawlEvent.v1:时间、request ID、验证后的 bot class、URL 与规范化 URL、HTTP 方法、状态码、响应字节、TTFB、cache status、ETag/Last-Modified、canonical、robots meta、应用 release 和边缘配置版本。查询参数需要按白名单保留;敏感 token 和 Cookie 不得进入日志。Prompt 与 Trace 遥测治理 的采集前脱敏原则同样适用。
用响应合同解释抓取结果
同一 canonical 的正常文档应稳定返回 200,条件请求命中时可返回 304;已永久移除的资源使用 404/410,迁移路径使用单跳永久重定向。429 和 503 要保留原因与 Retry-After,但不要把容量不足伪装成 404。RFC 9110 定义 HTTP 语义,具体索引决定仍由搜索系统完成,日志不能证明“必然收录”。
为每个重要 URL 建合成抓取夹具:使用普通浏览器和经过授权的 bot profile 请求同一 release,比较状态、canonical、robots、主要正文摘要和关键链接。夹具应覆盖冷缓存、热缓存、IPv4/IPv6、压缩协商、无 Cookie 与失败后重试。程序化 SEO 模板门禁 产生的 seoRelease 必须出现在响应与日志中,才能判断抓取是否跨过了错误版本。
常见异常可以直接查询:同一 URL 在不同 edge region 返回不同 canonical;bot 的 200 正文摘要为空;普通用户为 200 而已验证 bot 被 WAF 返回 403;部署后旧缓存持续命中;重定向目标不在 sitemap;五分钟内状态在 200/500 间振荡。每个告警保留样例 request ID,而不是只报总数。
把日志和外部结果按时间窗连接
Search Analytics API 的点击、曝光、查询和页面维度是聚合且可能有数据边界,不能逐请求 join。正确做法是按页面、国家/设备和固定日期窗生成外部快照,再与同窗的已验证抓取次数、最后成功抓取 release、错误率和 canonical 变化并列。若曝光下降但抓取与版本稳定,继续调查需求或排名;若新 release 后 bot 只收到 5xx,先修交付路径。
Web Vitals 现场与实验室数据 也强调不同证据回答不同问题。爬虫日志证明服务器交付了什么,URL 检查和 Search Console 描述搜索系统观察到什么,排名与点击还受查询、竞争和用户需求影响。三者不能相互替代。
上线采用 shadow 分类:先验证 bot 并记录,不改变缓存或限流;核对误判样本后再给监控标签。身份验证服务故障时回退到普通流量策略,不能放开 WAF。回滚保留原始日志 schema,只撤销新分类规则,防止时间序列断裂。Tail Sampling 可用于保留错误与慢请求,但成功抓取仍需最低比例或按 URL 重要性保留,否则无法证明覆盖。
爬虫可观测性的验收不是图表变多,而是随机给出一个 URL 和 release,能回答哪个已验证 bot 在何时拿到什么状态、canonical、正文摘要与缓存版本,并能把异常重放出来。
延伸阅读
Related