Crawler verification · 2026-09-05
日志里出现搜索蜘蛛 User-Agent,为什么还要做双向 DNS 核验?
User-Agent只是请求方提交的一段文本,可以被仿造。双向DNS是核验蜘蛛身份的一种方法:按官方规则检查反向解析,再正向回验原IP;它不是唯一方法,也不能套用给所有引擎。本文讲身份核验与抓取证据的区别,不公开访客IP或内部日志位置。
第一步只登记“身份声明”
服务器日志命中Googlebot、Bingbot或Baiduspider字符串时,最稳妥的初始状态是crawler_user_agent_claim。它说明站点收到一个自称蜘蛛的请求,不能证明请求来自对应搜索引擎,更不能证明页面已索引。
隐私边界同样重要:只对已知蜘蛛声明进入受限专用日志,报告与租户页面不输出原始IP。普通访问者不应为了蜘蛛核验被扩大采集。
反向域名必须符合各自官方规则
对来源IP执行PTR查询后,主机名必须落在该搜索引擎公开规定的域名范围;不能只做contains匹配,也不能凭经验给没有官方规则的蜘蛛猜后缀。随后对主机名执行A或AAAA查询,结果必须包含最初来源IP。
DNS超时、临时解析失败和没有PTR记录应分别登记。超时是unknown或retryable,明确不匹配才是failed。缓存应带核验时间与合理TTL,避免永久沿用过期结论。
路径与响应也要和身份分开记录
可信身份核验通过后,再判断它请求的是发现入口还是正文:robots、Sitemap和feed成功,只说明访问了入口;规范文章页成功,才是content_observed。404、5xx或被拦截的正文请求则是失败访问,不能计为内容抓取。
这三个维度应拆开:identityStatus、resourceClass、responseStatus。可信蜘蛛读取Sitemap不等于抓取文章,抓取文章不等于索引,索引也不等于模型引用。
最小验收样本应包括伪造与解析漂移
- 正常:官方后缀匹配且正向解析回原IP。
- 伪造:User-Agent正确,但PTR属于无关域名。
- 伪装:PTR看似官方,正向解析不包含原IP。
- 边界:DNS超时,保留未知而不是写失败或通过。
- 资源差异:同一可信身份分别访问入口、正文与错误页。
建议定期复核官方验证文档;规则变化时旧缓存不能自动代表当前身份。即使本轮核验通过,也只支持“该时刻该请求来自可信蜘蛛并访问了该资源”,不支持收录或排名结论。
现场核验记录怎样做到可复算
每次检查保存脱敏请求键、User-Agent分类、PTR查询结果、后缀规则版本、正向解析集合、核验时间、资源路径类别和响应状态。报告只输出聚合结论,受限工件保留原始IP用于复算。DNS缓存命中也应记录原核验时间,不能把缓存读取时间当成新验证。
例如PTR主机名符合官方后缀,但A记录集合不包含原IP,结论必须失败;PTR查询超时则保持未知并按退避策略重试。若官方文档没有给出自动验证规则,停止自动升级为可信身份,改用站长平台抓取诊断补证,不能套用其他引擎经验。
Google官方提供两条核验路径
截至2026年9月1日核验,Google官方请求验证说明同时列出手工双向DNS与自动IP范围匹配。使用后者时,应从官方列表读取对应爬虫类别的CIDR范围并保存列表版本,不能把“属于Google某段IP”直接等同于Googlebot。
通用爬虫、特殊爬虫和用户触发的抓取器需分别分类。例如请求匹配用户触发抓取器范围,只支持该类别身份,不应计成自然搜索蜘蛛访问。DNS超时也不能否定独立且有效的官方IP范围证据;报告要注明实际使用了哪种规则,而不是强制所有请求必须经过DNS。
可构造一个合成负向样本:UA自称Googlebot,但既不满足对应DNS规则,也不匹配官方通用爬虫IP范围,不能升级可信身份。这个测试设计不是生产访问记录。身份、正文抓取与索引的差别,见搜索索引验证的证据边界。