Trojan 协议是什么?伪装成 HTTPS 流量的代理协议原理与优缺点

更新于 约 3 分钟读完机场百科 · 协议知识

本文要点

  • Trojan 完全运行在 TLS 之上,从外部看和访问一个普通 HTTPS 网站很像。
  • 它依赖域名和有效证书,订阅里若开启跳过证书验证,安全性会打折扣。
  • mihomo、sing-box、Xray 都支持 Trojan,体验好坏仍主要取决于线路。

Trojan 是什么

Trojan 是一种把代理流量伪装成普通 HTTPS 访问的代理协议:它完全运行在 TLS 之上,客户端通过密码验证之后,服务器才开始转发流量;没有通过验证的连接,会被转交给一个真实的网站去处理。

它的设计思路和 Shadowsocks 相反:Shadowsocks 让流量看起来「什么都不像」,Trojan 则让流量看起来就是互联网上最常见的 HTTPS。

工作流程

  1. 建立 TLS 连接:客户端像浏览器访问网站一样,和服务器完成标准的 TLS 握手。服务器使用的是真实域名和有效证书,端口通常是 443。
  2. 提交密码:握手完成后,客户端在加密通道里发送密码和要访问的目标地址。
  3. 验证并转发:密码正确,服务器就替客户端访问目标并回传数据。
  4. 验证失败则回落:如果来的不是合法客户端(比如有人用浏览器直接打开这个地址),服务器会把请求交给后面的普通网站,对方看到的只是一个正常的网页。

Trojan 自身不再额外加密,数据的保密性完全由外层 TLS 提供,这一点和「VLESS + TLS」的思路相同。

优点和局限

方面 说明
伪装 外观是标准的 TLS 流量,混在大量 HTTPS 访问里不显眼
兼容性 协议简单,参数少(服务器、端口、密码、SNI),各类客户端普遍支持
握手开销 需要先完成 TLS 握手,首次建立连接比 Shadowsocks 多几次往返
依赖证书 证书过期或域名出问题时,节点会整体不可用
嵌套加密 访问 HTTPS 网站时是「TLS 里套 TLS」,有一定的重复加密开销

留意「跳过证书验证」

有些订阅下发的 Trojan 节点会开启「跳过证书验证」这个选项(不同客户端叫法不同)。开启之后,客户端不再核对服务器的证书是否真实有效,理论上给了中间人冒充服务器的空间。

这不代表一定会出事,但它确实削弱了 Trojan 依赖 TLS 获得的安全性。如果一个机场的节点全部要求跳过证书验证,可以把它当作运维不够规范的信号之一。

哪些客户端支持

mihomo(Clash Meta)、sing-box、Xray 三个主流内核都支持 Trojan,包括搭配 WebSocket、gRPC 等传输方式的变体。Clash Verge Rev、v2rayN、v2rayNG 以及 iOS 上常见的代理客户端都可以直接使用。各平台的客户端选择见 客户端大全。

因为出现得早、参数简单,Trojan 的兼容问题很少。节点连不上时,原因多半在线路或机场一侧,而不在协议本身,可以按 节点全部超时 的顺序排查。

普通用户怎么看待 Trojan

  • 它是成熟、通用的协议,机场提供 Trojan 节点是很正常的选择。
  • 它不会让一条本来拥堵的线路变快。晚高峰卡顿,换协议基本没有用,换线路才有用。
  • 不必为了 Trojan 专门换机场,机场给什么就用什么。

想横向了解它和 VLESS、Hysteria2 等协议的差别,可以看 不同协议对比;线路类型对体验的影响,见 直连、中转和专线的区别。

常见问题

Trojan 协议和木马病毒有关系吗?

没有关系。Trojan 只是这个代理协议的名字,取「伪装」之意,指它把代理流量伪装成普通的 HTTPS 访问。它是公开的开源协议,和恶意软件意义上的木马不是一回事。

Trojan 和 VLESS 加 TLS 哪个更好?

两者思路接近,都是把加密交给 TLS,自身只做身份验证和转发,实际速度差别很小。机场提供哪一种就用哪一种,不必专门挑选,线路和带宽对体验的影响更大。

Trojan 节点提示证书错误怎么办?

先检查设备的系统时间是否准确,再更新订阅重试。如果仍然报错,多半是机场的证书过期或配置有误,应向机场反馈,不建议自己在客户端里打开跳过证书验证。

相关协议知识文章

全部