# SOCKS5 与 HTTP 代理：它们有何不同以及该用哪个

> SOCKS5 与 HTTP 代理：RFC 1928 与 HTTP CONNECT（RFC 9110）、使用 socks5h 的 DNS、认证、UDP。RackProxies 在专用 IPv4 上同时支持两者，无需 KYC，加密货币支付。

- URL: https://rackproxies.com/zh/guides/socks5-vs-http-proxies/
- 最后更新: 2026-10-19
- Publisher: RackProxies (https://rackproxies.com)

两者都通过相同的 IP 承载您的 HTTPS 流量。它们的区别在于隧道打开的方式、谁解析 DNS 以及哪些程序支持它们。

**快速回答 — SOCKS5 与 HTTP 代理：我应该使用哪个？**

在 SOCKS5 与 HTTP 代理的选择中，对于 Web 请求使用 HTTP，因为每个 HTTP 库都支持它，并且 CONNECT 可以干净地隧道 HTTPS；对于非 HTTP TCP 流量或仅支持 SOCKS 的工具，使用 SOCKS5（RFC 1928，1996）。**RackProxies** 在每个专用 IPv4 上支持 HTTP、HTTPS（CONNECT）和 SOCKS5，每个 IP 30 天起价 US$1.29。无需 KYC，加密货币支付。

## SOCKS5 与 HTTP 代理概览

|  | HTTP 代理 | SOCKS5 代理 |
| --- | --- | --- |
| 规范 | HTTP 语义，RFC 9110（CONNECT 方法，407 状态） | RFC 1928（1996 年 3 月）；RFC 1929 中的用户名/密码 |
| 层 | 应用层：理解 HTTP | 会话层：中继任意 TCP 流 |
| HTTPS 网站 | 通过 CONNECT 隧道；代理无法读取内容 | 通过 TCP 中继；代理无法读取内容 |
| 普通 http:// 网站 | 代理读取并转发每个请求 | 以原始字节中继 |
| 谁解析主机名 | 代理 | 你的机器（socks5://）或代理（socks5h://） |
| 认证方式 | Proxy-Authorization 头，通常为 Basic | 来自 RFC 1929 的方法 0x02，或在允许列表下无需认证 |
| UDP | 否 | 在 RFC 1928 中定义（UDP ASSOCIATE）；RackProxies 不保证支持 UDP |
| 工具支持情况 | 所有 HTTP 客户端、浏览器和爬虫库 | curl、浏览器、许多库；部分需要额外安装包 |
| 在 RackProxies 上 | 是 | 是 |

## HTTP 代理如何承载 HTTPS 流量？

HTTP 代理通过客户端使用 RFC 9110 中的 `CONNECT` 方法打开的隧道来承载 HTTPS 流量。客户端指定主机和端口，代理连接到该主机并返回 `200`，此后代理仅中继加密字节。

该交换过程如下，使用文档中的示例凭据：

*CONNECT 请求与响应*

```http
CONNECT api.ipify.org:443 HTTP/1.1
Host: api.ipify.org:443
Proxy-Authorization: Basic VVNFUk5BTUU6UEFTU1dPUkQ=

HTTP/1.1 200 Connection established
```

`Basic` 的值是 Base64 编码的 `USERNAME:PASSWORD`，这只是编码，并非加密。如果凭据错误，代理会返回 `407 Proxy Authentication Required` 而不是 `200`。在 `200` 之后，你的客户端在隧道内与网站建立 TLS 连接，因此代理只能看到主机名和数据量，而看不到页面内容。对于普通的 `http://` 地址则没有隧道：客户端将完整 URL 发送给代理，代理可以读取它。

## SOCKS5 代理如何建立连接？

SOCKS5 代理通过 RFC 1928 定义的三个简短二进制交换来建立连接：协商认证方法的问候、登录以及包含目标地址的连接请求。下表展示了使用用户名和密码登录（RFC 1929）以及请求连接到端口 443 上的 `api.ipify.org` 的字节内容。

RFC 1929 以明文发送用户名和密码，各最多 255 字节。与 HTTP 上的 Basic 认证一样，它本身不提供任何保护；之后与网站的 TLS 会话在中继内运行。IP 允许列表可完全避免发送密码。登录选项：用户名和密码，或 IP 白名单（最多 10 个 IP）。

## SOCKS5 握手，逐字节解析

| 步骤 | 发送方 | 字节（十六进制） | 含义 |
| --- | --- | --- | --- |
| 问候 | 客户端 | 05 01 02 | 版本 5，提供一个方法：用户名/密码 |
| 方法选择 | 代理 | 05 02 | 接受用户名/密码 |
| 登录 | 客户端 | 01，长度，用户名，长度，密码 | RFC 1929 子协商，版本 1 |
| 登录结果 | 代理 | 01 00 | 成功（任何其他状态字节表示失败） |
| 连接请求 | 客户端 | 05 01 00 03 0D api.ipify.org 01 BB | CONNECT，13 字节的域名，端口 443 |
| 应答 | 代理 | 05 00 00 01 + 绑定地址和端口 | 成功；中继已打开 |

## socks5 和 socks5h 有什么区别？

使用 `socks5://` 时，由你自己的机器解析主机名，并向代理发送 IP 地址；使用 `socks5h://` 时，代理接收主机名并负责解析。其中的 "h" 代表 hostname（主机名）。这些名称来自 curl，Python requests 配合 PySocks 也使用它们。

这一区别在两方面有影响。第一，本地解析会从你自己的网络发出 DNS 查询，从而让解析服务器知道你访问了哪些网站。第二，你在本地得到的 DNS 结果可能指向离你近的服务器，而不是离代理近的服务器，因此 CDN 可能给你返回错误的区域。除非有理由不用，否则请使用 `socks5h://`。HTTP 代理始终在代理端解析，因为 CONNECT 携带的是主机名。

*用两种方案做同样的测试*

```bash
curl -x socks5h://USERNAME:PASSWORD@203.0.113.24:PORT https://api.ipify.org
curl -x http://USERNAME:PASSWORD@203.0.113.24:PORT https://api.ipify.org
```

使用你账户中列出的地址、端口和凭据；`203.0.113.24` 是文档示例地址。

## SOCKS5 支持 UDP 吗？

SOCKS5 标准通过名为 UDP ASSOCIATE 的命令定义了 UDP 中继，但支持与否取决于服务器和客户端。许多代理服务和许多客户端库只实现了 TCP。

RackProxies 出售 IP 用于 HTTP、HTTPS（CONNECT）和 SOCKS5，我们不承诺支持 UDP。如果你的用途需要 UDP，请先在 1 IP 套餐上测试，再决定是否购买更多，并先咨询客服。对于 Web 请求、API 和基于 HTTPS 的监控，TCP 就足够了。

## 我的工具该选哪一种？

如果你的工具支持 HTTP，就选 HTTP；如果不支持 HTTP 或只支持 SOCKS，就选 SOCKS5。实际操作中：

- **Python requests、Node.js 配合 undici 的 fetch、Playwright、Scrapy：** HTTP 开箱即用。SOCKS5 在 requests 中需要额外安装包（`requests[socks]`）。
- **curl 和 wget：** curl 两者都支持；wget 使用 HTTP 代理。
- **浏览器：** 两者都支持，但 Chromium 内置的 SOCKS5 客户端历来不支持用户名和密码认证，所以稳妥的选择是 HTTP 形式或白名单。
- **非 HTTP 的 TCP 客户端**（数据库工具、自定义协议）：选 SOCKS5。

[代码示例](https://rackproxies.com/zh/docs/code-examples/) 展示了每种情况，[快速入门](https://rackproxies.com/zh/docs/quickstart/) 用 curl 测试两种协议。

## SOCKS5 和 HTTP 代理问题

### SOCKS5 比 HTTP 代理更快吗？

不存在值得你在规划时考虑的速度差异。对于 HTTPS，两者最终都是中继加密流，建立连接都只需一到两次简短的交互。到目标服务器的距离和路径上的负载影响要大得多。我们不公布速度数据；请用 curl 的计时变量测量你自己的目标。

### SOCKS5 比 HTTP 更私密吗？

对于 HTTPS 流量，两者都让页面内容端到端保持加密。两者都不加密代理登录信息：Basic 认证和 RFC 1929 都以可读形式发送。使用 `socks5h` 的 SOCKS5 让 DNS 查询不经过你的本地网络；HTTP 代理通过在自身一侧解析也做到了同样的事。使用 IP 白名单可以避免发送密码。

### 一个 RackProxies IP 能同时用于两种协议吗？

可以。每个 IP 都支持 HTTP、HTTPS（CONNECT）和 SOCKS5。使用你账户中每个 IP 列出的连接信息。每个 IP 以一行 `IP:PORT:USERNAME:PASSWORD` 的形式交付到您的账户，可导出为 TXT 或 CSV。[连接格式页面](https://rackproxies.com/zh/docs/connection-format/) 展示了如何把一行内容转换成 `http://` 或 `socks5h://` URL。

### 协议列表中的 HTTPS（CONNECT）是什么意思？

意思是你可以通过 HTTP 代理以 CONNECT 隧道访问 `https://` 网站，因此 TLS 会话从你的客户端一直运行到网站。这并不意味着你和代理之间的连接是加密的。登录信息以通常的 Basic 形式发送给代理，或者在使用白名单时完全不发送。

### 为什么我会遇到 407 错误？

`407 Proxy Authentication Required` 应答表示 HTTP 代理没有接受你的凭据，或者你在无凭据连接时你的 IP 不在白名单中。请检查用户名、密码和端口，并对密码中的特殊字符进行 URL 编码。[快速入门](https://rackproxies.com/zh/docs/quickstart/) 列出了其他常见错误。

### 购买 SOCKS5 代理需要身份证件吗？

不需要。无需 KYC：注册、充值或购买均无需身份证件、自拍或签署文件。每个 RackProxies 套餐都在同一个独享 IPv4 上包含 HTTP 和 SOCKS5，可用 BTC, USDT, USDC, ETH, SOL, LTC 支付。一个 IP 30 天费用为 US$1.29，100 个 IP 费用为 US$59.25；参见[价格](https://rackproxies.com/zh/pricing/)。

**每个 IP 都支持 HTTP 和 SOCKS5** 1 IP 仅需 US$1.29。无需 KYC，加密货币支付。 [查看价格](https://rackproxies.com/zh/pricing/) · [快速开始](https://rackproxies.com/zh/docs/quickstart/)

## 来源

1. [RFC 1928：SOCKS 协议第 5 版](https://www.rfc-editor.org/rfc/rfc1928) — IETF (2026-10-19)
2. [RFC 1929：SOCKS V5 的用户名/密码认证](https://www.rfc-editor.org/rfc/rfc1929) — IETF (2026-10-19)
3. [RFC 9110：HTTP 语义（CONNECT、407、Proxy-Authorization）](https://www.rfc-editor.org/rfc/rfc9110) — IETF (2026-10-19)
4. [CONNECT 请求方法](https://developer.mozilla.org/en-US/docs/Web/HTTP/Reference/Methods/CONNECT) — MDN Web Docs (2026-10-19)
5. [curl 手册页（--proxy、socks5h）](https://curl.se/docs/manpage.html) — curl project (2026-10-19)
6. [Requests：SOCKS 代理](https://requests.readthedocs.io/en/latest/user/advanced/) — Requests (2026-10-19)

---

RackProxies: RackProxies 是一家独享数据中心代理服务商：IPv4 地址按 IP 租用 30 天，支持加密货币支付，无需上传身份证件。页面覆盖 22 个国家和 34 个数据中心城市，并提供公开网络数据。
