做蜘蛛池的人常会问一个问题:这几天蜘蛛到底来了多少。回答之前,得先确定数据是从哪来的。第三方统计工具、站长平台后台、服务器原始日志,三者的口径往往对不上,差距可能有好几倍。搞清楚差异在哪,比盯着某一个数字更有用。
为什么优先看服务器原始日志
统计工具通常在页面里插一段 JS,只有能执行脚本的访问才会被记录。搜索蜘蛛一般不执行 JS,所以它在统计工具里经常是隐身的。站长平台的数据来自搜索引擎自己,可信度较高,但只覆盖该引擎,而且有延迟,通常按天汇总,看不到分钟级的细节。
服务器日志是原始记录,谁在什么时间请求了哪个 URL、返回了什么状态码,都在里面。它不完美,但它是少数能同时看到蜘蛛与非蜘蛛请求的地方,做交叉判断时最有价值。
一条日志里有哪些字段值得看
- 来源 IP:判断归属网段,也可用于反向解析验证。
- 时间戳:看抓取集中在哪些时段。
- 请求方法:蜘蛛以 GET 和 HEAD 为主,大量 POST 基本可以排除。
- URL 与查询参数:看它进了哪些入口,是否在参数上打转。
- 状态码:200、301、403、404、5xx 各自的比例。
- User-Agent:只是线索,不能单独作为判断依据。
- 响应大小与耗时:判断是否存在大量空响应或超时。
统计口径不同,结论会差很多
同样一段日志,至少可以拆出三种数字:
- 原始请求数:包括所有资源请求,图片、CSS、favicon 都算,数字最大,也最容易误导。
- 页面级请求数:只统计 HTML 文档,更接近蜘蛛抓了几个页面。
- 去重 URL 数:同一个 URL 被反复抓十次也只算一个,反映的是覆盖量而不是抓取量。
如果入口页带缓存或走了 CDN,源站日志可能根本没有这次请求的记录,数字会比实际少。反过来,如果日志把健康检查、探针请求也算进去,数字又会虚高。
从日志里能读出的几个信号
抓取时段分布
把一天切成小时看请求量,能看出蜘蛛是集中在一个窗口来,还是零散分布。如果连续几天某个时段突然空了,先查那段时间服务器有没有异常、有没有触发限流。
状态码结构
200 占绝大多数是正常状态。如果 5xx 比例上升,说明服务端不稳定;403 增多,可能是风控规则误伤;404 大量出现,通常是入口页里的链接指向了已经不存在的地址。
抓取路径
按时间排序,看蜘蛛从哪个 URL 进来、接下来抓了什么。如果它总在第一层就离开,说明页面里可跟随的链接太少,或者链接藏在需要脚本渲染才能出现的位置。
几个常见的误判
- 把扫描器当蜘蛛:请求集中在后台路径、配置文件、已知漏洞地址上,这基本不是搜索蜘蛛。
- 只看总量不看比例:总量翻倍,但里面多的是重复抓取同一个 URL,实际覆盖并没有增加。
- 日志保留太短:只留三天,看不出周级别的波动,也判断不了调整之后有没有效果。
- 忽略缓存层:只分析源站日志,会把 CDN 命中的那部分流量完全漏掉。
实操上的几点建议
- 日志至少保留 30 天,按天切分,便于对比。
- 先用 UA 做初筛,再用 IP 段和反向解析做二次确认,两步都过再计入蜘蛛请求。
- 把页面请求单独拆出来统计,别和静态资源混在一起。
- 做一份简单日报:总请求、页面请求、去重 URL 数、状态码分布,四个数就够了。
- 改动入口页结构或链接之后,至少观察一周再下结论,蜘蛛的反馈不会当天就到。
日志不会告诉你蜘蛛喜不喜欢你的站点,它只会如实记录谁在什么时候请求了什么。把这份记录读准,比追求某个漂亮的数字更有意义。