做蜘蛛池和站点运营的人经常会问:入口页到底有没有被搜索蜘蛛爬过,目标 URL 有没有被顺着抓下去。比起猜,服务器日志是最直接的证据。这篇讲的是怎么从日志里把这两件事分开看。
日志里真正有用的字段
访问日志一行通常包含很多信息,但和抓取判断相关的其实只有几个:
- IP:用来反查是不是搜索蜘蛛的出口,但 IP 可以被伪造,不能单独作为依据。
- 时间:看抓取是集中在一段时间,还是断断续续。
- 请求方法和路径:确认蜘蛛请求的是入口页还是目标页。
- 状态码:200、301、403、404、5xx 的含义完全不同。
- User-Agent:可以当作线索,但不是证据。
- Referer:目标 URL 的请求如果带着入口页地址,说明很可能是顺着链接过来的。
- 返回字节数:200 但字节数极小,可能是空壳页或被拦页面。
- 响应时间:慢响应会影响蜘蛛后续的抓取节奏。
怎么确认对面真的是搜索蜘蛛
UA 可以随便改,所以更稳妥的做法是反向解析 IP,把解析出的域名和搜索引擎官方公布的网段做比对。不同搜索引擎的验证方式略有差别,各自官方文档里有说明。如果解析结果和 UA 对不上,基本可以判定是伪装请求。
入口页和目标 URL 要分开统计
很多人把两者混在一起看,结果判断全乱。建议分开做两张统计:
- 入口页:被请求次数、状态码分布、单次响应时间、两次访问的间隔。
- 目标 URL:是否有请求、请求是否带入口页 Referer、状态码、返回字节数。
如果入口页每天都有蜘蛛访问,但目标 URL 一条记录都没有,问题大多出在入口页本身:链接没被解析、链接不可见,或者链接地址写错了。反过来,如果目标 URL 有请求但状态码是 403 或 404,那入口页是正常的,问题在目标页的可访问性。
几种常见日志形态
- 只有入口页 200,目标页 0 条:先检查链接是否真的出现在返回的 HTML 里,而不是靠 JavaScript 拼出来。
- 入口页 200,目标页 403 或 429:多半是防火墙或频率限制把蜘蛛挡了,可以看被拦请求的 UA 和 IP 是不是同一批。
- 入口页大量 5xx:蜘蛛可能会降低对整站的抓取频率,先修服务端再谈别的。
- 只有普通访客,没有蜘蛛:可能是入口页本身还没被发现有价值,从外部链接和更新节奏上找原因。
看完日志之后做什么
日志的作用是缩小排查范围,不是直接给结论。一般按这个顺序处理:先确认蜘蛛身份,再看入口页的状态码和响应时间,再确认链接是否出现在 HTML 源码里,最后才检查目标 URL 本身的可访问性和内容质量。顺序反了容易在无关的方向上耗时间。
日志能告诉你蜘蛛来过没有、抓到了什么,但抓取之后是否收录、以什么位置展现,还取决于目标页自身的内容和站点整体情况,日志本身说明不了这些。
把日志当作日常巡查的一部分,固定每周看一次入口页和目标页的抓取记录,比出了问题再翻几天的日志要省事得多。