429 和 503 不是一回事
429 Too Many Requests 表示“請求太频繁”,通常由服務器、WAF 或 CDN 的限速規則主動返回;503 Service Unavailable 表示服務暂时不可用,可能因為维護、過载,也可能是站点主動拒绝爬虫。两者對搜尋蜘蛛传递的信号不同,但结果相近:這一次請求没有拿到入口頁正文。
搜尋蜘蛛遇到限速时一般怎么做
主流搜尋引擎的爬虫都有重试與退避机制,遇到限速时通常不是“立刻拉黑走人”。
- 本次抓取视為失敗,一般不會把這個入口頁当成空頁面處理;
- 如果响應里带 Retry-After 头,蜘蛛會參考這個時間再回来;
- 没有 Retry-After 时,往往會拉長重訪間隔,逐步降低對该目錄或该 IP 的抓取频率;
- 短時間内反复触發限速,站点整体抓取速率也會被压低。
最先受影响的往往是抓取预算
抓取预算是有限的。入口頁被限速後,蜘蛛通常先减少被抓得最频繁的那些路径,而蜘蛛池入口頁恰好属于高频路径。结果是入口頁被讀到的次數變少,頁面里新出現的連結自然也更难被及时解析出来。
那目标 URL 還會被發現吗
多數情况下還會,但节奏會被拉慢,而且不保證全部覆盖。可以分三種情况看:
- 限速是偶發的:蜘蛛重试後成功拿到入口頁,目标連結照常被發現;
- 限速是長期策略:入口頁訪問频率下降,新連結的發現延迟可能從几小时變成几天甚至更久;
- 限速叠加在寫死的規則上(例如對某個 UA 段全部返回 429):蜘蛛長期拿不到入口頁 HTML,目标 URL 只能靠站内連結、sitemap、外部連結等其他来源被發現。
需要分清的是,“被發現”和“被收錄”是两件事。即使蜘蛛顺着入口頁找到了目标 URL,是否收錄仍取决于目标頁自身的内容质量、重复程度和站点整体情况,跟入口頁是否被限速没有直接因果關系。
常见誤区
誤区一:把 503 当萬能挡板
有些站点為节省资源,對所有爬虫统一返回 503。短期看似省事,長期會让蜘蛛降低對整站的信任度和抓取频率,入口頁和目标頁都會一起受影响。
誤区二:只在入口頁限速,却忘了目标頁
限速規則一般按 IP 或路径生效。如果規則范围覆盖了目标 URL 所在目錄,即使連結被發現了,目标頁也可能因為同样的規則抓不到。
誤区三:以為加了 Retry-After 就萬事大吉
Retry-After 只是建议值,蜘蛛不一定嚴格按它执行,也不代表會立刻恢复原有的抓取频率。
實际可以做的調整
- 先看日誌:確認 429/503 是 WAF、CDN 還是源站返回的,定位到具体規則再動手;
- 给主流搜尋蜘蛛單獨放行或适当提高阈值,同时避免挤占真實用戶的带宽;
- 入口頁尽量轻量,减少單次請求的资源消耗,降低被限速的概率;
- 控制入口頁數量和刷新频率,別自己制造高频訪問;
- 保留 sitemap、站内連結等常規發現路径,不要让目标 URL 只依赖入口頁;
- 确實需要限速时,用合理阈值配合 Retry-After,而不是一刀切拒绝。
搜尋引擎處理限速的具体策略並不公開,也會随時間調整。以上描述的是常见行為,不能当作确定承诺,也無法保證目标 URL 一定被抓取或收錄。
简單说:429 或 503 不會让搜尋蜘蛛“永遠不再来”,但會明顯拖慢入口頁的抓取节奏,從而拖慢目标 URL 的發現速度。與其用限速来管理流量,不如先把入口頁做轻、把抓取路径做清晰。