结论先说: HTTP 代理懂网页协议:它读取普通的 HTTP 请求,为 HTTPS 网站建立隧道。SOCKS5 工作在更底层,原样转发任何 TCP 连接,还可以承载 UDP。浏览器、指纹浏览器、采集脚本和接口调用都支持 HTTP(S),用它就行;桌面软件没有 HTTP 代理设置,或者通话、游戏、DNS 等 UDP 流量也要走代理时,用 SOCKS5。NanoIP 静态 ISP 代理的每个 IP 都同时支持这两种协议,用同一组账号密码。

HTTP 代理怎么工作
HTTP 代理懂 HTTP,也就是网页使用的协议。具体怎么做取决于网站:
- 普通
http://网站: 应用把包含完整地址的请求发给代理,代理读取后转发给网站。正因为能读取请求,HTTP 代理可以缓存、过滤或添加请求头,公司和学校的上网代理就是这样工作的。 https://网站: 应用先发一个CONNECT请求,告诉代理要连哪个网站和端口。代理连上后回复200 Connection established,之后只转发加密数据,读不到内容。
如今几乎所有网站都是 HTTPS,所以 HTTP 代理实际上主要负责建隧道。账号密码放在第一个请求的 Proxy-Authorization 请求头里。
HTTP 代理和 HTTPS 代理
“HTTPS 代理”有两种意思,服务商两种说法都会用:
- 能为 HTTPS 网站建隧道的 HTTP 代理,现在所有 HTTP 代理都能做到。
- 通过加密连接访问的代理:你和代理之间的连接本身先用 TLS 加密,包括账号密码,然后才建隧道。
NanoIP 动态住宅和移动代理的网关属于第二种:你连接的是 https://gateway.nanoip.net:1111,设备到网关之间的流量全程加密。
SOCKS5 代理怎么工作
SOCKS5 不关心流量是什么。应用和代理先进行一段简短的握手:应用说明支持的登录方式,发送用户名和密码,再告诉代理要连接的主机和端口。代理建立连接后,双向原样转发数据。

SOCKS5 更通用,体现在两点:
- 任何 TCP 连接。 邮件客户端、桌面软件、游戏启动器和自研程序,只要能设置 SOCKS5 代理就能用。
- UDP。
UDP ASSOCIATE命令可以为 UDP 数据包建立中转,HTTP 代理完全做不到。不是所有服务商都开通了这项功能。
DNS 在哪里解析
用 SOCKS5 时,应用可以自己先查出网站的 IP 再发给代理,也可以把域名发给代理,让代理去查。在 curl 和 Python 里,socks5:// 在本地解析,socks5h:// 由代理解析。我们用本地测试代理验证过:用 socks5:// 时代理收到的是 IP 地址,用 socks5h:// 时收到的是域名。希望 DNS 查询也发生在代理所在的国家时,用 socks5h://:本地解析可能拿到为你所在地优化的服务器地址,还会让本地 DNS 服务器看到你访问了哪些网站。HTTP 代理收到的始终是域名,由代理解析。
SOCKS5 和 HTTP 代理对比
| HTTP(S) 代理 | SOCKS5 代理 | |
|---|---|---|
| 工作层级 | 应用层:懂 HTTP | 会话层:只转发连接 |
| 能承载的流量 | 网页流量:HTTP 请求和 HTTPS 隧道 | 任何 TCP 连接,服务商开通后还有 UDP |
| UDP(通话、游戏、DNS、HTTP/3) | 不能 | 能,用 UDP ASSOCIATE |
| DNS 解析 | 由代理完成 | 由应用或代理(socks5h)完成 |
| 登录方式 | Proxy-Authorization 请求头 | 握手中单独的用户名密码步骤 |
| 加密 | 本身不加密;HTTPS 代理加密你到代理这一段 | 本身不加密 |
| 工具支持 | 几乎所有浏览器、工具和程序库 | 大多数工具支持,部分需要额外安装组件 |
SOCKS5 更快吗?
理论上略快,因为它不解析请求,每个连接要做的事更少。实际上,这点差别远小于你、代理和网站之间的距离以及出口 IP 质量带来的影响。按应用和流量的需要选协议,而不是按速度。
SOCKS5 更安全吗?
不是。两种协议本身都不加密流量,SOCKS5 的用户名密码也是明文发送的。真正保护数据的是网站本身的 HTTPS,无论用哪种代理,HTTPS 内容都是端到端加密的。如果希望你到代理之间的连接也加密,就用 HTTPS 代理,比如 NanoIP 的网关。
该用哪一种

- 选 HTTP(S): 浏览器、指纹浏览器、采集库、自动化框架和接口调用都支持,网页流量用它完全够用。
- 选 SOCKS5: 应用没有 HTTP 代理设置,或使用 HTTP 以外的协议,或者你希望由代理解析 DNS。
- 选 SOCKS5 + UDP: 语音视频通话、网络游戏、WebRTC 等会发 UDP 的应用,让这部分流量也从代理 IP 发出。
NanoIP 各产品支持哪些协议
| 产品 | 连接方式 | 协议 |
|---|---|---|
| 静态 ISP 代理 | 每个 IP 有自己的主机和端口 | HTTP、HTTPS 和 SOCKS5,SOCKS5 支持 UDP |
| 动态住宅代理 | HTTPS 网关 gateway.nanoip.net:1111 | HTTPS |
| 移动代理 | HTTPS 网关 gateway.nanoip.net:1111 | HTTPS |
每个静态 ISP 代理都用同一组账号密码支持三种协议,所以同一个 IP 可以在指纹浏览器里走 HTTP,在桌面软件里走 SOCKS5。认证方式只有用户名密码,不需要设置 IP 白名单。各项连接信息在哪里看,见新手入门。
代理地址的写法
大多数工具在主机、端口、用户名、密码旁边有一个协议下拉框。程序库和命令行工具则把这些信息写成一个地址,开头的协议名决定用哪种协议:
http://USERNAME:PASSWORD@HOST:PORT
socks5h://USERNAME:PASSWORD@HOST:PORT
https://USERNAME:PASSWORD@gateway.nanoip.net:1111前两行分别是静态 ISP 代理用 HTTP 和用 SOCKS5(由代理解析 DNS),第三行是动态住宅和移动代理的网关。Python 的 requests 要先安装 requests[socks] 才能使用 socks5h:// 地址。密码里有 @、: 等字符时,要在地址里转义(@ 写成 %40,: 写成 %3A),否则工具会在错误的位置拆分地址。我们测试时,没有转义的密码 p@ss:word 让 curl 直接报地址格式错误。
常见问题
一个代理 IP 能同时支持 HTTP 和 SOCKS5 吗?
可以,取决于服务商。NanoIP 的每个静态 ISP 代理都用同一组账号密码支持 HTTP、HTTPS 和 SOCKS5;有些服务商把两种协议分开卖,或者要求下单时为每个 IP 选一种。
指纹浏览器需要用 SOCKS5 吗?
不需要。指纹浏览器支持 HTTP、HTTPS 和 SOCKS5 代理。一般用 HTTP(S) 即可;如果希望这个环境里的通话、WebRTC 等 UDP 流量也走代理,再改用支持 UDP 的 SOCKS5。
SOCKS4 还有人用吗?
很少。SOCKS4 不支持用户名密码登录,也不支持 UDP,所以代理服务商提供的都是 SOCKS5。
更多协议和 IP 相关的基础概念,见代理IP基础知识。