这个坑值得记一笔。视频站前面挂的 WAF 规则把带 Range 头的请求当成异常扫描,返回 403。用户拖动进度条就黑屏,Googlebot 抓视频分片也失败。试过关闭整条规则,图片站的防护也跟着弱了。

刚开始盯着「蜘蛛抓视频时同样带 Range,拿不到 206 就放弃」,折腾了半个多小时,排掉了。

原因不止一个,得分开看。WAF 把 Range 头列进了高危特征,视频分段请求被整条拦截;播放器每次拖动都发新请求,命中频率高更容易触发;规则只按请求头匹配,没有区分静态媒体路径。

复现带 Range 的请求

curl -sI -H 'Range: bytes=0-1023' https://www.example.com/v/lesson-1.mp4 | head -3

然后确认 206 是否正常返回

curl -s -o /dev/null -w "%{http_code} %{size_download}\n" -H 'Range: bytes=0-1023' https://www.example.com/v/lesson-1.mp4

再往下在 WAF 里放行媒体目录

location ^~ /v/ { modsecurity_rules 'SecRuleRemoveById 920000'; }

复核蜘蛛的抓取结果

curl -sI -H 'User-Agent: Googlebot' -H 'Range: bytes=0-1023' https://www.example.com/v/lesson-1.mp4 | head -3

怎么算真的好了,看的是同一批现象。媒体目录的 Range 请求恢复 206,播放器拖动正常,视频抓取日志里不再出现 403。

提醒一点。放行要按路径收窄,别整站关规则,否则等于为了视频把整台机器的防护拆掉。线上能稳定复现的问题都不算难,难的是只在大流量下才出现的那种。

作者 9823189