问题出现得很突然,日志倒是留得挺全。视频用 HLS 分片播放,ts 和 m3u8 地址写在页面源码里,日志里这些请求一天两万多条且大量 404,正文页抓取量被挤掉一半。

原因不止一个,得分开看。分片地址直接暴露在 HTML 的 source 标签里。另一种情况是播放器每次生成带时间戳的新分片地址,永远抓不完。

还有一种情况,分片目录没有 robots 规则,不存在的分片也不返回 410。

动手时先统计分片请求占比

awk '/\.m3u8|\.ts/ {c++} END {print c}' access.log

然后在 robots 里封掉分片目录

curl -s https://www.example.com/robots.txt | tail -5

给不存在的分片返回 410 验证

curl -s -o /dev/null -w '%{http_code}\n' https://www.example.com/hls/1.ts

这类改动我都写进变更记录,过两周再出问题时能对上号。

怎么算真的好了,看的是同一批现象。三天后日志里分片请求降到每天几百条,正文页的抓取次数回到原来水平。

提醒一点。分片地址应该由播放器请求接口下发,写死在 HTML 里等于给蜘蛛铺了一条无效路径。线上能稳定复现的问题都不算难,难的是只在大流量下才出现的那种。

作者 9823189