Shadowsocks 和 Trojan 有什么区别
Shadowsocks(SS)和 Trojan 是两种设计思路完全不同的代理协议:SS 自带一层加密、默认不走 TLS、轻量成熟;Trojan 本身不加密,而是用 TLS 把流量伪装成一条普通的 HTTPS 连接。
快速结论:网络环境干净、想要低延迟和最好的兼容性,选 Shadowsocks(优先现代的 SS2022 加密);所在网络对”无特征流量”识别较严、需要更强伪装、把代理藏进海量 HTTPS 里更安心,选 Trojan。对机场用户来说两者都成熟可靠,多数订阅会同时提供,按场景切换即可。
一张表看懂核心区别
| 对比维度 | Shadowsocks | Trojan |
|---|---|---|
| 定位 | 轻量加密代理,出道最早、最成熟 | 伪装成 HTTPS 的极简协议 |
| 加密机制 | 自带 AEAD 加密流(如 aes-256-gcm) | 本身不加密,完全靠 TLS |
| 是否依赖 TLS / 证书 | 默认不用,无需域名证书 | 必须 TLS 加真实域名证书 |
| 伪装方式 | 无特征随机流量,不模仿任何协议 | 直接就是标准 HTTPS |
| 延迟 / 开销 | 低,握手轻 | 略高,多一次 TLS 握手 |
| 部署成本 | 低,一个端口加密码即可 | 需域名加证书,成本略高 |
| 客户端兼容性 | 最好,几乎所有客户端都支持 | 好,主流客户端都支持 |
| 适合人群 | 干净网络下追求低延迟、易用 | 需要强伪装、混进 HTTPS 的用户 |
逐项拆解
加密机制:自带 vs 借 TLS
Shadowsocks 本身就是一个加密隧道:它用预共享密码派生密钥,对流量做对称加密后直接发出去。现代 SS 统一采用 AEAD 加密(如 aes-256-gcm、chacha20-ietf-poly1305),既保证机密性也保证完整性,参考实现 shadowsocks-rust 与 sing-box 都已内置。整个过程不需要 TLS。
Trojan 恰好相反,协议本身不做内容加密,安全性百分百交给外层 TLS 加密层。它做的事只是”在一条真实的 TLS 连接里,用密码验明身份、再转发流量”。所以 Trojan 离不开 TLS 和证书,SS 则可以完全不碰 TLS。
伪装思路:无特征 vs 扮 HTTPS
这是两者最有意思的分歧。SS 的思路是”不模仿任何东西”——加密后的流量看起来就是一堆随机字节,没有可识别的协议头部,靠”查不出这是什么”来隐身。Trojan 反其道而行——“我就明摆着是 HTTPS”,混在互联网上海量的正常 HTTPS 流量里,让审查者难以下手封锁。
早期 SS 曾被主动探测(active probing)和重放攻击识别过,这是它一度被诟病的点。如今的 SS2022 已修复这些旧弱点,把安全性拉回第一梯队,因此”SS 容易被查”的老印象需要更新。
延迟、开销与部署
SS 只做一层对称加密,握手轻、延迟低,在弱设备(老手机、路由器)上也很省资源;Trojan 每次连接要多完成一次完整的 TLS 握手,开销略高,但对现代设备几乎无感。部署上,SS 一个端口加一个密码就能跑,成本最低;Trojan 需要一个域名和有效证书,还要维护证书续期,节点成本略高,这些都由机场承担。也正因为部署轻,SS 常被机场用作走量的基础线路,Trojan 则更多出现在强调稳定与隐蔽的中高端套餐里。
兼容性
SS 生态最成熟,几乎所有客户端、所有平台都支持,堪称机场”标配协议”。Trojan 支持面也很广,主流客户端都覆盖。用 mihomo、sing-box 等现代内核,两者都不成问题。参考实现方面,SS2022 有 shadowsocks-rust、sing-box 支撑,Trojan 则有 trojan、trojan-go 及 Xray、sing-box 的内置实现。
想给 SS 加伪装:插件 vs 协议内建
如果所在网络对无特征流量卡得较严,SS 也不是只能硬扛——它可以挂插件,比如 v2ray-plugin(把流量套进 WebSocket 加 TLS)或早期的 simple-obfs,让流量看起来像正常的 HTTPS/HTTP。这时 SS 其实借用了和 Trojan 类似的”扮 HTTPS”思路,只是配置更繁琐、要额外维护证书。反过来,如果你选的是 SS2022,它已在协议层修补了主动探测与重放的老弱点,很多场景下无需插件也够稳。这就构成一个实用对照:想要”原生就伪装成 HTTPS 且逻辑简单”,Trojan 更直接;想要”轻量为主、必要时再加伪装”,SS 更灵活。
一个典型的场景对照
家庭宽带、日常刷网页看视频、网络本身干净——SS(尤其 SS2022)延迟低、最省心,是首选。换到企业网、校园网这类对可疑流量更敏感、更希望”看起来完全正常”的环境,Trojan 把自己藏进 443 端口的海量 HTTPS 里,隐蔽性更好。识别特征上也有个直观差别:Trojan 通常固定在 443、就是标准 HTTPS,而 SS 不绑定特定端口、也不模仿任何协议,两种隐身逻辑各有适用面。
选择建议
- 默认日常:网络干净时用
Shadowsocks(选 SS2022),延迟低、最省心。 - 需要强伪装:所在网络对无特征流量卡得严,或想把代理藏进 HTTPS,用
Trojan。 - 两者都留:让订阅同时提供,按环境切换最稳妥。若还想在更多协议间权衡,读如何根据场景选择代理协议。
下一步:SS 与另一位老将 VMess 的单独较量见Shadowsocks 与 VMess 对比;想把 SS、Trojan 和 VMess、VLESS、Hysteria2 放在一起权衡,可读五大主流协议横向对比,一次看清各协议的加密、伪装与抗封锁取舍。