做蜘蛛池的人经常盯日志看抓取量,但日志里的 UA 是可以随便写的。如果不先分辨真假蜘蛛,很容易把扫描器的请求当成搜索蜘蛛的抓取,进而得出错误结论:以为入口页被大量抓取,其实只是被批量扫了一遍。
为什么先要验证蜘蛛身份
蜘蛛池最常看的指标是抓取频次、抓取页面数、返回码分布,这些数据全部来自日志。一旦日志里混进伪装 UA 的请求,会出现两类问题:一是高估效果,把扫描流量当成收录前的正常抓取;二是误判问题,把扫描器集中请求某个参数当成蜘蛛陷阱,去改本来没有问题的配置。
所以验证蜘蛛身份不是为了抓假蜘蛛,而是为了让后面的判断建立在干净数据上。
三种常用的验证手段
1. UA 校验:成本最低,也最不可靠
爬虫和浏览器一样,会在 User-Agent 里声明自己是谁,例如百度蜘蛛常见标识是 Baiduspider。这一步只能做初筛:UA 匹配不代表一定是真的,UA 不匹配也不代表一定是假的,部分移动端蜘蛛的标识与桌面端并不完全一致。
2. 反向 DNS 与 IP 归属
对访问 IP 做反向解析,看返回的域名是否属于搜索引擎官方网段。例如 Googlebot 的反查结果通常以 googlebot.com 或 google.com 结尾。百度也公布了蜘蛛 IP 段,可以定期拉取比对。
起步阶段不写脚本也能做:把日志里的 IP 去重,挑出请求量最大的几十个逐个反查;确认方法有效后,再考虑自动化处理。
3. 官方 IP 段比对
主流搜索引擎会公布爬虫 IP 范围,格式多为 CIDR。把日志 IP 换算后判断是否落在这些区间内,比反向 DNS 更快,也适合每天跑一次。
注意 IPv6:如果入口页已经支持 IPv6,日志里会出现对应的地址,只比对 IPv4 段会把真实抓取漏掉。
常见的几种误判
- 把 CDN 回源 IP 当成蜘蛛。开启 CDN 后,日志里的访问 IP 可能是节点地址,需要结合转发头部判断,并确认头部来源是否可信。
- 把探测请求当成蜘蛛。有些工具会模仿 Baiduspider 的 UA 做批量探测,反查 IP 就能区分。
- 把移动端 UA 判成假蜘蛛。移动蜘蛛的标识与桌面端不同,先查清标识再判断。
- 把多机房出口当成异常。同一搜索引擎可能从多个网段访问,只凭一次请求判断容易误伤。
- 长期使用未更新的 IP 列表做过滤,新上线的网段会被漏掉。
验证结果怎么用
验证完成后,建议把日志分成三类:已确认的真实蜘蛛、已确认的非蜘蛛、无法确认。前两类用于统计,第三类单独观察,不要直接混进抓取量里。
真实抓取数据可以支撑几件事:判断入口页哪一层被访问得最多、返回码是否异常、某个 URL 参数是否被反复抓取。非蜘蛛数据也有参考价值,比如大量扫描集中出现在某个目录,说明该路径已经暴露,需要评估是否继续保留。
提醒:验证只能过滤日志噪声,不能决定收录。抓取正常和页面被收录是两件事,要分开看。
一个可落地的复核流程
- 日志保留完整字段:时间、IP、UA、URL、状态码、响应时间、来源。
- 每周对高频 IP 做一次反向解析,并比对官方 IP 段。
- 给每个 IP 打标记,存成对照表,后续日志直接匹配。
- 每月复核一次标记表,删掉失效网段,补上新段。
- 统计时只使用已确认的真实蜘蛛数据,其余单独归档。
小结
蜘蛛身份识别是蜘蛛池运营里最基础的一步。它本身不产生流量,也不直接带来收录,但决定了你对入口页的判断是否可信。先分清谁在抓,再讨论抓得够不够、要不要调整,顺序反了,后面的优化大多是白忙。