# 通过代理出现 SSL WRONG_VERSION_NUMBER 的解决方案

> [SSL: WRONG_VERSION_NUMBER] 通过代理通常意味着 https:// 代理 URL 指向了普通 HTTP 代理端口。下面的一行修复适用于 Python 和 Node。

- URL: https://crawlrelay.com/zh/docs/errors/ssl-wrong-version-number/
- 最后更新: 2026-10-13
- Publisher: CrawlRelay (https://crawlrelay.com)

客户端的 TLS 错误：每个工具中的精确错误信息、可能原因排序及有效解决方案。

**快速回答 — 代理中的SSL: WRONG_VERSION_NUMBER是什么意思？**

**[SSL: WRONG_VERSION_NUMBER]** 通过代理几乎总是意味着你的客户端对返回纯文本回复的目标发起了 TLS 握手。常见原因是在普通 HTTP 代理端口使用了 `https://` 代理 URL。CrawlRelay 中，代理地址前应写 `http://`，对 HTTP 和 HTTPS 目标均适用；网站自己的 HTTPS 仍通过隧道正常工作。

## SSL: WRONG_VERSION_NUMBER一览

| 属性 | 值 |
| --- | --- |
| 错误 | SSL: WRONG_VERSION_NUMBER |
| 类型 | 客户端的 TLS 错误 |
| 发送方 | 当对端不使用 TLS 时你的 TLS 库报错 |
| 定义于 | TLS 1.3: RFC 8446; HTTP proxy CONNECT: RFC 9110, section 9.3.6 |
| 要重试吗？ | 不是的，这是配置错误 |
| 先检查 | 查看你的代理 URL 前的协议头 |

## SSL: WRONG_VERSION_NUMBER是什么意思？

TLS 握手从一条握手记录开始。如果返回的是 HTTP 响应，TLS 库读取了无效版本号便停止。Python 报告 `WRONG_VERSION_NUMBER`；具体描述随 OpenSSL 版本和客户端而异。

代理 URL 协议头决定客户端如何与代理通信。`http://` 代表与代理用普通 HTTP 通信，之后通过 `CONNECT` 隧道与网站 TLS 通信。`https://` 代表与代理本身使用 TLS（仅在代理端口支持 TLS 时有效）。

## 在Python、curl、Node.js和浏览器中SSL: WRONG_VERSION_NUMBER是什么样？

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

- **Python requests / urllib3 2.x：** 在 `ProxyError` 中包装的 `SSLError(SSLError(1, '[SSL: WRONG_VERSION_NUMBER] wrong version number'))`
- **httpx：** `httpx.ConnectError: [SSL: WRONG_VERSION_NUMBER] wrong version number`
- **curl：** 当对普通代理写`-x https://` 时为 `curl: (35) ... wrong version number`
- **Node.js：** 错误消息中的 `EPROTO ... wrong version number`

## 导致SSL: WRONG_VERSION_NUMBER的原因是什么？

最可能的首要原因：

- **代理地址前使用 `https://`**，但端口仅支持普通 HTTP。这是最常见的情况。
- **复制粘贴了代理端口需要 TLS 的设置。**
- **端口为 80 但用的是 `https://`，或非代理的 TLS 端口用的是 `http://`。**
- **继承了环境变量**，如 `HTTPS_PROXY=https://...`。

## 如何一步步诊断SSL: WRONG_VERSION_NUMBER？

1. 打印代码使用的代理 URL，检查它的协议头。
2. 检查环境变量中是否有 `HTTPS_PROXY` 和 `ALL_PROXY`。
3. 用 `-x http://` 运行下面的 curl 测试，确认它能工作。
4. 如果 curl 正常而你的代码不行，说明代码或环境仍在使用 `https://`。

*用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
```

## 如何修复SSL: WRONG_VERSION_NUMBER？

- **所有代理相关键中使用 `http://` 代理 URL：** `{"http": "http://...", "https": "http://..."}`。
- **保持 TLS 验证开启。** 修复在协议头，不是 `verify=False`。
- **修改环境变量，而不是在单个脚本中覆盖。**

## 遇到SSL: WRONG_VERSION_NUMBER后要重试吗？

不要重试此错误：每次尝试都会同样失败。这是一个单字符的配置错误。

## SSL: WRONG_VERSION_NUMBER如何应用于CrawlRelay？

CrawlRelay 的 HTTP 端口是纯 HTTP 代理端口，通过 `CONNECT` 隧道运输 HTTPS 网站。TLS 在客户端与网站间端到端运行，网关不需要 `https://` 代理 URL。

网关：`gw.crawlrelay.com`，端口7777（通过CONNECT的HTTP、HTTPS）和端口7778（SOCKS5）。用户名格式：`USERNAME-country-{cc}-state-{state}-city-{city}-zip-{zip}-asn-{asn}-session-{id}-ttl-{minutes}`。相关内容：[SSL 证书验证失败](https://crawlrelay.com/zh/docs/errors/ssl-certificate-verify-failed/) · 无法连接到代理](https://crawlrelay.com/zh/docs/errors/cannot-connect-to-proxy/) · Python 指南](https://crawlrelay.com/zh/docs/python/)。

## SSL: WRONG_VERSION_NUMBER：开发者常问的问题

### 使用 http:// 代理 URL 时流量会被加密吗？

对于 HTTPS 网站不是的。`http://` 协议只涵盖与代理的简短 CONNECT 交换（包括凭据）。之后，客户端在隧道内直接与网站运行 TLS，代理仅转发加密数据。普通 `http://` 网站无论是否代理均不加密。

### 为什么升级 urllib3 后开始出现这个问题？

urllib3 2.x 支持 HTTPS 代理，因此它字面理解 `https://` 代理 URL 并启动与代理的 TLS。旧配置偶尔会因协议头错误误工作。对普通 HTTP 代理端口应写 `http://`，错误就会消失。

### 是否应该设置 verify=False 来消除错误？

不行。关闭证书验证无法修正错误的协议头，还会使每次请求都容易被中间人攻击。请正确设置代理 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 —— 无需身份证、自拍和任何证件。支持加密货币支付。
