入口页铺了几百上千个之后,很多人会陷入一种凭感觉的状态:觉得蜘蛛一直在来,但说不清具体来了哪些页面。蜘蛛池使用的域名通常不在站长平台的覆盖范围内,后台也没有爬虫报表,能直接回答这个问题的,基本只有服务器日志。
第一步:把真蜘蛛和噪音分开
打开 access log 先别急着看总量。日志里绝大多数记录来自扫描器、监控探活、CDN 回源和普通访客,搜索引擎蜘蛛往往只占很小一部分。判断可以分两层做:
- 先用 User-Agent 粗筛,把明显无关的请求排掉;
- 再用 IP 反查 rDNS,或与搜索引擎公布的 IP 段比对,做二次确认。
只按 UA 判断容易被伪造 UA 的采集程序误导;反过来漏掉真蜘蛛也不少见,因为部分蜘蛛的 UA 写法比较特殊,正则写得太窄会整批漏掉。
日志里值得盯的几列
- 时间:蜘蛛抓取往往有集中时段,记录首次出现时间,能看出新入口页大概多久被发现。
- 请求 URL:确认抓到的到底是入口页本身,还是某个已经失效的附件、图片或带参数地址。
- 状态码:200 属正常;3xx 要看跳转目标是否可抓;404、410 偏多说明入口页结构有问题;5xx 说明服务端不稳。
- 返回字节数:如果明显小于页面的实际大小,可能是读取被截断,或响应中途断开。
- 响应时间:慢到自己都不满意的页面,蜘蛛也未必愿意长时间等待。
四个常见的误判
- 把 CDN 回源日志当成蜘蛛日志:回源请求的发起方可能是 CDN 节点,来源 IP 和搜索引擎无关。
- 把探活请求当成抓取:监控系统定时请求首页,频率规律得像钟表,很容易被误读成“蜘蛛很活跃”。
- 忽略 304 和 HEAD 请求:部分抓取会先发 HEAD 或带条件的 GET,只看 200 会低估实际抓取量。
- 把一个搜索引擎当成全部:不同搜索引擎的抓取节奏差别很大,混在一起统计很难看出规律,分开看才有效。
用日志反推入口页的问题
比“有没有来”更有价值的是“来了之后发生了什么”。按入口页维度做聚合,至少可以看四件事:被访问次数、首次被访问时间、最近一次被访问时间、状态码分布。如果某些入口页长期零抓取,通常从这几处找原因:没有任何外链或站点地图指向它;从入口到它的层级太深;模板重复度过高,被判断为低价值;robots 或跳转把路径挡住了;服务器对该爬虫返回了 5xx。
日志不会告诉你页面会不会被收录,它只能说明蜘蛛有没有来、来了几次、拿到的是什么响应。这两件事之间还有很长一段距离,别混为一谈。
几个实操习惯
- 日志按天切分并保留一段时间,方便做前后对比,而不是只看当天快照。
- 把蜘蛛 IP 段维护成一份可更新的名单,定期核对,不要长期使用旧列表。
- 用脚本或数据库做聚合,不要靠肉眼在几十万行里找规律。
- 调整入口页模板、内链或站点地图之后,隔几天再回看同一批入口页的抓取变化。
- 扩量之前先用少量入口页跑一轮,确认日志里能看到预期行为,再考虑加量。
把日志当成反馈回路,蜘蛛池才算从“堆页面”变成一个可以调试的系统。