# 代理故障排查

> 根据收到的具体响应诊断代理错误，包括 407、403 Tunnel Failed、503、超时、被拦截的端口以及 IP 意外变化。

Canonical URL: https://s1.dev/zh/docs/proxies/troubleshooting

首先用 curl 以详细模式（verbose）运行请求。它可以显示问题出在连接代理、代理认证还是访问目标网站。

```bash
curl -v -x "http://USERNAME:PASSWORD@HOST:PORT" https://ipinfo.io/json
```

`CONNECT` 之后以 `<` 开头的行就是代理的响应。`200 Connection Established` 表示代理已接受你的连接，之后出现的任何错误都来自目标网站。

## 读懂代理的响应

状态码后面的文字说明了是哪一侧出了问题。`Tunnel Failed` 表示凭据已通过认证，但到目标的线路没有打开。其他任何文字都表示代理本身拒绝了连接。

| 响应行 | 含义 | 前往 |
| --- | --- | --- |
| `407 Proxy Authentication Required` | 用户名或密码错误。 | [认证错误](#sign-in-errors-407) |
| `503 Service Unavailable` | 流量额度已用完，或代理已过期或被取消。 | [账户与额度](#account-and-allowance-503) |
| `403 Tunnel Failed` | 目标端口或网站不被允许。 | [被拦截的端口和网站](#blocked-ports-and-sites-403-tunnel-failed) |
| `502 Tunnel Failed` | 线路在 15 秒内没有响应，或暂时无法访问。 | [超时](#timeouts-502-tunnel-failed) |
| `503 Tunnel Failed` | 该 IP 暂时超出了限制。 | [速率与并发限制](#rate-and-concurrency-limits-503-tunnel-failed) |

同样的错误在常见客户端中的表现如下：

| 客户端 | 认证错误 | 线路错误（`Tunnel Failed`） |
| --- | --- | --- |
| curl，HTTP 代理 | `curl: (56) CONNECT tunnel failed, response 407` | `curl: (56) CONNECT tunnel failed, response 403`（或 `502`、`503`） |
| curl，SOCKS5 | `User was rejected by the SOCKS5 server (1 1).` | `Can't complete SOCKS5 connection to HOST. (5)` |
| Python `requests` | `Tunnel connection failed: 407 Proxy Authentication Required` | `Tunnel connection failed: 403 Tunnel Failed` |
| Node.js `undici` | `Proxy response (407) !== 200 when HTTP Tunneling` | `Proxy response (403) !== 200 when HTTP Tunneling` |

SOCKS5 没有状态码，所有线路故障都会返回回复码 `5`（"connection refused"）。要查看具体原因，请通过 HTTP 入口再运行一次同样的请求。

## 认证错误（407）

代理没有接受你的用户名或密码。常见原因：

- 路由参数被加在了用户名上，它们应该加在密码上。
- 国家/地区代码是小写，或会话 ID 不是恰好 8 位数字。
- 静态 ISP 代理的密码被加了后缀。静态 ISP 代理不接受任何参数。
- 把 Search1API API 密钥当作了密码。
- 密码中的 `@`、`:`、`#` 等字符在代理 URL 中没有进行 URL 编码。

请从仪表盘重新复制连接，或使用代理页面**快速开始**下的代码，它们都已经过编码。格式说明请参阅[动态代理参数](https://s1.dev/zh/docs/proxies/parameters#common-mistakes)。

客户端用错误的密码反复重试只会收到更多 `407` 错误。请先停下来修正凭据。

## 账户与额度（503）

收到 `503 Service Unavailable`，或 SOCKS5 连接在任何回复之前就关闭，表示代理正在拒绝该订单的新连接：

- 本计费周期的动态代理流量额度已用完。
- 代理已过期或被取消，其端口已被释放。

请在代理页面查看**带宽**和状态。流量会在下一个计费周期或续费后恢复。

## 被拦截的端口和网站（403 Tunnel Failed）

这是最常见的线路错误。你的凭据没有问题，但目标不被允许。

**端口**。静态 ISP 代理是为网页流量设计的。端口 `80` 和 `443` 在所有 IP 上都可用。其他端口可能在部分或全部 IP 上以 `403 Tunnel Failed` 被拒绝，包括推送通知（`5228`）、SSH（`22`）、DNS over TLS（`853`）、备用 Web 端口（`8080`、`8081`、`8443`）以及游戏或应用端口。邮件发送（SMTP，`25` 端口）不可用。

**网站**。部分类别的网站受到限制：银行与支付、加密货币交易所以及部分政府网站。

要确认原因，请测试 `https://ipinfo.io/json`。如果它可以访问而你的目标不行，说明目标被拦截了。重试没有帮助：同一端口或网站每次都会以同样的方式失败。

> **warn:** 如果你在 Clash、Shadowrocket、Surge 或系统代理设置中以全局模式添加代理，设备上所有应用的流量都会经过它，包括推送服务、DNS、遥测和后台同步。这些流量大多使用被拦截的端口，因此会失败、占用并发数，并可能导致 IP 被限速。请使用规则模式，只让你需要访问的网站走代理。

## 超时（502 Tunnel Failed）

代理最多等待 15 秒来打开到目标的线路。如果未能及时打开，你会收到 `502 Tunnel Failed`，或 SOCKS5 回复码 `5`。

- 将客户端的连接超时设置为至少 30 秒。超时时间更短时，客户端会先放弃，你只能看到一个笼统的超时错误。
- 在新连接上以退避策略重试。
- 如果某个静态 IP 在其他环境下能正常访问的网站上反复超时，请在仪表盘的**帮助**页面申请更换。
- 使用动态网关时，可以尝试全球 IP 池或其他国家/地区。

## 速率与并发限制（503 Tunnel Failed）

`503 Tunnel Failed` 表示该 IP 暂时超出了限制。这通常发生在大量并行连接突发时，或单个 IP 月流量非常高之后。

- 使用静态 ISP 代理 Pro 和 Premium 时，请将每个 IP 的并发连接数控制在约 90 以内。超过 100 时，新连接可能会被拒绝。
- 使用静态 ISP 代理 Pro 和 Premium 时，单个 IP 月流量超过约 100 GB 后，可能会被限速直到计费周期结束。
- 通过 keep-alive 复用连接，而不是每个请求都新建连接，并把繁重的任务分散到更多 IP 上。
- 遇到此错误时请退避。立即重试会让该 IP 持续超出限制。

## 其他连接问题

| 现象 | 可能原因 | 解决方法 |
| --- | --- | --- |
| 连接代理时出现 `Connection refused` 或超时 | Host 或端口错误（例如用了出口 IP 而不是 Host，或用了旧订单的端口）。代理已过期，其端口已被释放。你的网络拦截了出站端口。 | 使用仪表盘当前显示的 Host 和端口。换一个网络测试，以排除本地防火墙的影响。 |
| 代理出现 `SSL routines::wrong version number` 或类似的 TLS 错误 | 代理 URL 以 `https://` 开头。 | 即使目标网站使用 HTTPS，代理 URL 也要使用 `http://`。 |
| SOCKS5 能连接，但访问目标失败或解析为 `198.18.x.x` | 使用 `socks5://` 时由你的机器解析 DNS，而本地代理软件（例如处于 fake-IP 模式的 Clash）返回了虚假地址。 | 使用 `socks5h://`，让 DNS 在代理端解析。 |
| 返回 `200 Connection Established` 后，网站返回 `403`、验证码或拦截页面 | 网站检测到了自动化流量。代理本身工作正常。 | 降低请求频率，发送真实的请求头，并在多步骤流程中使用粘性会话。对于会封锁动态 IP 池的网站，可以尝试静态 ISP 代理。 |

## IP 与位置

| 现象 | 可能原因 | 解决方法 |
| --- | --- | --- |
| 动态 IP 没有变化 | 你的客户端复用了同一个连接，而新 IP 只会在新连接时分配。 | 为每个请求建立新连接，或使用新的会话 ID。参阅[轮换机制](https://s1.dev/zh/docs/proxies/parameters#how-rotation-works)。 |
| 粘性 IP 在 TTL 结束前就变了 | 会话 ID 发生了变化、TTL 已过期，或住宅 IP 下线了。 | 复用同一个会话 ID。如果需要一个永不变化的 IP，请使用静态 ISP 代理。 |
| 国家/地区与你选择的不一致 | 在复制连接之后才设置国家/地区，因此复制的密码中没有 `_country-` 参数。 | 先设置**出口国家/地区**再复制，并检查密码中是否包含 `_country-CC`。 |
| 不同的 IP 检测网站显示的国家/地区或类型不同 | 每个 IP 数据库都有各自的数据来源和更新周期。 | 对比多个检测网站的结果。对于静态 ISP 代理，IP 详情页会显示四家服务商的检测结果。 |

## 连接中断

- 空闲 5 分钟的连接会被关闭。请重新连接，或在长连接上定期发送流量。
- 动态代理额度用完后，已打开的连接会被关闭，新连接会收到 `503 Service Unavailable`。
- 静态 ISP 代理 Basic 每个 IP 每月包含 80 GB 流量。

## 联系支持

> **info:** 打开仪表盘的**帮助**页面，选择**代理**作为问题类型。请提供代理实例 ID、协议、故障发生的时间（含时区）、目标域名和端口，以及去除密码后的 `curl -v` 输出。