现场是这样的。360 站长平台显示抓取异常,返回码 403,同一批地址在百度和谷歌那边都能正常抓取,日志里也能看到它们的访问记录。

原因不止一个,得分开看。WAF 只放行了常见搜索引擎的 UA,360 蜘蛛被拦;防盗链规则按 Referer 判断,蜘蛛请求不带 Referer;频率限制对陌生 UA 生效,请求直接被拒。

动手时先用 360 的 UA 请求验证

curl -sI -A 'Mozilla/5.0 (compatible; 360Spider)' https://www.example.com/

然后在 WAF 里放行该 UA

if ($http_user_agent ~* '360Spider') { set $ok 1; }

等前面都确认过,再对无 Referer 的站内请求放行

valid_referers none blocked server_names;

中间停过一次,把已经改的东西回滚干净,再重新来一遍。

同样的操作我在测试机上先走了一遍,线上只做验证过的部分。

怎么算真的好了,看的是同一批现象。该 UA 请求返回 200,平台抓取异常提示消失,抓取量在两三天内开始回升,日志里也能看到该蜘蛛的访问。

把搜索引擎 UA 逐个加白名单容易漏,规则最好按反向解析的 IP 段判断,UA 本身是可以随手伪造的。线上能稳定复现的问题都不算难,难的是只在大流量下才出现的那种。

作者 9823189