状态码决定了蜘蛛对你的第一判断
入口页的内容再好,如果服务器先返回一个错误状态码,蜘蛛拿到的就是“这个页面有问题”。在蜘蛛池里,状态码是比标题和正文更前置的信号,它决定了蜘蛛是继续抓、暂时等待,还是直接把这条 URL 划掉。
200 与 3xx:被接受的两种形态
200 是最直接的。蜘蛛拿到内容、解析链接、继续往下走,这是入口页最理想的返回。
301 和 302 属于跳转。301 表示永久搬迁,蜘蛛通常会把信任转移到新地址,后续可能直接抓跳转后的 URL;302 是临时跳转,蜘蛛会保留原地址,但反复 302 会让人怀疑你只是想把蜘蛛引到别处。入口页如果本身只是中转,用 301 指向最终页更干净;如果是短期换路径,用 302 也说得过去,但不要长期挂着。
404 与 410:都代表“没有”,但收尾节奏不同
404 意思是“我找不到这个地址”,蜘蛛会再来几次确认,如果一直 404,才会慢慢降低抓取频率并从索引里移除。410 是“永久删除”,态度更明确,蜘蛛确认后收手更快。
在蜘蛛池里,真正需要区分的是“这个 URL 我暂时不要了”和“这个 URL 永远不要了”。临时下线用 404 或 503 更合适,彻底放弃再用 410。反过来,如果只是把链接从入口页删掉、URL 本身还返回 200,蜘蛛仍可能从历史记录里反复回来抓,这属于资源没有真正回收。
5xx 与 429:告诉蜘蛛“稍后再来”,但不能长期挂着
500、502、503 表示服务器临时出问题。蜘蛛遇到 5xx 一般会缩短重访间隔、过一阵再来,短期内不会直接判死,但持续几天甚至几周都是 5xx,入口页就会被大量降频。429 是“请求太多”,通常出现在你主动限流时。如果限流规则把搜索蜘蛛也一起挡了,蜘蛛看到的就是 429,等于你在告诉它别抓了。
常见误区
- 用 200 返回一个内容为空的页面。状态码正常,但页面没有可抓的东西,蜘蛛下次来的意愿会下降。
- 把所有异常都统一返回 404。本该临时维护的页面直接宣告不存在,恢复后要重新积累信任。
- 入口页整体 302 到主站。批量 302 容易被理解为跳转作弊,还不如老老实实放内容或做 301。
- 限流只按 IP 或频率,不区分 UA。搜索蜘蛛和普通爬虫被同等对待,误伤几乎不可避免。
- 下线页面直接返回 200 空页。蜘蛛抓到的是一条“活着但没内容”的 URL,容易反复来。
实操建议
- 先给入口页的状态码定一套规则:正常页 200,永久迁移 301,临时维护 503 加 Retry-After,彻底废弃 410。
- 定期抽查状态码分布,尤其是那批“应该已经下线”的 URL,确认它们没有再返回 200。
- 限流和 WAF 放行搜索蜘蛛的 UA 与 IP 段,避免把 429 送给不该送的对象。
- 5xx 要当成告警处理,连续出现在日志里说明服务器或配置有问题,而不是等蜘蛛自己适应。
- 状态码、日志、可抓内容三者要能对上:蜘蛛来了、拿到 200、拿到内容,这才算一次有效访问。
状态码是入口页的门牌。门牌写错了,蜘蛛不是找不到,而是找错了地方。
把状态码理顺,不会立刻带来收录或排名变化,但它能减少无效抓取、降低蜘蛛空跑的比例,让池子里的资源被更准确地判断。这部分属于基础工作,值得在扩建之前先做扎实。