# 抓取时出现503服务不可用：含义及解决办法

> 通过代理返回503：目标过载、维护中、挑战页面或定位过窄。如何判断及解决。

- URL: https://crawlrelay.com/zh/docs/errors/503-service-unavailable/
- 最后更新: 2026-10-13
- Publisher: CrawlRelay (https://crawlrelay.com)

HTTP 状态码（5xx，服务器错误）：每个工具中的精确错误信息、可能原因排序及有效解决方案。

**快速回答 — 代理中的503 Service Unavailable是什么意思？**

**503服务不可用** 表示服务器目前无法处理请求，原因可能是过载、维护或保护策略。通过CrawlRelay住宅代理时，查看`Retry-After`头和响应体：维护或过载的503会随时间恢复，挑战页面表示网站过滤自动流量，应减慢速度。

## 503 Service Unavailable一览

| 属性 | 值 |
| --- | --- |
| 错误 | 503 Service Unavailable |
| 类型 | HTTP 状态码（5xx，服务器错误） |
| 发送方 | 目标网站、其CDN，或代理在无可用出口时 |
| 定义于 | RFC 9110, section 15.6.4 (Retry-After: section 10.2.3) |
| 要重试吗？ | 是，遵循 Retry-After 或退避策略 |
| 先检查 | 检查是否有 Retry-After 头和响应体是否为 CDN 挑战页面 |

## 503 Service Unavailable是什么意思？

RFC 9110将503定义为临时状况。服务器在线但当前无法服务该请求，可能会通过`Retry-After`告知何时恢复。

实际应用中，这代码涵盖三种情况：真正过载或维护中的站点、CDN对自动流量显示的挑战页面，以及代理网关因定位过窄而无可用出口。通过响应体和头信息区分。

## 在Python、curl、Node.js和浏览器中a 503是什么样？

每个工具中相同的失败会有不同的提示信息。请在日志中搜索以下信息：

- **Python requests / httpx:** `status_code == 503`，有时带`Retry-After`
- **Scrapy:** 默认重试（503包含在`RETRY_HTTP_CODES`）
- **curl:** `HTTP/2 503`，常带`server:`头指明CDN
- **浏览器:** 维护页或中间检查页

## 导致a 503的原因是什么？

最可能的首要原因：

- **目标端过载或维护**，常带`Retry-After`。
- **CDN挑战页面**，用503或403状态响应。
- **你的爬虫负载过重**，占据站点流量大部分。
- **定位过窄**，如小城市，暂无匹配出口。
- **上游CDN或云区域故障。**

## 如何一步步诊断a 503？

1. 查看`Retry-After`和`server`头，观察响应体HTML标题。
2. 同国用浏览器打开此页面，看用户视图。
3. 暂停爬虫几分钟，测试单请求：通过则是负载引起。
4. 放宽定位到国家级，做对比。

*用curl测试失败的URL（HTTP端口，详细模式）*

```bash
# Use the URL that fails; with https://api.ipify.org instead, you test the gateway alone.
# "HTTP/1.1 200 Connection established" first, then the site's own status: the site answered.
curl -v -x http://USERNAME:PASSWORD@gw.crawlrelay.com:7777 https://TARGET_URL

# Same test through the SOCKS5 port, with DNS resolved at the exit
curl -v --socks5-hostname gw.crawlrelay.com:7778 --proxy-user USERNAME:PASSWORD https://TARGET_URL
```

## 如何修复a 503？

- **等待并重试**，依据`Retry-After`延迟或指数退避。
- **降低该主机负载：**减少并行请求，延长间隔，启用缓存。
- **将挑战页面视为停止信号**，不要用验证码破解或浏览器伪装工具，降低速率，必要时联系网站。
- **503伴随窄定位时，扩宽定位。**

*Python：使用Retry-After、指数回退和抖动重试*

```python
import random
import time

import requests

PROXY = "http://USERNAME:PASSWORD@gw.crawlrelay.com:7777"
PROXIES = {"http": PROXY, "https": PROXY}
RETRY_STATUSES = {429, 502, 503, 504}


def fetch(url, attempts=5, timeout=(10, 30)):
    for attempt in range(attempts):
        try:
            r = requests.get(url, proxies=PROXIES, timeout=timeout)
        except (requests.exceptions.ConnectionError, requests.exceptions.Timeout):
            r = None  # dropped exit, reset or timeout: a new connection gets a new exit
        if r is not None and r.status_code not in RETRY_STATUSES:
            return r
        retry_after = r.headers.get("Retry-After", "") if r is not None else ""
        if retry_after.isdigit():
            wait = int(retry_after)
        else:
            wait = min(60, 2 ** attempt) + random.uniform(0, 1)
        time.sleep(wait)
    raise RuntimeError("giving up on %s after %d attempts" % (url, attempts))
```

## 遇到a 503后要重试吗？

重试503要有耐心。存在`Retry-After`时用其延迟，否则指数回退，从数秒到一两分钟。如果某主机大部分请求返回503超过几分钟，完全暂停，稍后再试。日志中将挑战页面与真实故障分开统计。

## 503 Service Unavailable如何应用于CrawlRelay？

CrawlRelay通过住宅IP发送请求，按目标地域选取出口。国家级定位覆盖最多出口，城市级更窄。如果仅城市过滤出现503，先用仅国家级测试同一请求，再做修改。

网关：`gw.crawlrelay.com`，端口7777（通过CONNECT的HTTP、HTTPS）和端口7778（SOCKS5）。用户名格式：`USERNAME-country-{cc}-state-{state}-city-{city}-zip-{zip}-asn-{asn}-session-{id}-ttl-{minutes}`。相关内容：[429 Too Many Requests](https://crawlrelay.com/zh/docs/errors/429-too-many-requests/) · [502 Bad Gateway](https://crawlrelay.com/zh/docs/errors/502-bad-gateway/) · [504 Gateway Timeout](https://crawlrelay.com/zh/docs/errors/504-gateway-timeout/)。

## 503 Service Unavailable：开发者常问的问题

### 为何仅通过代理出现503，而家中直连无此问题？

网站对代理流量区别对待，常通过挑战页面体现，或你定位太窄致出口罕见。对比响应体，挑战页面提示放慢，简短代理讯息和窄定位提示放宽地点过滤。

### 503等同于被屏蔽吗？

不。真正的503是暂时的，会自动恢复。带503状态的挑战页是过滤，通常表明速度或模式像自动化。降低并发和添加间隔。如站点拒绝自动访问，应尊重，寻API或许可数据。

### 503最多应重试几次？

重试503三到五次，指数退避，为单个URL合理上限。超过则暂停该主机，不对单URL反复尝试，故障站点靠重试不会更快恢复。记录主机与时间以便之后恢复。

## 本参考中的其他代理错误

- [401 Unauthorized vs 407](https://crawlrelay.com/zh/docs/errors/401-unauthorized/)
- [403 Forbidden](https://crawlrelay.com/zh/docs/errors/403-forbidden/)
- [407 Proxy Authentication Required](https://crawlrelay.com/zh/docs/errors/407-proxy-authentication-required/)
- [429 Too Many Requests](https://crawlrelay.com/zh/docs/errors/429-too-many-requests/)
- [502 Bad Gateway](https://crawlrelay.com/zh/docs/errors/502-bad-gateway/)
- [503 Service Unavailable](https://crawlrelay.com/zh/docs/errors/503-service-unavailable/)
- [504 Gateway Timeout](https://crawlrelay.com/zh/docs/errors/504-gateway-timeout/)
- [Cannot connect to proxy (ProxyError)](https://crawlrelay.com/zh/docs/errors/cannot-connect-to-proxy/)
- [Connection reset by peer (ECONNRESET)](https://crawlrelay.com/zh/docs/errors/connection-reset/)
- [ERR_PROXY_CONNECTION_FAILED](https://crawlrelay.com/zh/docs/errors/err-proxy-connection-failed/)
- [ERR_TUNNEL_CONNECTION_FAILED](https://crawlrelay.com/zh/docs/errors/err-tunnel-connection-failed/)
- [Read timed out (ReadTimeout)](https://crawlrelay.com/zh/docs/errors/read-timeout/)
- [SOCKS5 proxy errors](https://crawlrelay.com/zh/docs/errors/socks5-proxy-errors/)
- [SSL: CERTIFICATE_VERIFY_FAILED](https://crawlrelay.com/zh/docs/errors/ssl-certificate-verify-failed/)
- [SSL: WRONG_VERSION_NUMBER](https://crawlrelay.com/zh/docs/errors/ssl-wrong-version-number/)

**带有涵盖失败案例文档的住宅代理** 来自US$0.50/GB的CrawlRelay住宅代理，流量永不过期。 [查看价格](https://crawlrelay.com/zh/pricing/) · [快速开始](https://crawlrelay.com/zh/docs/)

---

CrawlRelay: CrawlRelay 是为开发者设计的住宅代理和 4G/5G 移动代理轮换服务，适用于爬虫和 AI 数据管道：按需付费且流量永不过期，最低流量从 US$0.50/GB 起，支持加密货币支付，无需上传身份证明。无需 KYC —— 无需身份证、自拍和任何证件。支持加密货币支付。
