跳到主要内容
对比选择机场云编辑部 发布 更新 约 8 分钟 协议对比传输
本页目录

Shadowsocks 和 Trojan 怎么选

快速回答

Shadowsocks 结构简单、开销低、兼容性广;Trojan 借助真实域名与 TLS 伪装成普通 HTTPS,更适合识别严格的网络。两者是取舍关系,不是新旧优劣。

这两个协议经常被放进「哪个更好」的比较框架里,但它们本来就不是同一道题的两个答案。Shadowsocks 回答的是「怎么用最少的开销完成加密代理」,Trojan 回答的是「怎么让代理流量看起来不像代理」。理解各自押注的方向,选择就会从站队变成对号入座

核心结论

  • 两者的差别不是快慢档次,而是把重点放在哪一层:Shadowsocks 押注低开销,Trojan 押注伪装。
  • Shadowsocks 自带加密、无额外伪装,层数少、兼容性最广,但流量特征相对固定。
  • Trojan 把加密交给 TLS,用真实域名与有效证书让流量看起来就是普通 HTTPS 访问。
  • Trojan 的代价是配置依赖:证书过期或域名不匹配会直接导致握手失败。
  • 选择依据是网络适配而非理论性能,能稳定连上的协议就是最快的协议。
封装结构对比图:Shadowsocks 由应用数据经自带加密直接走 TCP,层数少;Trojan 将数据封装后放入使用真实域名与证书的 TLS 通道,外观与普通 HTTPS 一致
Shadowsocks 押注低开销与兼容性,Trojan 押注 HTTPS 外观。

原理差异

Shadowsocks:自带加密,直接传输。 应用数据经过协议自带的加密(当前常见为 AEAD 方案)后直接走 TCP。结构里没有多余的层,这带来了两个直接好处:开销低、实现简单——后者正是它兼容性极广的原因。

Trojan:把加密交给 TLS,把外观做成 HTTPS。 它的核心思路是「看起来就是一次普通的网站访问」:服务端挂着真实域名与有效证书,客户端与它完成标准的 TLS 握手,代理数据在这条加密通道里传输。对外部观察者来说,这与访问任何 HTTPS 网站的流程一致。

设计目标的不同决定了后面所有差异:一个为效率让路,一个为外观让路。两者在常见机场协议完整解释的三层框架(加密、伪装、传输)里,是两种典型的分工方式。

伪装能力

  • Shadowsocks 不做额外伪装。加密让内容不可读,但流量的行为特征(握手模式、包长分布等)相对固定。在识别宽松的网络里这无关紧要;在识别严格的网络里,这可能表现为连接成功率下降或速度被限制。
  • Trojan 的伪装来自「成为」而不是「模仿」。它不是把流量伪装得像 HTTPS,而是真的用标准 TLS 流程传输——域名是真的、证书是真的、握手是真的。识别方需要付出高得多的成本才能区分它与正常网站访问。

需要说清楚的边界:伪装不是绝对的。识别技术在演进,任何协议的存活率都是特定时间、特定网络下的观察结果,而不是永久属性。

性能开销

  • 封装层数:Shadowsocks 少一层 TLS 封装,握手也更简单,理论开销更低。
  • 握手成本:Trojan 的 TLS 握手在建立连接时多一次往返,对频繁建立短连接的场景略有影响;连接建立后的传输开销两者差距很小。
  • 实际体验:这些差异通常被线路质量完全掩盖。一条拥堵线路上的 Shadowsocks 不会比一条干净线路上的 Trojan 快——协议开销是小数点,线路质量才是整数位

兼容性

这是两者差距最实际的一项:

  • Shadowsocks 的客户端覆盖面最广:主流客户端全部支持,大量老设备、旧版客户端与路由器固件也支持。
  • Trojan 需要相对较新的客户端。主流平台的现代客户端基本都已支持,但老设备与小众平台上的可选实现明显更少。
  • 订阅格式:多数服务商在同一订阅里混合提供多种协议的节点,客户端按支持情况显示可用节点。购买前值得确认订阅里包含你设备能用的协议类型。

配置复杂度

对用户来说,两者在客户端里的使用体验几乎相同——导入订阅、选节点、连接。复杂度的差异在服务端,但它会以故障的形式传导给用户:

  • Trojan 依赖域名与证书。证书会过期,域名解析会出问题,两者任何一个出错,节点就会突然全部连不上,且用户端无法自行修复。遇到这类情况,参考所有节点都超时怎么办先排除本地因素,再等服务商修复。
  • Shadowsocks 没有证书环节,少了这一整类故障来源,排错时的变量也更少。

TLS 证书在这条链路里具体做什么、过期为什么会导致握手失败,见 TLS 和 WebSocket 在节点中有什么作用

核心差异表

Shadowsocks 与 Trojan 的可核对差异
对比项ShadowsocksTrojan
加密协议自带(常见为 AEAD 方案)交给外层 TLS
伪装无额外伪装,流量特征相对固定伪装成标准 HTTPS 访问
依赖条件无需域名与证书需要真实域名与有效证书
封装开销层数少,开销低多一层 TLS 握手与封装
兼容性几乎所有客户端与老设备都支持需要相对较新的客户端
典型故障识别严格的网络中可用性下降证书过期或域名不匹配导致握手失败

选择建议

按网络环境对号入座,比比较协议本身有效:

  • 网络识别宽松(多数家庭宽带的日常使用):优先 Shadowsocks,享受低开销与广兼容,不为用不上的伪装支付复杂度。
  • 网络识别严格(连接成功率明显异常、特定协议疑似被限制):优先 Trojan,此时伪装能力直接决定可用性。
  • 设备很老或客户端受限:Shadowsocks 几乎是默认选择。
  • 拿不准:如果订阅同时提供两种协议,各用一段时间、覆盖晚高峰,以实际连通率与稳定性为准。

常见误解

  • 「Trojan 比 Shadowsocks 新,所以更好」——两者押注的方向不同,不构成迭代关系。
  • 「Shadowsocks 已经过时」——在识别宽松的网络里,低开销与高兼容仍是实打实的优势。
  • 「Trojan 一定不会被识别」——伪装大幅提高识别成本,但不存在绝对不可识别的协议。
  • 「换成 Trojan 速度会变快」——速度由线路决定,协议开销的影响是次要的。
  • 「节点突然全挂是被限制了」——如果是 Trojan 节点,先想到证书过期的可能。相关术语见机场常用术语词典

常见问题

哪个更快?
单看协议开销,Shadowsocks 层数更少、理论开销更低,但这点差距在实际体验中通常被线路质量完全掩盖。真正拉开速度差距的是线路的拥堵程度与丢包水平,而不是这两个协议之间的封装差异。用协议选择去解决速度问题,方向基本是错的。
哪个更稳定?
取决于你所处的网络。在识别宽松的网络里两者都稳定,Shadowsocks 还省去了证书环节;在识别严格的网络里,Trojan 的 HTTPS 外观通常有更好的存活率。所以「稳定」不是协议属性,而是协议与网络环境的匹配结果。
证书过期会怎样?
Trojan 依赖有效的 TLS 证书完成握手,证书过期、域名与证书不匹配都会让连接直接失败,表现为节点突然全部连不上。这类故障在服务商侧修复前,用户无法自行解决。Shadowsocks 没有证书环节,因此不存在这类故障。
老客户端支持吗?
Shadowsocks 的支持面最广,包括很多老设备、路由器固件与旧版客户端。Trojan 需要相对较新的客户端支持,在老旧设备上可选的实现明显更少。如果你的使用场景包含老设备,这一条可能直接决定选择。
可以随时切换吗?
取决于订阅里是否同时提供两种协议的节点。多数服务商会在同一订阅中混合提供多种协议,客户端里直接切换节点即可,不需要改配置。如果订阅只有单一协议,切换就需要服务商支持,购买前可以把这一点纳入考虑。
协议本身会影响流媒体或 AI 平台的解锁判定吗?
不直接影响。解锁判定看的是出口 IP 的类型与信誉、解析路径是否一致,这些都在协议层之上。协议影响的是连接能不能建立、是否容易被网络环境限制,不是平台判定你是否为代理的依据。
选哪个不容易被限制?
没有对所有网络都成立的答案。识别策略因网络而异,也会随时间调整。通用的判断方法是:在你自己的网络环境里分别试用一段时间,覆盖高峰时段,以实际连通率与稳定性为准。任何脱离具体网络环境的「哪个更抗限制」结论都不可靠。