HTTP 和 SOCKS5 是最常见的两种代理协议。它们都能隐藏你的 IP,在我们的列表中都免费提供,大多数软件也都支持。但它们工作在不同层级,一旦超出简单浏览的范围,选择就变得重要。
HTTP 代理如何工作
HTTP 代理使用网页的语言。客户端向它发送带完整 URL 的普通 HTTP 请求,代理读取后自行发起请求并返回响应。访问 HTTPS 网站时,客户端发送 CONNECT example.com:443 命令,代理建立一条隧道,加密流量原样通过。
由于 HTTP 代理理解请求,它也可以修改请求:添加 Via 或 X-Forwarded-For 等请求头、缓存页面或过滤内容。这就是 HTTP 代理有不同匿名等级的原因。
SOCKS5 代理如何工作
SOCKS5 工作在更低一层。客户端告诉代理要连接哪个主机和端口,代理建立 TCP 连接,之后只负责转发字节。它不知道也不关心这些字节是网页、邮件还是游戏数据。SOCKS5 还能转发 UDP,并支持用户名密码认证。
对比
| HTTP | SOCKS5 | |
|---|---|---|
| 流量 | 网页(HTTP/HTTPS) | 任意 TCP,可选 UDP |
| 能否修改请求 | 能 | 不能 |
| 是否添加暴露身份的请求头 | 有时 | 从不 |
| DNS 解析 | 在代理端 | 代理端或客户端 |
| 浏览器支持 | 全部 | Firefox、Chrome(需参数)、大多数工具 |
| 典型用途 | 浏览、爬虫 | 应用、即时通讯、机器人、游戏 |
速度
两者没有值得担心的本质速度差异。SOCKS5 握手稍短,而 HTTP 代理可以缓存内容。实际上,免费代理的速度取决于其位置和负载,所以请按延迟而不是按协议对代理列表排序。
安全与匿名
两种协议本身都不加密流量。访问 HTTPS 网站,无论使用哪种代理,内容都会保持加密。
SOCKS5 在匿名性上有实际优势:它从不添加请求头,因此可用的 SOCKS5 代理实际上就是高匿代理。使用 HTTP 代理时需要查看匿名度一栏,透明代理会把你的真实 IP 传给网站。
SOCKS5 需要注意 DNS。如果客户端自行解析域名,你的 DNS 服务商就能看到你访问的每个网站。在 curl 和 Python 中使用 socks5h://,或在 Firefox 中开启“使用 SOCKS v5 时代理 DNS 查询”。
如何选择
- 浏览器或简单爬虫:HTTP 最方便,从 HTTP 列表中选择高匿或匿名代理。
- Telegram、邮件客户端、桌面应用:SOCKS5。
- 建立原始 TCP 连接的脚本:SOCKS5。
- 游戏、网络电话等 UDP 应用:支持 UDP 的 SOCKS5(免费代理中较少见)。
- 软件只支持其中一种:用它支持的那种。
快速示例
curl -x http://IP:端口 https://example.com
curl --socks5-hostname IP:端口 https://example.com
最新地址请见 SOCKS5 代理列表和 HTTP 代理列表,两者每分钟重新检测一次。