Trojan 协议是什么:伪装原理、优缺点与支持客户端
Trojan 的思路可以用一句话说完:既然 HTTPS 流量不会被封,那就让代理流量在各个层面都和 HTTPS 一模一样。 它不发明新的加密,不加自定义协议头,直接用标准 TLS,服务器本身就是一个可以正常访问的网站。这让它成为 2019 年以来最稳定的伪装方案之一,至今仍是机场主流协议。
工作原理
- 客户端与节点建立标准 TLS 连接(真实域名、真实证书,通常是 Let's Encrypt 签发)。
- TLS 握手完成后,客户端在加密通道里发送一个 56 字节的密码哈希,后面跟目标地址和数据。
- 节点校验密码:正确就当代理转发;错误就把这个连接交给后面的真实网站(比如一个 Nginx 静态页)。
第三步是关键。主动探测者不知道密码,连过来看到的就是一个普通网站,返回 200 或 404,和任何 HTTPS 站点没区别。流量统计层面,Trojan 流量就是 TLS 流量。
Trojan-GFW 与 Trojan-Go
- Trojan-GFW:原版,C++ 实现,只做 TLS 直连。
- Trojan-Go:Go 语言实现,兼容原版,额外支持 WebSocket 传输(可套 CDN)、多路复用(mux)和 Shadowsocks 二次加密。机场提到「Trojan」通常指两者之一,客户端角度没有区别。
优点与缺点
优点
- 伪装自然,不需要「扮演」谁,自己就是真实网站。
- 实现简单,节点性能开销小。
- 客户端支持极广:Clash 全系、Shadowrocket、v2rayN、sing-box 都原生支持,比 Reality 兼容性好。
缺点
- 节点必须有域名和有效证书,运营成本比 SS 略高。
- 域名是固定的,被重点关注后需要换域名,不像 Reality 可以借别人的证书。
- 没有解决 TLS-in-TLS 特征(代理里访问 HTTPS 网站时的嵌套握手),这是新一代协议(AnyTLS、XTLS-Vision)要解决的问题。
Trojan 与 VLESS 怎么选
| 对比 | Trojan | VLESS + TLS | VLESS + Reality |
|---|---|---|---|
| 需要域名证书 | 是 | 是 | 否 |
| 抗主动探测 | 强 | 强 | 很强 |
| TLS-in-TLS 问题 | 有 | 有(Vision 可缓解) | 有(Vision 可缓解) |
| 旧客户端支持 | 好 | 好 | 差 |
| 速度 | 相近 | 相近 | 相近 |
对用户的实际建议:机场同时提供 Trojan 和 VLESS 的,日常用哪个都行;封锁高峰期优先切到 Reality 节点;设备旧、客户端不能升级的,Trojan 兼容性最稳。详细对比见 机场协议区别 与 VLESS 协议是什么。
本站机场资料里的 Trojan
本站 17 家机场的品牌资料没有一家单独标注 Trojan(标注 VLESS 的 12 家见 VLESS 文章)。这不代表它们没有 Trojan 节点,很多机场的 Clash 订阅里会混合多种协议。确认方法:导入订阅后在客户端节点列表里看类型列,或者直接问客服。
怎么看 Trojan 节点的质量
协议本身不决定速度,线路才决定。导入后用这三步判断:
- 延迟:香港节点 RTT 在 15–35ms 属于中转或专线水平,见 线路类型判断。
- 晚高峰:20:00–23:00 速度衰减小于 20% 为优。
- 证书:客户端若提示证书无效、需要「跳过证书验证」,说明节点用了自签证书,伪装效果大打折扣,谨慎。
一次 Trojan 连接是怎么建立的
把一次访问 Google 的过程拆开看,就能理解它为什么「像 HTTPS」:
- 客户端向节点的 443 端口发起 TCP 连接,发送 TLS ClientHello,里面的 SNI 是节点域名。这一步和浏览器访问任何 HTTPS 网站完全一样。
- 节点返回证书,客户端校验证书链(正规机场用 Let's Encrypt 或商业证书,校验通过)。
- 加密通道建立。客户端发送第一段数据:56 字节的密码 SHA224 十六进制哈希 + CRLF + 一个 SOCKS5 风格的请求头(命令、目标地址 google.com、端口 443)+ CRLF + 真正的请求数据。
- 节点解密后比对密码。匹配:解析目标地址,连接 google.com,开始双向转发;不匹配:把整个连接连同已收到的数据交给后端的真实网站(Nginx),后者把它当作一个普通 HTTPS 请求处理,返回网页或 404。
- 之后所有数据都在这条 TLS 连接里透传,直到任一方关闭。
关键在第 4 步:探测者没有密码,无论怎么构造请求,看到的都是一个真实网站的真实响应,没有任何「这里有代理」的痕迹。
封锁高峰期的实际表现
Trojan 在封锁高峰期的表现取决于节点 IP 和域名的「干净程度」,而不是协议本身:
- 域名被 SNI 阻断:封锁方直接对特定 SNI 做重置,表现为握手阶段就断、延迟测试超时。机场换域名并更新订阅即可恢复,你只需要重新拉取订阅。
- IP 被封:同样换 IP。专线入口在国内的机场,封的是国内入口 IP,恢复更快。
- TLS-in-TLS 识别:这是 Trojan 的理论弱点,表现为「能连上、延迟正常、但传一会儿大流量就被限速或断开」。遇到这种情况切到 VLESS + XTLS-Vision 或 AnyTLS 节点。
切换顺序建议:先换同地区其他 Trojan 节点 → 换地区 → 换到 VLESS Reality 或 Hysteria2 节点 → 等待机场公告。细则见 机场晚高峰很慢怎么办。
客户端支持矩阵
| 客户端 | Trojan | Trojan + WS | Trojan + mux | 备注 |
|---|---|---|---|---|
| Clash Verge Rev(mihomo) | 支持 | 支持 | 支持 | 教程见 Clash Verge |
| Clash Meta for Android | 支持 | 支持 | 支持 | 教程见 Clash Meta |
| Shadowrocket | 支持 | 支持 | 支持 | iOS 默认推荐 |
| sing-box | 支持 | 支持 | 支持 | 全平台 |
| v2rayN | 支持 | 支持 | 支持 | Xray 核心 |
| Clash Mi | 支持 | 支持 | 支持 | iOS 免费方案 |
Trojan 是兼容性最没有悬念的协议之一,几乎不会出现「客户端不认识」的情况。
常见问题
Trojan 安全吗?
传输层是标准 TLS,加密强度与访问任何 HTTPS 网站相同。密码是预共享的,不要外传订阅链接,见 订阅链接怎么用。
Trojan 会被封吗?
任何协议都可能被封,Trojan 的特点是「不会因为协议特征被封」,被封通常是因为节点 IP 或域名被标记。机场换 IP 和域名后更新订阅即可。
Trojan 支持 UDP 吗?
支持,通过 UDP ASSOCIATE 在 TLS 通道内转发 UDP。游戏和语音的表现见 UDP 与 NAT 类型。
Trojan 节点导入 Clash 失败?
多数是订阅格式问题。Clash 只认 YAML 格式的 Clash 订阅,通用订阅里的 trojan:// 链接需要转换,见 订阅转换教程。
Trojan 和 Trojan-Go 节点客户端能通用吗?
能。Trojan-Go 兼容原版协议;只有当节点开启了 WebSocket 或 mux 时,客户端需要对应支持,主流客户端都没问题。
Trojan 节点为什么要求我「允许不安全连接」?
说明节点用了自签证书或证书过期。正规机场不应该这样,它意味着伪装失效(探测者看到的是无效证书)且有中间人风险。遇到就问客服,长期如此考虑换机场。
Trojan 和 Shadowsocks 哪个流量消耗更少?
几乎一样。Trojan 多一层 TLS 头部,开销在 1% 以内,可以忽略。流量真正的差别来自倍率。
Trojan 是「稳」的代名词,但稳不稳最终看机场的线路。去 机场推荐排行榜 挑一家,用 Clash Verge 教程 导入后在晚高峰测一次。