# 代理错误排查：407、400、402、403、429、502 与超时

代理故障排查的一半工作，是判断响应来自网关还是网站。状态码及其出现位置会告诉你答案，而每种组合都有对应的解决方法。


## 第 1 步：响应来自谁？

使用 `curl -v` 运行失败的请求。`Connection established` 之前出现在 `CONNECT` 行上的状态来自网关；之后出现的状态则来自目标网站。浏览器会将网关故障显示为 `ERR_TUNNEL_CONNECTION_FAILED` 或 `ERR_PROXY_CONNECTION_FAILED`。


## 第 2 步：网关状态码

| 代码 | ProxShift 含义 | 解决方法 |
| --- | --- | --- |
| 407 invalid_credentials | 用户名或密码被拒绝 | 重新复制用户名和密码；检查末尾是否有空格；白名单 IP 是否已更改？ |
| 400 invalid_parameter | 用户名参数未知或格式错误 | 检查键和值：应使用 -cc-gb 而非 -cc-uk，-city- 不得含空格，-ttl- 应为 1m 至 24h |
| 402 insufficient_balance | 流量或余额已耗尽 | 充值；如果使用子用户，请检查其上限 |
| 403 blocked_destination | 端口或目标不允许访问 | 端口 25、UDP 和仅支持 IPv6 的目标按设计会被拒绝 |
| 502 no_exit_available | 当前没有符合该位置的出口 | 扩大范围：移除 -city- 或 -asn-，保留 -cc-；一分钟后重试 |
| 502 exit_failed | 出口在到达目标前发生故障 | 重试一次；下一个连接会选择其他出口 |
| 504 target_timeout | 目标未及时响应 | 重试；从其他网络检查目标 |


## 第 3 步：目标网站状态码

| 代码 | 可能原因 | 解决方法 |
| --- | --- | --- |
| 403（网站页面） | 出口类型或指纹被拒绝 | 使用住宅或移动出口；采用真实的客户端标头；流程使用粘性会话 |
| 429 | 按 IP 限速 | 按连接轮换；降低每个出口的速率；遵循 Retry-After |
| 200 但数据为空 | 软封锁 | 按 403 处理；检查内容而非状态码 |
| 302 重定向到质询页面 | 机器人检查 | 降低速度；对此目标使用真实浏览器；采用更强的出口类型 |
| 5xx | 目标网站故障 | 退避等待；这不是代理问题 |


## 连接层故障

- 传输过程中出现 `ECONNRESET`、`Connection reset by peer`：家庭住宅出口已断开。重试一次；对于粘性会话，网关会重新绑定到同一位置的新出口。
- 空闲超时：网关会关闭空闲 60 秒的连接。长轮询需要建立新连接。
- 通过代理时出现 TLS 错误：这绝不正常。检查你与网关之间是否存在本地拦截器（企业代理、防病毒软件）。


## 第 4 步：作出判断

1. 凭据或参数错误 → 修正后重试（不产生费用）。
2. 网关找不到出口 → 扩大位置范围。
3. 目标封锁该出口类型 → 改用更强的网络：数据中心 → 住宅 → 移动。
4. 目标进行限速 → 提高轮换频率并降低速度；绝不要一边高频请求一边轮换。
5. 目标发生故障 → 等待。


## 问题

**ProxShift 会返回 429 吗？**

不会。网关不限制请求速率；429 始终来自目标网站。

**失败的请求会计费吗？**

在到达目标前失败的连接不会计费。目标网站返回的 403 或 429 页面按其大小计费，通常只有几 KB。

来源：https://proxshift.com/zh/guides/troubleshoot-proxy-errors
