给蜘蛛池挂上入口页之后,很多人第一件事就是看日志:访问量涨了,心里就踏实了。但日志里的高频访问并不等于搜索蜘蛛来了。UA 里写着 Googlebot、Bingbot 的请求,可能是真的搜索引擎,也可能是采集程序、扫描器,甚至是别人套用的蜘蛛池脚本。判断错方向,后面所有关于 URL 发现和收录的分析都会跑偏。
为什么不能只看 User-Agent
UA 只是一段普通的请求头,谁都能改。把 UA 改成 Googlebot 只要一行代码。所以日志里出现“Googlebot”,只说明“有个客户端自称是 Googlebot”,并不说明它真的来自搜索引擎。
三个可以交叉验证的信号
1. 反向 DNS 与官方 IP 段
主流搜索引擎都公布了爬虫 IP 段和反查方式。做法是拿日志里的 IP 做反向 DNS,看域名是否落在官方域,再正向解析一次确认能对上,最后核对是否在官方公布的 IP 段内。三步都对上,才基本可信。
- 只做反向 DNS 不做事后正查,容易被伪造的 PTR 骗过
- IP 归属地、ASN 只能作为参考,不能单独作为依据
- 站点前面有 CDN 时,日志里看到的可能是 CDN 回源 IP,需要先在 CDN 后台取真实客户端 IP
2. 请求行为特征
真蜘蛛的行为通常比较“守规矩”:先看 robots.txt,按一定间隔抓取,不会在几秒内把整站刷一遍,也不会去请求明显无意义的路径,比如后台地址、配置文件、登录页。
- 是否请求过 /robots.txt
- 单 IP 单位时间的请求量是否异常集中
- 是否大量请求不存在或敏感的路径
- 是否带完整的 Accept、Accept-Encoding 等常规头
3. 是否会加载静态资源
部分搜索引擎会执行 JS 并请求 CSS、图片等资源,而多数简单采集脚本只取 HTML。这个信号不是绝对标准,有些真蜘蛛也不加载资源,但可以作为一个辅助维度。
几个容易踩的坑
- 只按 UA 判断,把采集器当成搜索蜘蛛,于是误以为“入口页生效了”
- 反过来只看请求频率,把正常抓取当成攻击,把真蜘蛛挡在门外
- 忽略了 CDN、负载均衡、反向代理,日志里全是内网或回源 IP
- 把某个熟悉的 IP 当成“一直以来的蜘蛛”,从不复核
一套可执行的判断顺序
- 从日志里提取高频 IP 和对应 UA,按请求数排序
- 对可疑 IP 做反向 DNS,再正向解析核对,最后比对官方 IP 段
- 看它是否请求 robots.txt、抓取节奏是否规律、路径是否合理
- 对照 CDN 或服务器上记录的真实客户端 IP 再确认一次
- 确认为真蜘蛛的,记录其抓取的目标 URL 分布;确认为伪装的,按防爬策略处理
判断完之后该做什么
如果确认是搜索蜘蛛,重点看两件事:一是它有没有真的抓到入口页里的目标 URL,二是目标 URL 的抓取是否稳定、有没有大面积报错。入口页本身被反复抓、目标 URL 却一直没动静,多半是链接形式或跳转方式的问题,而不是蜘蛛没来。
如果确认是伪装爬虫,它对你的 URL 发现没有任何帮助,但会消耗带宽和服务器资源。处理时要注意:封禁规则宁可窄一点,先按行为特征(例如高频访问敏感路径)匹配,再考虑按 IP 段处理,避免误伤真蜘蛛。
判断身份只是第一步。入口页的价值最终体现在目标 URL 是否被稳定发现和抓取上,日志里的“访问量”本身说明不了什么。