Trojan 协议原理:为什么它看起来像正常的 HTTPS 访问
Trojan 的核心思路是「不隐藏加密,而是隐藏存在」。本文解释它如何借助 TLS 让流量看起来与访问普通网站无异,以及这种设计的代价与适用环境。
本文目录
换一个思路:不隐藏加密,隐藏存在
早期协议的思路是把内容加密得足够好,让中间设备看不懂。但这留下一个破绽:「看不懂的流量」本身就是一种特征。
Trojan 换了个思路:既然互联网上最常见的加密流量是 HTTPS,那就让自己看起来就是一次普通的 HTTPS 访问。中间设备看到的是一台服务器上的正常网站访问,没有可疑之处。
它是怎么做到的
原理可以简化成三步:
- 客户端与服务器建立标准的 TLS 连接——与你打开任何一个 HTTPS 网站的握手过程一致;
- 在这条加密通道内部传输代理数据;
- 服务端如果收到的不是合法的代理请求(比如有人直接用浏览器访问),就把它当作普通网页请求处理,返回一个真实的网站页面。
第三步是关键:主动探测时看到的是一个正常网站,而不是一个拒绝服务的可疑端口。
代价在哪里
- 依赖服务端配置:需要真实域名与有效证书,配置不规范时伪装效果打折。这部分完全在服务商侧,用户看不到;
- 仍然基于 TCP:链路丢包时同样会触发 TCP 降速,抗弱网能力并不比 Shadowsocks 强。丢包严重的移动网络下,应该考虑基于 UDP 的协议,原因见延迟、抖动、丢包和带宽怎么看;
- 握手开销略高:完整 TLS 握手比轻量协议多几个来回,对首次连接的延迟有轻微影响,日常使用基本无感。
与其他协议的关系
| 协议 | 核心思路 | 传输层 |
|---|---|---|
| Shadowsocks | 加密内容,不伪装 | TCP |
| Trojan | 借 TLS 伪装成 HTTPS 访问 | TCP |
| VLESS + Reality | 在 TLS 握手层进一步伪装 | TCP |
| Hysteria 2 / TUIC | 改善弱网表现,不以伪装为目标 | UDP |
VLESS 与 Reality 的组合可以理解为这条路线的延伸,差异见 VLESS 和 VMess 有什么区别;协议全景见主流代理协议入门。
什么时候该选它
- 所在网络对代理识别较严格,其他协议的连接经常被打断;
- 公司、学校、酒店等受管控的网络环境下需要更从容的选择;
- 客户端支持没有问题(主流客户端都支持,对照见客户端兼容性总表)。
不该选它的情况:链路本身丢包严重。那是传输层的问题,换伪装协议没有帮助,应该换抗丢包的协议。
本文更新于 2026年8月4日。信息最后核查于 2026年8月4日。
常见问题
- Trojan 比 Shadowsocks 更安全吗?
- 两者在「内容是否被看到」这一点上都做得足够,差别不在加密强度,而在流量特征。Trojan 让流量看起来像普通 HTTPS,因此在识别较严格的环境下更从容,这属于隐蔽性差异而不是安全性差异。
- Trojan 需要域名和证书吗?
- 服务端需要,用户侧不需要关心。伪装效果依赖服务商是否为节点配置了规范的域名与有效证书——这部分你看不到,只能通过节点在你所处网络下的实际稳定性来判断。
- Trojan 和 Trojan-Go 有什么区别?
- Trojan-Go 是社区实现的一个分支,增加了多路复用与部分传输选项。对用户来说两者的使用方式一致,机场给什么就用什么,客户端会自动适配。
- 为什么有的机场只提供 Trojan 节点?
- 通常出于隐蔽性考虑,或者服务商的技术栈就以此为主。这不影响你使用,只要确认客户端支持即可——主流客户端都支持 Trojan。
- 用了 Trojan 还是连不上怎么办?
- 说明问题多半不在协议层。先按顺序排查订阅是否过期、系统时间是否准确、当前网络是否有限制,这三项覆盖了绝大多数连不上的情况,换协议解决不了。
参考资料
- 本站协议总览(四种主流协议的横向对照见 /knowledge/proxy-protocols-overview/)