这个坑值得记一笔。改版按 cookie 分流灰度,蜘蛛没有 cookie 时命中默认分支。同一地址有时抓到一万二千字的旧版,有时抓到六千字的新版,索引里的标题与摘要来回翻。

刚开始盯着「灰度期没有给爬虫固定版本,抓取结果前后矛盾」,折腾了半个多小时,排掉了。

这类报错背后常见的原因有几处,逐个排除就行。分流逻辑放在 Nginx 上,无 cookie 的请求落到旧分支;新旧模板正文结构与内链完全不同,被当成两个页面;整页缓存按 URL 存,两个版本互相覆盖。

连续抓同一地址比对字节数

for i in 1 2 3; do curl -s https://www.lu0.cn/1.html | wc -c; done

随后让爬虫 UA 固定命中新版

if ($http_user_agent ~* 'bot') { set $ver new; }

缓存键带上版本号避免互相覆盖

proxy_cache_key $scheme$host$request_uri$ver;

灰度结束后删掉旧模板与分流规则

怎么算真的好了,看的是同一批现象。同一 URL 连续请求返回的字节数完全一致,索引里的标题稳定下来,改版两周后栏目排名回到原有位置。

提醒一点。灰度对人是好事,对蜘蛛是灾难,宁可让爬虫直接看全量新版,也别让它每次来都抽签。这类问题最好一次改到位,反复小改反而容易把原因搅混。

作者 9823189