先给结论:当源站返回正常、但边缘节点(CDN、反向代理或WAF层)出现异常时,你应当保留三类证据——同一URL在源站与边缘两条链路上的响应对比、边缘节点返回的完整响应头与状态码序列、以及抓取工具看到的最终内容快照。这三类证据能区分"是边缘拦了爬虫"还是"源站内容本身有问题",从而决定下一步是调整边缘规则还是回到源站排查。
假设某站点源站直连时返回200、内容完整;但通过边缘节点访问同一URL时,爬虫拿到的是403或一个被替换的验证页。运维查了源站日志,发现请求根本没到源站——说明拦截发生在边缘。此时如果只盯着源站排查,会一直找不到原因。下面的证据清单就是为这种"源站无辜、边缘有罪"的场景准备的。
用同一台机器、同一时间窗口,分别请求源站IP(带Host头)和边缘域名,记录以下字段:
Server、Via、X-Cache、CF-Ray一类标识边缘处理链路的响应头动作与结果:如果源站200、边缘返回403,且响应头里出现边缘厂商特有的标识,就可以把问题范围从"全站收录故障"缩小到"边缘规则拦截"。下一步不再是改内容,而是检查边缘的Bot管理、WAF自定义规则或速率限制。
边缘异常往往不是单一状态码,而是一串跳转或挑战:301→302→403,或先返回200的验证页再要求JS执行。需要保留:
Location与状态码,按顺序记录Set-Cookie下发挑战令牌Cache-Control与Vary,判断是否因缓存键差异导致部分节点命中异常副本这些字段能回答一个关键问题:异常是对所有请求生效,还是只对特定UA或特定节点生效。前者指向全局规则,后者指向节点不一致或缓存污染。
源站和边缘都"看起来正常"时,真正决定收录的是抓取工具最终渲染到的内容。保留:
动作与结果:若边缘版本把canonical指向了错误地址,或注入了noindex,那么即使源站完全正确,收录也会异常。此时修改边缘的HTML改写规则,比在源站加任何东西都有效。
请求量或抓取量突然归零,可能是边缘拦截,也可能是抓取预算调整、站点整体改版或季节性波动,不能只凭一个指标下结论。robots.txt里的抓取限制并不等于可靠的索引移除;站点地图提交也不保证收录;HTTPS本身不保证安全无漏洞或排名。这些都需要结合上面的双链路证据一起看。
先确认异常层(源站还是边缘),再确认影响范围(全站、特定UA还是特定节点),最后才决定改哪一侧的配置。如果证据显示边缘对正常爬虫UA返回403,优先调整边缘放行规则并复测;如果显示边缘内容被缓存污染,先刷新或隔离该缓存键。只有双链路都返回一致且正确的内容后,才回到常规的收录方法继续推进。