蜘蛛池知识

蜘蛛池入口页的抓取来源识别:怎么判断来的是真蜘蛛还是伪蜘蛛

入口页日志里写着 Googlebot、Baiduspider 的请求,未必是真蜘蛛。本文从 UA 特征、IP 正反解析、官方 IP 段比对和请求行为四个角度,讲清怎么筛掉伪蜘蛛,以及 CDN 回源、预渲染服务等容易被误判的情况,并给出一套可落地的日志分层做法。

蜘蛛池知识

蜘蛛池入口页的抓取来源识别:怎么判断来的是真蜘蛛还是伪蜘蛛

为什么入口页的“蜘蛛访问”经常是假的

翻日志时,很多人只要看到 User-Agent 里带 Googlebot、Baiduspider,就记一次抓取。但 UA 是请求头里最容易改写的字段,一个采集脚本、一个监控探针都能写上同样的字符串。把伪蜘蛛当真蜘蛛,会带来两个错误判断:一是以为抓取量还不错,二是按这个量去调整入口页的数量和更新节奏,方向从一开始就偏了。所以在谈收录和抓取量之前,先把来访者身份分清楚。

UA 只能当线索,不能当证据

UA 的价值在于分流:先按 UA 把日志切成几组,再对可疑的那一组做进一步校验。常见的伪造特征是:

  • UA 写得过于简短,缺版本号与平台标记,例如只有一个“Googlebot”;
  • UA 与请求内容矛盾,声称是移动端蜘蛛,却只请求桌面版路径;
  • 同一个 IP 在几分钟内轮换多个搜索引擎的 UA;
  • 拼写错误,或使用早已停用的标识。

这些只能用作筛选条件,不能单独下结论,因为真蜘蛛的 UA 也会随版本更新变化。

IP 反查:普通手段里最靠谱的一步

反向解析与正向解析要成对做

拿到可疑 IP 后先做反向解析(PTR),看域名是否落在搜索引擎自己的域下;再对得到的域名做一次正向解析,确认能解析回同一个 IP。只有正反一致,基本可以认定为真。只看 PTR 容易被伪造的记录骗过去。

对照官方公布的 IP 段

主流搜索引擎会公布抓取 IP 段,可以定期拉取并本地比对,用脚本匹配比手工查询现实得多。对不上的先归入“待确认”,不要急着当伪蜘蛛删掉——CDN 回源、代理转发都可能让源站看到的 IP 是中间节点的地址。

行为特征:真蜘蛛的爬行习惯

  • 抓取资源类型:通常先抓 HTML,是否加载 CSS、JS 取决于渲染能力,但不会像浏览器那样把全部资源拉一遍。
  • 并发与节奏:单 IP 并发一般不高,速度受站点响应与配额影响。
  • 参数与 Cookie:很少带业务参数,也不维持登录态。
  • 路径规律:顺着链接、sitemap、提交记录走,路径之间有迹可循;伪蜘蛛往往按字典顺序扫。

几种容易被误判成伪蜘蛛的情况

  • 站点接了 CDN 或反向代理,源站看到的全是中间节点 IP;
  • 使用了服务端渲染或预渲染服务,其访问特征与真蜘蛛接近;
  • 自己配置的可用性监控、DNS 预取、内容校验脚本;
  • 移动端与桌面端使用不同 UA,被错误归入伪造组。

做判断前,先确认自己在链路上加了哪些中间层,否则很容易把自家服务当成伪蜘蛛。

实操:把日志做成分层

  1. 按 UA 分组,统计各组的请求量、独立 IP 数和访问路径分布;
  2. 对每组做 IP 反查与官方 IP 段比对,标记“确认、待确认、疑似伪造”;
  3. 对疑似组的路径做抽样,看是否命中不存在的目录、参数,或出现明显的字典扫描;
  4. 把确认组单独建一份抓取统计,用它评估入口页的抓取状况,其余组只做参考。

分层的好处是,后续调整入口页数量、更新频率时,依据的是可信数据,而不是被伪蜘蛛抬高或压低的数字。

识别真假蜘蛛只是基础工作,它不能保证抓取量提升,也不能保证 URL 被收录。它的意义在于让判断有依据,避免在错误的数据上做决策。