记录一下那天晚上的排查过程。CDN 开了人机验证,阈值调到中等之后,百度蜘蛛抓内页时被弹到验证页,返回 200 但正文只有一段脚本。索引里出现大量标题为「安全检查」的页面,正文页的收录同步下滑。
刚开始盯着「验证页标题固定 被批量收录」,折腾了半个多小时,排掉了。
排查方向其实有限,先把可能性排一排。人机验证对所有 UA 生效 没有为蜘蛛放行。也可能是验证页返回 200 而不是 403 或 503。
另外,阈值按请求频率算 蜘蛛的突发抓取必然触发。
上来先用蜘蛛 UA 取页面看返回内容
curl -s -A 'Baiduspider' https://www.example.com/p/1 | head -c 300
随后在验证规则里跳过已验真的蜘蛛段
if ($http_user_agent ~* 'Baiduspider') { set $challenge 0; }
然后验证页改成 503 并带重试头
add_header Retry-After 3600; return 503;
剩下的就是统计验证页的收录量
curl -s -A 'bingbot' 'https://www.bing.com/search?q=site%3Awww.example.com+安全检查' | grep -c 'example.com'
改完先别撤,确认这几项。蜘蛛拿到完整正文,索引里标题为安全检查的页面逐步消失。
验证页不能返回 200,否则蜘蛛会把它当成正常内容收录。这类问题最好一次改到位,反复小改反而容易把原因搅混。
