入口页上线之后,日志里很快会出现各种访问。这里面有搜索引擎的爬虫,也有采集程序、监控探针、安全扫描器,还有一部分会把 UA 直接写成搜索引擎的名称。如果不做核验,把伪装请求当成爬虫来统计,最后得到的“抓取量”会明显虚高,判断入口页是否被正常抓取也会跑偏。
为什么只看 UA 不可靠
UA 是请求头里的一个字符串,客户端想写什么就写什么。伪装成常见爬虫的 UA 成本极低,而不少统计工具默认按 UA 归类。所以 UA 可以作为第一层筛子,用来把明显不相关的流量分出去,但不宜作为判定身份的依据。
三层核验思路
第一层:IP 归属与 ASN
先看请求来源 IP 落在哪个网段、属于哪个 ASN。主流搜索引擎通常会公布自己的爬虫 IP 段,或提供官方反查渠道,以官方文档为准去比对,比凭经验记几个 IP 开头可靠得多。注意两点:一是 IP 段会更新,核验规则要定期复核;二是同一段 IP 也可能被云服务商复用,所以归属匹配只能算“可能是”。
第二层:反向解析与正向确认
对可疑 IP 做反向 DNS 解析,看主机名是否落在搜索引擎自有域名下;再把解析出来的主机名做一次正向解析,确认能指回原 IP。这就是常说的 forward-confirmed 反查。只有反向、正向都自洽,可信度才明显提升。反查有额外开销,建议对采样日志或首次出现的 IP 做,而不是每个请求都查。
第三层:请求行为特征
- 抓取节奏:真爬虫通常有相对稳定的并发与间隔,不会瞬间打满你的连接数。
- 路径分布:真爬虫会顺着入口页的出链走,采集脚本往往只盯固定模板或参数组合。
- 请求头完整度:Accept、Accept-Encoding、Referer 等字段的组合方式,常能暴露差异。
- 对 robots.txt 的访问:不少搜索引擎爬虫会先取一次 robots.txt,但这不是硬性证据,只能作为参考。
常见误区
- 按 UA 一刀切封禁。误封真爬虫的代价是入口页长期不被抓取,恢复周期不好估。
- 只查一次就长期信任。IP 与规则都会变,静态白名单迟早失效。
- 把所有高频请求都当恶意。爬虫在发现新入口页时确实可能短时集中抓取,先看整体分布再决定是否限速。
- 用反查结果直接封 IP。共享出口 IP 的场景下,封禁可能波及正常用户。
实操建议
- 日志里同时记录 UA、IP、状态码、响应时间与请求路径,方便后续关联分析。
- 把核验结果分成“放行 / 观察 / 限速”三档,而不是只有放行和封禁两档。
- 对确认身份的搜索引擎爬虫不设过严的频率限制;对无法确认身份的请求,用限速、验证等方式降低影响。
- 定期复核 IP 段与反查规则,例如每月更新一次白名单。
- 关注趋势而不是单日数字:抓取量突然翻倍或归零,都值得查一查是不是核验环节出了问题。
核验的目的不是把谁挡在外面,而是让你对“哪些请求值得信任”有一个可解释的判断,从而在统计抓取质量和调整入口页时不被虚假数据带偏。
把这三层核验跑顺之后,你会发现很多原本看起来“抓取很好”的入口页,实际有效抓取并没有那么多;也会发现一些被忽略的入口页其实一直被稳定访问。基于更接近真实的判断去做调整,节奏会稳得多。