Trojan 协议原理解析:为什么「伪装成 HTTPS」能扛住主动探测

💡 声明:本文部分链接可能包含推广代码,通过这些链接注册不会增加您的成本,但能支持我们产出更多独立评测。
发布于: 2026年 | 分类: 协议解析 | 作者: Clash冲突编辑部

主题目录

Trojan 的设计目标和 Shadowsocks 完全不同。它不试图把流量加密成「看不出规律的随机数据」,而是反过来——让流量在中间设备眼里就是一次再普通不过的 HTTPS 访问。这个思路上的转向,正是它能在主动探测面前站住脚的原因。

一、它到底做了什么:真 TLS 里套一层

Trojan 客户端与服务端之间建立的是一条货真价实的 TLS 连接,使用的是服务器上真实的域名证书。握手过程与浏览器访问任何 HTTPS 网站没有区别,中间设备看到的 ClientHello、证书链、加密套件协商全都是标准流程。

认证信息藏在 TLS 建立之后:客户端把密码的 SHA-224 哈希值作为第一段载荷发过去。服务端校验通过,就按代理协议继续通信;校验不通过,服务端不返回任何错误,而是把这条连接原封不动地转交给本机的真实 Web 服务。

二、主动探测为什么打不动它

审查系统识别代理的一种常见手段是主动探测:记下可疑 IP 和端口,事后自己发起连接,看对方的响应是否符合某种代理协议的特征。Shadowsocks 早期版本正是栽在这里——服务端遇到无法解密的数据时的行为模式,本身就成了指纹。

Trojan 的回退机制把这条路堵死了。探测者连上来、发一段无意义数据、密码校验失败,得到的是一个正常网站的响应。从探测者的视角,这个 IP 上跑的就是一个普通网站,没有任何可供判定的差异。这也意味着部署 Trojan 必须配一个真实可访问的网站作为回退目标,否则回退时暴露的空白页反而成了新的特征。

三、代价与适用边界

伪装成 HTTPS 的代价是必须走 TCP,且要承担 TLS 的开销。在丢包率高的链路上,TCP 的队头阻塞会让体验明显劣于基于 UDP 的方案(如 Hysteria 2)——这是传输层的固有差异,不是实现优劣的问题。

另一个常被忽略的点是「TLS in TLS」特征。当你通过 Trojan 访问一个 HTTPS 网站时,外层 TLS 里包着内层 TLS,两层握手的数据包大小与时序会呈现出与普通浏览不同的分布。近年已有研究和实现针对这一特征做流量分析,这也是 VLESS-Reality 等后续方案试图进一步解决的问题。

结论上,Trojan 适合链路质量尚可、以对抗主动探测为主要诉求的场景;如果所在网络本身丢包严重,UDP 系协议通常是更实际的选择。

一键获取官方最新加速方案 2026年机场推荐