日志是唯一能直接看到蜘蛛行为的数据。GSC 的抓取统计只给汇总,百度搜索资源平台给得更少。要看细节,还是得自己读 access.log。
命令一:数请求
grep -c "Googlebot" access.log
grep "Googlebot" access.log | awk '{print $4}' | cut -d: -f1 | sort | uniq -c
第一条看总量,第二条按天分组看趋势。我们习惯把百度蜘蛛(Baiduspider)也一起数,两条曲线放一起看,一边涨一边跌通常意味着抓取预算被某个方向吃掉了。
命令二:看状态码分布
grep "Googlebot" access.log | awk '{print $9}' | sort | uniq -c | sort -rn
健康站点 200 占 85% 以上,5xx 应该低于 0.5%。404 占比高说明死链多,301 占比高说明重定向链没收敛。5xx 是最要命的,蜘蛛连续遇到几次服务端错误会主动降频。
命令三:按路径聚合
grep "Googlebot" access.log | awk '{print $7}' | cut -d/ -f2 | sort | uniq -c | sort -rn | head -20
看哪个一级路径吃掉最多请求。2025 年 10 月一个站日抓 1.2 万次,排第一的是 /api/,占 41%,全部返回 401。robots.txt 里没屏蔽 API 路径,蜘蛛每天白跑 5000 次。屏蔽后产品页的抓取从每天 800 次涨到 2600 次。
顺手还能算响应时间:把 $request_time 聚合一下,平均超过 1 秒就要查服务器,蜘蛛抓取频次和响应速度强相关。
日志怎么留
nginx 默认按天切分,保留 7 天,做抓取分析不够用。我们一般让运维保留 90 天并压缩归档,或者直接推到日志服务里。做一次完整诊断要看连续 4 周的数据,单看一天容易被大促、发版这种异常带偏。
如果站点在 CDN 后面,源站日志里只有回源请求,蜘蛛直接命中缓存的请求看不到。这种情况要用 CDN 厂商的访问日志,或者把蜘蛛 UA 的回源规则调整一下。我们遇到过一次,客户以为自己日抓只有 300 次,换到 CDN 日志一看实际是 4000 次,诊断结论完全反了。
三个常见误判
把 UA 当身份。UA 可以伪造,日志里出现自称 Googlebot 的请求不一定是真的,验证方法是反查 IP 段。把缓存命中当没抓。前面说过,CDN 后面的日志会少一大截。把周末的低抓取当异常。蜘蛛也有自己的节奏,按周看比按天看稳。
什么时候不用做
日抓取量 1000 次以下的站,先别碰日志分析。抓取量太小,结论全是噪声,先把内容做起来、把收录问题修好。抓取预算这件事,是流量上来了才值得抠的细节。
工具方面,GoAccess 能出一份可视化报表,Screaming Frog Log File Analyser 适合和爬虫数据对照,命令行足够应付 80% 的场景。我们做诊断先用三个命令看一遍,判断要不要上工具。
元析智能
为软件公司做 SEO 和 GEO 优化