后台数据是"结果",服务器日志是"过程"。收录不好时,看日志能立刻知道:蜘蛛来没来、来了抓了什么、拿到的是什么响应。
很多人不看日志,是因为觉得麻烦。其实只要会几条命令,十分钟能看出问题。
一、日志在哪
宝塔环境默认在 /www/wwwlogs/你的域名.log。Nginx 的格式通常是:
$remote_addr - $remote_user [$time_local] "$request" $status $body_bytes_sent "$http_referer" "$http_user_agent"
二、筛出百度蜘蛛
grep -i "baiduspider" /www/wwwlogs/example.com.log | tail -50
看三件事:访问的 URL、返回码、时间。如果一条都没有,说明蜘蛛没来,问题在站点可访问性或 robots。
三、四个健康度指标
1. 抓取总量
grep -c "baiduspider" access.log
一天几十次算低,几百次正常,几千次说明站点权重不错。注意结合站点规模看。
2. 状态码分布
grep -i "baiduspider" access.log | awk '{print $9}' | sort | uniq -c | sort -rn
200 应占绝大多数。如果 404 占比超过 20%,说明有大量死链;如果 5xx 多,服务器有问题;如果 301 特别多,跳转链可能太长。
3. 抓取深度
看蜘蛛访问的 URL 类型。如果只抓首页和列表页,不抓详情页,说明内链不足或层级太深。
grep -i "baiduspider" access.log | awk '{print $7}' | sort | uniq -c | sort -rn | head -30
4. 抓取时间分布
如果蜘蛛集中在某一小时,说明抓取频次低;如果全天分散,说明抓取正常。
四、怎么判断"来了但没收录"
日志显示蜘蛛抓了某个页面,返回 200,但 site 查不到。这说明抓取成功、索引未通过。问题在内容评估,不在技术。
这种情况下再去看服务器、robots 都是浪费时间,应该直接改内容。
五、常见异常与处理
| 日志现象 | 原因 | 处理 |
|---|---|---|
| 蜘蛛 403 | 防火墙/WAF 拦截 | 把百度 IP 段加白 |
| 蜘蛛 503 | 服务器过载或维护 | 查负载、关维护模式 |
| 大量 404 | 死链、URL 改过 | 做 301 或返回 410 |
| 只抓首页 | 内链缺失、导航是 JS | 改服务端输出链接 |
| 抓取突然归零 | robots 改动、DNS 故障 | 逐项排查 |
六、几个实用命令
# 统计每个 URL 被抓次数
grep -i baiduspider access.log | awk '{print $7}' | sort | uniq -c | sort -rn | head
# 统计蜘蛛 IP
grep -i baiduspider access.log | awk '{print $1}' | sort | uniq -c | sort -rn
# 看最近一次抓取时间
grep -i baiduspider access.log | tail -1
注意:UA 可以伪造,所以看 IP 更准。百度的 IP 段可以在官方文档查到。
七、养成看日志的习惯
建议每周看一次,重点看三个数:抓取总量、404 占比、抓取深度。这三个数稳定,说明站点健康;有异常,能提前发现问题,而不是等流量掉了才查。
日志里先看三个字段
状态码、UA、IP。先筛出百度蜘蛛的 IP 段,再看它抓了哪些目录、返回什么状态、响应时间多少。404 多说明内链有问题,503 多说明服务器扛不住。
不要只看访问量。抓取频次和抓取深度,比总数更有意义。
常见问题
日志文件太大怎么办
用 grep 配合日期过滤,或者先按天切割日志。宝塔的计划任务里有日志切割功能。
云服务器的日志在哪
如果套了 CDN,源站日志里看到的可能是 CDN 节点 IP,需要在 CDN 后台看真实日志。
日志能看出被采集吗
能。如果某个 IP 短时间内大量抓取你的文章页,UA 是普通浏览器,多半是采集器。
日志之外,索引层面的问题见收录不释放的排查。