入口页跑起来之后,日志里会出现大量自称蜘蛛的访问。这里面既有真正的搜索引擎爬虫,也有扫描器、采集程序和刷量工具。如果不做区分,你会把垃圾请求当成抓取正常,也可能把真蜘蛛误封。真假蜘蛛的识别不需要多复杂,关键是分层次验证,别只看一个字段。
为什么入口页最需要这一步
入口页通常数量多、内容薄、外链来源杂,本身就是扫描器和采集器的重点目标。它又承担着引导蜘蛛继续爬的任务,一旦判断失误,代价是双向的:把假蜘蛛当成真的,服务器资源和抓取预算都浪费在无效请求上;把真蜘蛛当成假的,入口页就失去了存在的意义。
三层判断法
第一层:UA 字符串只做初筛
- UA 可以随意伪造,所以它只能用来分层,不能作为判断依据。
- 对照各引擎官方公布的 UA 列表,注意版本号和平台字段的写法是否一致。
- 常见破绽:UA 声明了较新的版本,但请求头其他字段跟不上;UA 与请求头整体风格矛盾。
第二层:IP 反查才是关键
把访问 IP 做反向 DNS 解析,再正向解析回去,确认主机名落在搜索引擎官方网段,是相对可靠的验证方式。同时用公开的 IP 段清单做比对,注意百度、Google、必应、Yandex 等不同引擎的网段是分开维护的,并且会更新。
- 记录访问 IP,做反向解析,得到主机名。
- 对主机名做正向解析,确认能回到同一个 IP。
- 比对官方公布的网段清单,确认归属。
- 三步都通过,才按真蜘蛛处理。
这个流程可以在服务器或 CDN 层实时做,也可以在日志分析环节离线做。离线做成本更低,适合先观察一段时间再决定要不要拦。
第三层:看访问行为
- 真蜘蛛一般按一定节奏抓取,短期内的请求量相对平稳;扫描器往往在几秒内扫完大量 URL。
- 真蜘蛛会读 robots、会跟随页面里的链接;采集器常常只盯着特定后缀或参数。
- 真蜘蛛对 404、301 的处理有规律;假蜘蛛经常忽略状态码,反复请求同一批死链。
- 并发连接数和请求头完整度也能作为参考,头部字段缺失或顺序异常的,多半不是。
容易误判的几种情况
- 只按 UA 判断:改一个字符串就能骗过整套规则。
- 只按 IP 判断:部分引擎会经过 CDN 或代理节点,网段会变,清单需要定期更新。
- 用拦截代替识别:一上来就全量封禁,可能封掉真蜘蛛的备用节点。
- 把慢速抓取当成异常:有些引擎的抓取频率本身就低,属于正常表现。
识别出来之后怎么处理
建议先记录、后处置。日志里把每次访问标记为真、假、待定三类,观察一两周再决定策略。对确认的假蜘蛛,可以用限速、返回 403 或直接断开连接;对真蜘蛛,保证响应速度和稳定可用比什么都重要。
入口页的价值不在被访问了多少次,而在被正确的爬虫按正常节奏访问。判断真假的目的,是让资源用在有效抓取上。
落地建议
- 日志至少保留 UA、IP、时间、URL、状态码、响应时间六个字段。
- 建立自己的可信 IP 段清单,每月更新一次。
- 服务器或 WAF 层先只做限速,不做全量封禁。
- 定期抽样人工核对,避免规则长期跑偏。