为什么需要核验身份
站点日志里,带 Spider 字样的 UA 随处可见。有些是真实搜索引擎的抓取,有些是第三方采集工具、安全扫描器,甚至有人直接把 UA 改成常见蜘蛛名。如果只看 UA 就下判断,容易出现两种误判:把伪装流量当成官方抓取,据此调整内容策略;或者把真实抓取拦掉,让页面迟迟不被发现。
第一层:UA 只是初筛条件
UA 字符串最容易伪造,改动成本几乎为零,所以它只能用来分类,不能用来定案。
- 官方蜘蛛的 UA 通常包含固定的标识名和版本信息,格式相对稳定。
- 如果同一时间段出现大量相同 UA,请求路径却集中在少数几个接口或参数页,就要多看一眼。
- 有些采集器会拼接多个蜘蛛名,比如把两个搜索引擎的标识混在一起,这类 UA 基本可以直接判定为非官方。
把 UA 当作筛子,先分出“像官方抓取”和“明显不是”两堆,再进入下一步。
第二层:IP 归属与正反解析
IP 比 UA 更难伪造,但也不是绝对可靠,需要两步验证。
反向解析
对来访 IP 做反向 DNS 解析,看解析出的域名是否落在搜索引擎官方域名后缀下。
正向解析
反向解析结果匹配之后,还要把该域名重新解析回原 IP,确认两边对得上,形成闭环。只做反向解析、不做正向验证,容易被伪造的 PTR 记录骗过。
官方 IP 段比对
主流搜索引擎会公布自己抓取所用的 IP 段。把日志里的 IP 与官方列表比对,是最直接的判断方式。要注意 IP 段会更新,定期同步一次,别拿几年前的旧列表当标准。
UA 用来分组,IP 用来过滤,行为用来定案。三层都过一遍,误判概率会低很多。
第三层:行为特征
身份核验到最后,还是要回到行为本身。真实抓取和伪装流量在节奏上有比较明显的差异。
- 真实抓取通常按一定间隔分散请求,不会在极短时间内把全站扫一遍。
- 抓取路径往往顺着链接结构走,从入口页向列表页、详情页推进,而不是随机撞 URL。
- 伪装流量常常集中在后台路径、配置文件、常见漏洞地址上,这些路径正常蜘蛛没有理由访问。
- 并发量也是信号:单个 IP 长时间维持极高并发,通常不是常规抓取行为。
在日志里做一轮完整核验
把上面三层串起来,可以按下面的顺序走一遍。
- 按 UA 分组,统计每个 UA 的请求量、路径分布和时间分布。
- 对可疑分组抽取若干 IP,做反向解析和正向解析双向验证。
- 把通过验证的 IP 与官方公布 IP 段交叉比对,标记出仍不匹配的部分。
- 对未确认的 IP,看请求路径和并发节奏,判断是采集、扫描还是真实抓取。
- 把确认的官方 IP 段整理成白名单,把高频异常 IP 单独记录下来。
核验之后怎么处理
核验的目的一是别误伤,二是别被带偏。确认是官方抓取,就按正常方式提供内容,不需要额外操作;确认是伪装流量,可以按站点自己的策略在服务器或 CDN 层做限制,但要注意别把整个 IP 段一刀切,避免牵连同段内的正常访问。
另外,核验结果值得定期回看。IP 段会变,采集工具的行为也会变,去年有效的判断标准今年未必还适用。把核验做成周期性动作,比一次性排查省事得多。
小结
判断来访者是不是真正的搜索蜘蛛,UA 只能用来分组,IP 用来过滤,行为用来定案。三层叠加之后再决定怎么处理,既能减少对真实抓取的干扰,也能让日志数据更干净,后续分析抓取路径和 URL 发现情况时,才不会被噪声带偏。