Trojan 协议是什么?Trojan 原理、特点与优缺点
Trojan 是一种建立在 TLS 之上的代理协议。它的核心思路是:既然 HTTPS 是互联网上最常见的流量,那就让代理流量在外观上和普通 HTTPS 访问一致。Trojan 结构简单、性能好,是机场中常见的主力协议之一。
Trojan 的原理简述
Trojan 的工作方式可以概括为三步:
- 服务端运行在 443 等常见端口上,拥有真实的域名和有效的 TLS 证书;
- 客户端与服务端建立标准的 TLS 连接,然后在加密通道里发送一个密码的哈希值和要访问的目标地址;
- 服务端验证密码正确后,替客户端转发数据;如果验证失败,就把连接交给一个正常的网站(通常是 Nginx 等 Web 服务)处理。
第三步就是 Trojan 的回落(fallback)机制:对不知道密码的访问者来说,这台服务器看起来就是一个普通网站。
Trojan 协议本身不再额外加密数据,全部依赖外层 TLS,这一点和 VLESS 类似,所以开销较低。
Trojan 的特点
- 依赖 TLS:必须有域名和证书,证书过期会导致节点不可用。
- 认证简单:只用一个密码,参数比 VMess 少。
- 兼容性好:协议实现简单,主流客户端都支持。
- 可扩展:衍生实现 Trojan-Go 增加了 WebSocket 等传输方式,可以搭配 CDN 使用;但原版 Trojan 一般只走 TCP + TLS。
Trojan 的优缺点
优点:
- 流量外观接近标准 HTTPS
- 不做重复加密,性能开销低
- 参数少(地址、端口、密码、SNI),配置不容易出错
- 实现成熟,客户端普遍支持
缺点:
- 需要维护域名和证书,服务端部署门槛比 SS 高
- TLS 指纹、“TLS 里套 TLS”等特征问题依然存在,这也是后来 VLESS 发展出 Vision、Reality 的背景之一
- 原版协议对 UDP 的支持依赖于具体实现,部分场景(如部分游戏)体验不一定理想
用户在客户端里偶尔会看到“跳过证书验证(skip-cert-verify / allowInsecure)“选项。从安全角度讲,一般不建议开启,正常配置的 Trojan 节点使用有效证书,不需要这个选项。
与其他协议的对比
| 协议 | 外层安全 | 是否需要域名证书 | 认证方式 | 性能开销 |
|---|---|---|---|---|
| Trojan | TLS | 是 | 密码 | 低 |
| VLESS + Reality | Reality | 否 | UUID | 低 |
| VMess + TLS | TLS | 是 | UUID + 时间 | 中 |
| Shadowsocks | 无 | 否 | 密码 | 低 |
| Hysteria2 | QUIC(TLS 1.3) | 通常需要 | 密码 | 依网络而定 |
支持 Trojan 的常见客户端
- Clash Meta / Mihomo:支持(原版 Clash 也支持 Trojan)
- sing-box:支持
- v2rayN(Windows):支持
- Shadowrocket(iOS):支持
Trojan 和 VMess、SS 一样,属于“几乎所有客户端都能用”的协议,适合在多设备之间共用一份订阅。
选购建议
- Trojan 节点在大多数网络环境下都稳定好用,可以放心作为主力。
- 与其纠结协议,不如关注线路类型:同样是 Trojan,专线、中转和直连的体验差距可能很大。
- 如果某段时间某地区的 Trojan 节点频繁失效,可以试试机场提供的其他协议节点,对比一下。
- 不要为了“能连上”随意开启跳过证书验证。
常见问题
Trojan 节点突然全部不可用,可能是什么原因?
比较常见的原因是服务端证书过期或域名解析出现问题,这属于机场运维层面的事情,用户只能等待修复或联系客服。也可能是客户端版本过旧、本地网络对 443 端口有特殊限制。可以先换一个其他协议的节点测试,判断问题出在哪一侧。
Trojan 和 Trojan-Go 有什么区别?
Trojan-Go 是在原版 Trojan 基础上扩展的实现,增加了 WebSocket 传输、多路复用等功能,能搭配 CDN 使用。但它在客户端中的支持范围不如原版 Trojan 广泛,部分客户端只支持原版 TCP + TLS 形式。机场订阅里大多数 Trojan 节点使用的是原版形式,兼容性最好。
Trojan 适合打游戏吗?
日常网页、视频、下载都没有问题。游戏需要 UDP 转发和低延迟,Trojan 能否满足取决于服务端实现和线路延迟。对游戏有较高要求的,优先看线路是否为专线,再看节点是否支持 UDP。
Trojan 节点里的 SNI 是什么?
SNI 是 TLS 握手时客户端告诉服务端“我要访问哪个域名”的字段。Trojan 节点的 SNI 一般就是机场为该服务器配置的域名,用于匹配证书。如果节点地址填写的是 IP 或其他入口域名,就需要单独指定 SNI,否则证书校验会失败。这个参数通常已经包含在订阅中,用户不需要自行填写或修改。
Trojan 的密码泄露了怎么办?
Trojan 节点的密码通常就是你的账号凭证,一旦泄露,别人可能用你的订阅消耗流量。可以在机场用户中心重置订阅链接,机场一般会同步更换密码,之后在客户端重新导入即可。
延伸阅读:VLESS 是什么、IPLC 专线是什么、机场推荐。