入口页被蜘蛛请求时有两种结果:能抓到的,和抓不到的。大多数人只关心第一种,但第二种的返回方式,往往决定了蜘蛛下次还来不来、来得多不多。
错误响应为什么值得单独管
蜘蛛对页面的每一次请求都会留下记录:状态码、响应时间、是否跳转。这些记录累积起来,就是搜索引擎判断某个域名是否还值得继续投入抓取预算的依据。如果入口页大量返回 5xx,或者超时频繁,常见的策略是降低这个域名下的抓取频率,而不是加大力度。反过来,把确实不存在的页面干净地返回 404,反而是一种清晰的信号。
几类常见错误,建议的返法
入口页不存在:404,而不是 200
比较常见的坏习惯是做一个“万能页”:任何 URL 都返回 200,内容里再写一句“该页不存在”。对蜘蛛来说这就是一批重复内容页,而且会持续消耗抓取队列。已经下线且不再恢复的入口页可以返回 410,表达永久移除;临时下线则更适合 404,或者用 503 明确表示暂时不可用。
服务端故障:5xx 要少,但要真
5xx 表示服务器自己出了问题,蜘蛛通常会在间隔一段时间后重试。如果是因为维护,返回 503 并带上 Retry-After 头,比直接断连要好。要避免的是“页面本身正常,却因为某个内部接口超时把整页返成 500”——这类错误会让蜘蛛把正常的入口页也一并标记为不稳定。
超时与连接中断
超时没有状态码,蜘蛛看到的就是“没拿到”。频繁超时和频繁 5xx 的效果类似,都会让抓取节奏变慢。如果入口页只是链接聚合,服务端其实没必要做重查询;能静态化的部分尽量静态化,剩下的用缓存兜住。
403 与 429:别把蜘蛛挡在门外
403 常见于 WAF 或防火墙误伤,蜘蛛看到后一般不会反复尝试。429 是限流,蜘蛛会主动退让,但频繁出现同样会压低抓取频率。如果日志里某个 UA 大量吃 403,先确认是误拦还是真恶意,再决定放行还是继续拦。
日志里该看哪几个字段
- 状态码分布:正常入口页应集中在 200、301/302、404;5xx 占比偏高就值得排查。
- 响应时间:看平均,也看尾部(P95 以上),尾部拖长通常说明个别入口页有问题。
- 请求路径:错误集中在某批入口页,还是散落全站,处理方式完全不同。
- UA 与来源 IP:用于区分不同蜘蛛的行为,也便于识别误拦。
- 时间分布:抓取集中在某个时段,能反映回访节奏,可以据此安排维护窗口。
几个容易踩的坑
- 用 302 把所有错误都跳回首页,蜘蛛会把首页当成重复内容反复抓取。
- 入口页已经挂了,却还留在 sitemap 或提交列表里,蜘蛛每次来都撞一次错误。
- 为了“看起来正常”把 5xx 改成 200,问题被藏起来,抓取质量反而下降。
- 只盯蜘蛛总量,不看错误率,误以为抓取量没掉就没事。
错误响应本身不是问题,问题是被反复请求的错误响应长期没人处理。
可以固定下来的观察节奏
比较省事的做法是每周固定看一次日志:先看 5xx 和超时的占比,再看是否有个别入口页反复报错,最后对照入口页清单,确认没有“已下线但仍被提交”的 URL。发现异常先小范围修,别一次性大改,改动本身也会影响蜘蛛的判断。
入口页出错不可怕,可怕的是错误被默认成常态。把返回码返对、把日志看细,蜘蛛的抓取行为会稳定很多。