Trojan 协议是什么:伪装原理、优缺点与支持客户端

协议与线路 · 发布 2026-11-05 · 更新 2026-11-05 · 约 3430 字 · 9 分钟

Trojan 的思路可以用一句话说完:既然 HTTPS 流量不会被封,那就让代理流量在各个层面都和 HTTPS 一模一样。 它不发明新的加密,不加自定义协议头,直接用标准 TLS,服务器本身就是一个可以正常访问的网站。这让它成为 2019 年以来最稳定的伪装方案之一,至今仍是机场主流协议。

工作原理

  1. 客户端与节点建立标准 TLS 连接(真实域名、真实证书,通常是 Let's Encrypt 签发)。
  2. TLS 握手完成后,客户端在加密通道里发送一个 56 字节的密码哈希,后面跟目标地址和数据。
  3. 节点校验密码:正确就当代理转发;错误就把这个连接交给后面的真实网站(比如一个 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 怎么选

对比TrojanVLESS + TLSVLESS + Reality
需要域名证书是是否
抗主动探测强强很强
TLS-in-TLS 问题有有(Vision 可缓解)有(Vision 可缓解)
旧客户端支持好好差
速度相近相近相近

对用户的实际建议:机场同时提供 Trojan 和 VLESS 的,日常用哪个都行;封锁高峰期优先切到 Reality 节点;设备旧、客户端不能升级的,Trojan 兼容性最稳。详细对比见 机场协议区别 与 VLESS 协议是什么。

本站机场资料里的 Trojan

本站 17 家机场的品牌资料没有一家单独标注 Trojan(标注 VLESS 的 12 家见 VLESS 文章)。这不代表它们没有 Trojan 节点,很多机场的 Clash 订阅里会混合多种协议。确认方法:导入订阅后在客户端节点列表里看类型列,或者直接问客服。

怎么看 Trojan 节点的质量

协议本身不决定速度,线路才决定。导入后用这三步判断:

  1. 延迟:香港节点 RTT 在 15–35ms 属于中转或专线水平,见 线路类型判断。
  2. 晚高峰:20:00–23:00 速度衰减小于 20% 为优。
  3. 证书:客户端若提示证书无效、需要「跳过证书验证」,说明节点用了自签证书,伪装效果大打折扣,谨慎。

一次 Trojan 连接是怎么建立的

把一次访问 Google 的过程拆开看,就能理解它为什么「像 HTTPS」:

  1. 客户端向节点的 443 端口发起 TCP 连接,发送 TLS ClientHello,里面的 SNI 是节点域名。这一步和浏览器访问任何 HTTPS 网站完全一样。
  2. 节点返回证书,客户端校验证书链(正规机场用 Let's Encrypt 或商业证书,校验通过)。
  3. 加密通道建立。客户端发送第一段数据:56 字节的密码 SHA224 十六进制哈希 + CRLF + 一个 SOCKS5 风格的请求头(命令、目标地址 google.com、端口 443)+ CRLF + 真正的请求数据。
  4. 节点解密后比对密码。匹配:解析目标地址,连接 google.com,开始双向转发;不匹配:把整个连接连同已收到的数据交给后端的真实网站(Nginx),后者把它当作一个普通 HTTPS 请求处理,返回网页或 404。
  5. 之后所有数据都在这条 TLS 连接里透传,直到任一方关闭。

关键在第 4 步:探测者没有密码,无论怎么构造请求,看到的都是一个真实网站的真实响应,没有任何「这里有代理」的痕迹。

封锁高峰期的实际表现

Trojan 在封锁高峰期的表现取决于节点 IP 和域名的「干净程度」,而不是协议本身:

  • 域名被 SNI 阻断:封锁方直接对特定 SNI 做重置,表现为握手阶段就断、延迟测试超时。机场换域名并更新订阅即可恢复,你只需要重新拉取订阅。
  • IP 被封:同样换 IP。专线入口在国内的机场,封的是国内入口 IP,恢复更快。
  • TLS-in-TLS 识别:这是 Trojan 的理论弱点,表现为「能连上、延迟正常、但传一会儿大流量就被限速或断开」。遇到这种情况切到 VLESS + XTLS-Vision 或 AnyTLS 节点。

切换顺序建议:先换同地区其他 Trojan 节点 → 换地区 → 换到 VLESS Reality 或 Hysteria2 节点 → 等待机场公告。细则见 机场晚高峰很慢怎么办。

客户端支持矩阵

客户端TrojanTrojan + WSTrojan + 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 教程 导入后在晚高峰测一次。