HTTP 代理与 SOCKS5 代理的区别及如何选择

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 代理列表,两者每分钟重新检测一次。

其他语言版本: EnglishРусскийУкраїнськаEspañolPortuguês (Brasil)FrançaisDeutschTürkçeBahasa IndonesiaTiếng Việtالعربيةفارسی

延伸阅读