详情页的下载跳转按 Referer 判断来源,为空就返回 404。蜘蛛请求本来就不带这个头,日志里这批地址全是 404,死链报告一周涨了两千条。
真正麻烦的地方在于,几个原因的现象几乎一样。跳转逻辑把空 Referer 当成盗链;爬虫请求默认不发送 Referer;404 页面没有兜底,直接返回错误模板;规则写在 CDN 边缘,源站日志里看不到。
不带 Referer 复现一次
curl -s -o /dev/null -w '%{http_code}\n' https://www.example.com/download/1
带 Referer 做对比
curl -s -o /dev/null -w '%{http_code}\n' -H 'Referer: https://www.example.com/' https://www.example.com/download/1
空
复
查
这类问题以前遇到过,但这次的触发条件和上次不一样。
这类改动我都写进变更记录,过两周再出问题时能对上号。
我习惯把每一步的执行时间和结果记在一边,后面复盘省事。
别只看报错消失,验证要多做一步。放行后这批地址返回 200,死链条目在十天内从两千降到两百以内,下载页也重新进索引。
任何依赖 Referer 的拦截都会误伤蜘蛛,因为爬虫请求本来就不带这个头。监控比日志更早给出信号,事后回看经常能提前半小时发现异常。
