常见问题

日志里蜘蛛很多但目标 URL 没被抓:先确认来的是不是真搜索蜘蛛

服务器日志里出现带 bot 字样的访问记录,并不等于搜索引擎真的来过。本文说明如何用反向 DNS 加正向确认验证搜索蜘蛛身份,真蜘蛛在日志中的常见行为特征,以及在确认有真实抓取后、目标 URL 仍未被抓时可以按哪些方向排查。

常见问题

日志里蜘蛛很多但目标 URL 没被抓:先确认来的是不是真搜索蜘蛛

很多人看服务器日志时会遇到这种情况:日志里每天都有一堆带 spider、bot 字样的访问记录,入口页也在被反复访问,但目标 URL 的抓取记录迟迟不出现。这时先别急着加入口页,第一步应该是确认这些访问到底是不是真的搜索蜘蛛。

为什么 UA 不能作为判断依据

User-Agent 是一段客户端自己发过来的字符串,任何人用几行脚本就能把它改成 Baiduspider、Googlebot。只看 UA 就判断蜘蛛真伪,很容易被自己伪造的流量骗到,也可能把真实蜘蛛误伤。

能改 UA 的不只是爬虫工具,普通浏览器插件、压测工具、监控探针都可以。日志里出现 Baiduspider,只代表对方自称是百度蜘蛛。

官方推荐的验证方式:反向 DNS 加正向确认

主流搜索引擎都提供了验证蜘蛛身份的方法,核心是两步:先对访问者 IP 做反向 DNS 查询,看解析出的域名是否属于该搜索引擎;再对这个域名做一次正向解析,确认解析结果和原始 IP 一致。两步都通过,才基本可以认定是官方蜘蛛。

  • 百度:官方文档给出了蜘蛛的 IP 段和验证方式,通常可反向解析到 baidu.com 域名再做正向确认。
  • Google:可查 Googlebot 使用的 IP 段列表,或对 IP 反向解析到 googlebot.com、google.com 后正向核对。
  • Bing:反向解析到 search.msn.com 并正向核对。
  • 360、搜狗等也各有说明,建议以官方帮助文档的最新内容为准。

真蜘蛛在日志里的一些行为特征

  • 访问频率相对稳定,不会在某几秒内爆出上千次请求;
  • 会请求 robots.txt,并按其中规则调整抓取范围;
  • 对页面的 CSS、JS 等资源也可能发起请求,取决于该引擎的渲染策略;
  • 首次访问多为新 URL,之后可能回访更新;
  • IP 相对集中在已知网段,而不是散落在各种 IDC 或家宽地址里。

反过来,如果某个 IP 只抓入口页、从不抓其他资源,请求命中率极高却从不下载页面依赖文件,UA 又对不上反向解析结果,那大概率是伪造流量。

确认真蜘蛛后,目标 URL 仍不被抓的常见原因

  1. 入口页本身没有被有效解析,蜘蛛来过但链接没有被提取;
  2. 入口页返回的内容对蜘蛛和普通访客不一致,或者页面是空壳;
  3. 入口页数量很大但质量很低,抓取配额被消耗在无效页面上;
  4. 目标 URL 返回 404、5xx 或长时间超时,蜘蛛降低了对该目录的抓取意愿;
  5. robots.txt、meta robots、X-Robots-Tag 等设置把路径挡住了。

日志监测可以怎么做

与其只看“有没有蜘蛛”,不如把日志拆成几个可观察的指标:

  • 单位时间内通过验证的真实蜘蛛请求数;
  • 入口页的抓取频次和返回状态码分布;
  • 目标 URL 首次被抓的时间;
  • 蜘蛛抓取后,同一页面是否出现过第二次访问。

这些指标更接近实际情况,也能帮助你判断问题出在入口页、目标页还是服务器响应上,而不是靠猜。

小结

判断蜘蛛真伪,UA 只是线索,反向 DNS 加正向确认才是比较可靠的办法。确认有真实蜘蛛来访之后,再去排查入口页可抓取性、目标 URL 状态和整体抓取配额,问题定位会清楚很多。任何工具和蜘蛛池都只是增加被发现的概率,最终是否被抓取、是否被使用,仍由搜索引擎自己决定。