蜘蛛池跑起来之后,日志里会涌入大量自称是搜索引擎蜘蛛的请求。这里面有真的抓取,也有扫描器、采集程序,甚至只是普通的爬虫工具。把它们混在一起统计,很容易得出错误的结论:以为蜘蛛来得很勤,实际上有效抓取寥寥无几。分辨真假蜘蛛不是做安全防护,而是为了让运维判断有依据。
为什么不能只看 UA
User-Agent 是请求方自己填的字段,改起来没有任何门槛。市面上有不少现成的模拟工具,UA 可以抄得一字不差。所以“日志里出现了 Baiduspider 就是百度蜘蛛”这个判断,只在极粗的粒度上成立。真正要看的是 UA、来源 IP 和访问行为能不能对得上。
三重核对的具体做法
第一层:UA 字符串的细节
正规蜘蛛的 UA 通常有固定格式,长期稳定,不会今天写一个版本号、明天换一种写法。如果同一批 IP 每天换着花样切换 UA,或者 UA 里混着多个搜索引擎的名字,基本可以判定不是官方抓取。另外要注意大小写和多余空格,伪造的 UA 经常在这些地方露出破绽。
第二层:IP 与反向解析
- 查 IP 归属:官方蜘蛛一般来自可查证的搜索引擎自有网段,而不是遍布各地的家用宽带 IP。
- 做反向解析:拿到 IP 后反查域名,看是否落在搜索官方的域名下,再正向解析回去确认一致。
- 看集中度:真蜘蛛的抓取往往从相对集中的网段发出,如果几百个 IP 分散在几十个机房,更像是分布式采集。
第三层:访问行为
- 抓取节奏:官方蜘蛛有相对稳定的频率,不会在一分钟内把整站刷一遍。
- 路径偏好:真蜘蛛会顺着链接走,也会回访之前抓过的页面;采集程序往往直奔列表页和详情页,跳过中间层。
- 资源请求:部分搜索引擎会请求 CSS、JS 等静态资源,纯文本爬虫通常只抓 HTML。
- 状态码反应:遇到 404、503 之后的后续行为,也能反映对方是不是按规则来的。
容易踩的几个误判
- 把 CDN 回源 IP 当成蜘蛛 IP,统计出来的“抓取量”其实是自己人。
- 把监控探针、健康检查的请求算进蜘蛛日志,导致数据虚高。
- 只统计总请求数,不看状态码分布,忽略了大量 404 被反复抓取的情况。
- 看到 UA 里有 spider 字样就放行,结果放过了一批采集程序。
日志里建议长期保留的字段
时间、请求 IP、UA、请求路径、状态码、响应大小、响应时间这几项要完整留存,最好按天切分并保留一段时间。要做趋势判断时,按 IP 段聚合、按 UA 聚合、按路径聚合分别看一遍,比只看总量有用得多。
把判断落到运维动作上
- 先给日志做标注,把确认的官方蜘蛛、可疑请求、明确无关的流量分开。
- 对确认的官方蜘蛛,观察它在入口页上的抓取深度和回访间隔,作为调整结构的参考。
- 对可疑请求,不要急着封禁,先记录来源和路径,避免误伤。
- 对明确的恶意采集,按实际情况限速或拦截,同时检查是否有内容被整站搬走。
日志的价值不在于证明蜘蛛来了多少次,而在于能把“来了但没抓对地方”这类问题找出来。分辨真假只是第一步,后面才是调整入口页和链接结构。
这套核对方式不需要额外工具,一台能跑日志分析脚本的机器就够。坚持记录几周之后,你会对自家蜘蛛池的真实抓取情况有一个比任何第三方数据都可靠的判断。