这个坑值得记一笔。视频站前面挂的 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。
提醒一点。放行要按路径收窄,别整站关规则,否则等于为了视频把整台机器的防护拆掉。线上能稳定复现的问题都不算难,难的是只在大流量下才出现的那种。
