代理协议全景:从 Shadowsocks 到 VLESS
科学上网的本质是一个不断对抗的过程:一边是审查系统的流量识别技术,另一边是代理协议的伪装与加密手段。理解协议的演进历史,能帮你在选择方案时做出清晰的判断——为什么某些协议已经过时,为什么当前主流方案长这个样子。
本章梳理主流代理协议的技术特征和发展脉络,从最早的 Shadowsocks 到当前的 VLESS/Trojan。
审查系统如何识别代理流量
在讲协议之前,先理解对手。GFW(Great Firewall)主要通过以下方式识别代理流量:
| 识别手段 | 原理 | 针对的弱点 |
|---|---|---|
| 流量特征分析 | 分析数据包长度、时序、熵值等统计特征 | 非标准加密流量与正常 HTTPS 差异明显 |
| 协议指纹检测 | 识别特定协议的握手特征 | SS/SSR 等有固定的握手模式 |
| 主动探测 | 向可疑服务器发起连接,分析响应行为 | 服务器对非法请求的响应暴露身份 |
| SNI 嗅探 | 读取 TLS 握手中的明文 SNI 字段 | 知道你要连的域名 |
好的代理协议,本质上就是让流量在以上每个维度都"看起来正常"。
Shadowsocks:开创者的遗产
Shadowsocks(SS)诞生于 2012 年,由 @clowwindy 开发,是第一个广泛使用的轻量级代理协议。
工作原理
SS 使用对称加密(如 AES-256-GCM)对流量进行加密,服务器解密后转发到目标地址。没有握手协商过程,连接建立后直接传输加密数据。
为什么它被淘汰
SS 的致命问题是流量特征太明显:
- 无伪装:加密后的数据流熵值接近 1(完全随机),而正常 HTTPS 流量有明确的 TLS 握手结构
- 固定端口:通常运行在非标准端口(如 8388),与正常 Web 服务不同
- 可重放攻击:早期版本缺乏防重放机制,GFW 可以录制数据包后重放来探测服务器
SS 最大的贡献在于理念——它证明了轻量级加密代理的可行性,后续所有协议都在此基础上演进。但作为 2024 年之后的方案,SS 已不再安全。
ShadowsocksR:混淆的尝试
SSR 是 SS 的分支,核心改进是增加了协议混淆插件(obfs),试图让流量看起来像正常的 HTTP 或 TLS 流量。
常见混淆方式:
http_simple:伪装成 HTTP 请求tls1.2_ticket_auth:伪装成 TLS 握手
失败原因
混淆≠真正的 TLS。GFW 可以通过以下方式识破:
- 深度包检测(DPI):伪装的 TLS 握手在细节上与真实 TLS 不同(证书链、扩展字段等)
- 主动探测:向服务器发送正常 HTTP/HTTPS 请求,如果响应异常则判定为代理
- 流量时序分析:伪装的 HTTP 流量在时序特征上与真实浏览行为不同
SSR 已于多年前停止维护,其混淆机制在现代 DPI 面前几乎无效。不推荐使用。
VMess:V2Ray 时代
VMess 是 V2Ray 项目的核心协议,相比 SS 有显著改进:
- 动态端口:支持多端口轮换
- UUID 认证:基于 UUID 和时间戳的认证机制,防重放
- 传输层可选:支持 TCP、WebSocket、HTTP/2、gRPC 等多种传输方式
架构分层
VMess + WebSocket + TLS 的组合是第一个真正成熟的"伪装成 HTTPS"方案——外部观察者看到的就是一个普通的 wss:// WebSocket 连接。
VMess 的局限
- 加密冗余:VMess 自身有一层加密,外面套 TLS 又是一层,双重加密浪费性能
- 时间依赖:客户端与服务器时间差超过 90 秒就会认证失败
- 协议复杂:实现复杂度高,容易出现安全漏洞(历史上已有多次)
VLESS:极简主义的胜利
VLESS 是 VMess 的继任者,由 Xray 项目推出。核心设计理念:协议本身不做加密,把安全完全交给传输层(TLS/Reality)。
为什么去掉加密反而更好
| 对比项 | VMess | VLESS |
|---|---|---|
| 协议层加密 | AES-128-GCM | 无 |
| TLS 加密 | ✅ | ✅ |
| 实际安全性 | TLS + VMess 双重加密(冗余) | 纯 TLS(足够安全) |
| 性能开销 | 高(双重加解密) | 低(单层 TLS) |
| 协议指纹 | 有(VMess 握手特征) | 几乎无(纯 TLS 流量) |
VLESS 的流量在网络上看起来就是标准的 TLS 加密流——因为它确实只有 TLS,没有额外的协议特征可被识别。
Trojan:另一种极简思路
Trojan 协议与 VLESS 同一时期出现,思路类似——利用 TLS 本身做加密,协议层只做认证和转发。
Trojan 的特点:
- 内置回落机制:非法连接直接转发给正常网站(如 Nginx),外部探测者看到的就是个正常网站
- 密码认证:使用 SHA256(password) 作为认证
- 无独立加密:与 VLESS 一样依赖 TLS
在兼容性方面,Trojan 协议目前比 VLESS 更稳定,特别是在配合 WebSocket 传输时。一些客户端(如 Clash Meta)对 Trojan + WS 的支持更成熟。
协议演进总结
| 协议 | 年代 | 伪装能力 | 抗主动探测 | 当前状态 |
|---|---|---|---|---|
| Shadowsocks | 2012 | 无 | 弱 | 已过时 |
| ShadowsocksR | 2015 | 弱(伪装层) | 弱 | 已废弃 |
| VMess | 2017 | 中(依赖传输层) | 中 | 可用但非最佳 |
| VLESS | 2020 | 强(纯 TLS + 回落/Reality) | 强 | 当前主流 |
| Trojan | 2019 | 强(纯 TLS + 回落) | 强 | 当前主流 |
发展趋势非常清晰:协议本身越来越简单,把安全和伪装交给标准的 TLS 实现。这是正确的方向——TLS 是互联网上最常见的加密协议,数十亿设备在用,你的代理流量混在其中就是最好的伪装。
传输层的选择
协议层之外,传输层的选择同样重要:
| 传输方式 | 特点 | 适用场景 |
|---|---|---|
| TCP | 最简单,性能最好 | 直连 VPS,无需过 CDN |
| WebSocket | 可过 CDN,兼容性好 | 配合 Cloudflare 隐藏 IP |
| gRPC | 多路复用,适合高并发 | 需要多流的场景 |
| XHTTP | 基于标准 HTTP,最新方案 | 替代 WebSocket 的新趋势 |
传输层和安全层的组合决定了最终方案的形态。下一章将深入讲解当前最强的安全方案——VLESS + Reality 的工作原理。
下一章我们将深入讲解 VLESS + Reality 协议——它是如何做到不需要域名、不需要证书,却能提供最强抗探测能力的。