# 网关可能返回的每种状态，以及相应的解决方法。

网关错误的响应正文中会包含简短原因。目标网站的错误则会原样传递。区分二者就解决了大部分故障排查问题。


## 网关响应

| 状态 | 响应正文中的原因 | 原因 | 解决方法 |
| --- | --- | --- | --- |
| 407 Proxy Authentication Required | invalid_credentials | 用户名或密码错误；或者连接 IP 不在白名单中，且未发送凭据 | 重新从控制面板复制用户名和密码；在不使用代理的情况下运行 `curl https://api.ipify.org`，并用结果核对白名单 |
| 400 Bad Request | invalid_parameter: … | 用户名参数未知、格式错误或参数组合无效（在美国以外使用 `-state-`，或使用 `-city-` 而未使用 `-cc-`） | 修正响应正文中指出的字符串；请参阅[定位与会话](https://proxshift.com/zh/docs/username-parameters) |
| 402 Payment Required | insufficient_balance | 所用流量池网络已无剩余流量，或子用户已达到限额 | 购买流量或提高子用户限额；查看 [`GET /v1/balance`](https://proxshift.com/zh/docs/api#get-v1-balance) |
| 403 Forbidden | blocked_destination | 不允许访问该目标或端口（端口 25，或目标位于我们的拒绝列表中），或者账户已被暂停 | 阅读响应中的原因；如果你认为某个目标被误列，请联系我们 |
| 502 Bad Gateway | no_exit_available / exit_failed | 没有符合参数的设备在线，或者选定设备在请求过程中掉线 | 重试一次（轮换机制会自动选择另一个出口）；如果问题反复出现，请放宽定位条件 |
| 504 Gateway Timeout | target_timeout | 目标网站未在时限内通过出口作出响应 | 使用新 IP 重试；如果目标网站本身响应缓慢，请延长客户端超时时间 |

> Info：网关绝不会返回 `429`。我们不会对你实施请求速率限制；`429` 一定来自目标网站，表示你应降低对该域名的请求频率，或将请求分散到更多会话中。


## 网关错误还是目标网站错误？

网关错误会在收到目标网站的任何字节之前出现：对于 HTTPS 请求，它是对 `CONNECT` 的响应，大多数客户端会将其显示为连接或代理错误，而不是 HTTP 响应。目标网站错误则从隧道内传来，带有目标网站自己的响应头和正文。`curl -v` 能立即显示二者的区别：查看 `CONNECT` 之后紧接着哪一个响应。


## 诊断检查清单

1. 运行最简单的请求，不带任何参数：`curl -x http://USER:PASS@res.proxshift.com:9000 https://api.ipify.org`。如果成功，则问题出在某个参数或你的客户端中。
2. 检查代理协议：代理 URL 以 `http://` 开头（在 9001 端口则为 `socks5h://`），即使目标使用 HTTPS，也绝不能写成 `https://`。
3. 每次加回一个参数。`400` 会指出错误参数；定位组合过窄时出现 `502`，表示该位置目前没有设备在线。
4. 白名单用户：在同一台机器上**不使用**代理运行 `curl https://api.ipify.org`，将输出结果与**设置 → 白名单**中的地址比较。云实例经常通过 NAT 网关出站，因而使用不同的地址。
5. 检查实际所用网络的余额：住宅代理和移动代理的流量余额彼此独立。
6. 查找可能会覆盖代码传入值的环境变量（`HTTP_PROXY`、`HTTPS_PROXY`、`ALL_PROXY`、`NO_PROXY`）。
7. 如果 TLS 证书验证失败，说明您和网关之间的某个环节正在拦截 TLS（企业代理、防病毒软件）。网关绝不会接触证书。


## 症状及其常见原因

| 您看到的现象 | 通常表示 | 解决方法 |
| --- | --- | --- |
| `curl: (56) Received HTTP code 407 from proxy after CONNECT` | 凭据被拒绝 | 重新复制凭据；如果密码由您自行设置，请对特殊字符进行百分号编码 |
| 每次请求都使用同一个 IP | 客户端重复使用同一条 keep-alive 连接，或用户名中仍有 `-sid-` | 在每次请求之间关闭连接，或移除会话 ID |
| 虽然设置了 `-sid-`，但每次请求的 IP 都不同 | 会话生存期短于请求间隔，或每次请求的 ID 都发生变化（例如模板中的随机值） | 固定 ID，并提高 `-ttl-` |
| 下载途中出现 `Connection reset by peer` | 家庭设备已离线 | 重试；使用轮换时系统已改用另一个出口；使用粘性会话时，下一次请求将获得新 IP |
| 在 curl 中正常，在浏览器中失败 | 浏览器没有代理密码，或相应标志忽略凭据 | 使用 Playwright 或 Puppeteer 身份验证，或使用[白名单](https://proxshift.com/zh/docs/authentication#ip-whitelist) |
| 目标网站返回 403 或 CAPTCHA | 目标网站对访问行为进行评分，问题不在代理本身 | 改用住宅或移动代理；多步骤流程使用粘性会话；使请求头与出口国家/地区相符；按域名控制请求频率 |
| 所有操作都很慢 | 出口距离过远，或家庭设备的网络线路较差 | 选择离目标网站最近的国家/地区；缩短会话，使下一会话有机会使用更好的线路；或者使用数据中心或 ISP 代理以获得更快速度 |
| `SSL certificate problem` | 您这一端存在 TLS 拦截 | 移除拦截，或信任其根证书；网关与此无关 |


## 仍未解决？

请将完整请求（移除凭据）、UTC 时间戳、收到的状态和响应正文，以及请求成功通过时的出口 IP 发给我们。[联系页面](https://proxshift.com/zh/contact)说明了联系团队的方法；账户持有人可从控制面板提交工单。


来源：https://proxshift.com/zh/docs/errors
