搜索抓取

日志里的两类访客:真实搜索蜘蛛与模拟抓取怎么区分

日志里顶着搜索引擎 UA 的访问,未必真来自搜索引擎。本文从 IP 正反向解析、请求行为、静态资源获取、robots 遵守度几个角度给出可落地的甄别流程,并说明分清之后站点在限速、抓取预算和报告口径上该怎么调整。

搜索抓取

日志里的两类访客:真实搜索蜘蛛与模拟抓取怎么区分

做站点运营的人,几乎都会在日志里遇到两种访问:一种确实来自搜索引擎,另一种只是把 User-Agent 写成了搜索引擎的名字。前者影响 URL 被发现的速度,后者只会消耗带宽。把这两类混在一起看,抓取报告就会失真。

只看 UA,迟早会被误导

UA 是一行客户端自己写的字符串,任何人都能改。日志里出现 Baiduspider 或 Googlebot,只说明对方声称自己是谁,不说明它真的是谁。反过来,有些真实蜘蛛在特定场景下也会用不同的 UA,比如移动端抓取、图片抓取、渲染用的第二波请求。所以判断要落在一组证据上,而不是单一字段。

可以交叉验证的几个方向

反向 DNS 与 IP 归属

最硬的一条线索是 IP。主流搜索引擎都提供官方 IP 段或反向解析规则:把日志里的 IP 做一次反向 DNS,看域名是否落在官方域内,再做一次正向解析确认能回到同一个 IP。两步都对上,可信度才高。只做反向解析,容易被伪造的 PTR 记录骗过。另外,官方 IP 段会更新,需要隔一段时间核对一次。

请求行为是否符合爬虫逻辑

真实蜘蛛的行为有相对稳定的形态:请求间隔受站点响应时间影响,遇到 5xx 会降速而不是加速,对同一批 URL 会重复回访,路径分布通常沿着内链和 Sitemap 展开。模拟抓取往往相反:并发高、间隔固定、只打少数高价值路径,或者把整站按顺序扫一遍。

是否请求静态资源、是否执行页面

看它有没有取 CSS、JS、图片。只取 HTML 而不取任何资源,说明它不打算渲染页面,多半只是在收集 URL;真实蜘蛛在需要渲染时会取这些资源。这条不是绝对的——只做 URL 发现的抓取也可能不取资源——所以要和其他线索一起看。

对 robots.txt 与限流状态的反应

真实蜘蛛会先读 robots.txt,并且遵守其中的规则。可以在 robots.txt 里放一条只对特定路径有效的测试规则,观察对方是否回避。再看它对 429 和超时的处理:真蜘蛛会退避,模拟抓取通常照打不误。

一套可落地的日志甄别流程

  1. 按 UA 分组,统计每组的总请求量、独立 IP 数、请求路径数与状态码分布。
  2. 对每个 IP 做正反向 DNS 校验,标记通过、失败、无法解析三类。
  3. 对照行为指标:并发度、请求间隔波动、是否取静态资源、是否读 robots.txt。
  4. 把结论写回日志字段,之后按“已确认、疑似、非蜘蛛”三类看数据。
  5. 定期复核 IP 段与规则,避免设备或线路变化带来的误判。

分清之后,策略才谈得上

  • 对确认的搜索蜘蛛:保证响应稳定,重点 URL 的抓取失败要单独盯,出现 5xx 优先排查服务器,而不是忙着加链接。
  • 对疑似模拟抓取:可以在 WAF 或 Nginx 层面按 IP、频率做限速,不必为它保留抓取预算。
  • 对无法判断的:先限速观察,别直接封整段,避免误伤。
  • 报告口径统一:抓取量、覆盖率这类指标只统计确认过的蜘蛛,否则波动会被放大。
IP 校验和 UA 判断都是运营侧的参考手段,不能替代对服务器日志与响应状态本身的分析。任何“保证被收录”的做法都不成立,能做的只是让真实蜘蛛的每一次访问更顺畅。

蜘蛛池、模拟抓取这类工具在日志里留下的痕迹,和真实搜索蜘蛛的差异其实是可观测的。把甄别这一步做扎实,后面的 URL 发现、抓取路径优化、Sitemap 调整才有意义——否则你可能一直在为一批不会带来任何发现的访客优化站点。