小火箭 (Shadowrocket) 和 Loon / Stash 怎么选
苹果生态三大网络工具该买哪一个?打开呀深度剖析 Shadowrocket(性价比之王)、Loon(脚本与去广告生态强大)与 Stash(Clash 规则原生兼容)的特性与选型逻辑。
iOS 网络工具选型:Shadowrocket vs Loon vs Stash 深度横评
小火箭 (Shadowrocket) 和 Loon / Stash 怎么选:iOS 平台三款主流网络调试工具深度横评
Answer Block
核心结论: Shadowrocket(小火箭)、Loon、Stash 是 iOS 平台上三款基于不同内核架构的网络代理与调试客户端。Shadowrocket 售价 $2.99,协议兼容度最广(Shadowsocks/VMess/VLESS/Trojan/Hysteria 等),更新频繁,适合预算有限、需求通用的用户;Loon 售价 $5.99,以精美的 UI、强大的 MitM 脚本重写和插件生态见长,适合愿意投入时间折腾的高级用户;Stash 售价 $3.99,原生复刻 Clash 规则语法,配置可跨 macOS/Windows/Linux 同步,适合已有 Clash 配置体系的用户。三者在 iOS 上均通过 Network Extension 框架实现代理功能,耗电与发热差异主要取决于规则复杂度、节点协议和 MitM 开启状态,而非 GUI 框架本身。没有绝对最优,只有场景最匹配。
一、iOS 平台三大工具的定位与市场生态
1.1 为什么 iOS 上的代理工具如此特殊?
在展开对比之前,有必要先理解 iOS 平台的底层约束。与 Android 不同,iOS 不允许应用直接创建 VPN 隧道或修改系统网络栈。所有代理类工具必须通过 Apple 的 Network Extension 框架(具体是 NEPacketTunnelProvider)来实现流量拦截。这意味着:
- 所有流量必须经过一个虚拟网卡接口(utun),由 App 内的用户态协议栈处理;
- 系统对 Network Extension 的内存占用有硬性限制(通常约 50MB),超出会被 iOS 直接 kill;
- 后台保活能力受限,长时间挂后台可能被系统回收;
- App Store 审核对代理类工具的合规性要求极高,导致大量工具被迫下架或转区。
这些约束直接塑造了三款工具的架构选择与功能边界。
1.2 Shadowrocket(小火箭):极致性价比的“瑞士军刀”
定位: 通用型代理客户端,以协议兼容度和性价比为核心竞争力。
Shadowrocket 由独立开发者 Li Yicheng 维护,2015 年首次上架 App Store,售价 $2.99(中国区 ¥18),是三者中价格最低的。它的核心特点:
- 协议支持最全: Shadowsocks、ShadowsocksR、VMess、VLESS、Trojan、Hysteria/Hysteria2、TUIC、WireGuard、Snell 等几乎全部主流协议,甚至支持部分私有协议。这在 iOS 生态中是独一档的存在。
- 更新频率极高: 开发者响应速度快,新协议出现后通常数周内跟进。例如 Hysteria2 和 TUIC v5 的支持都走在同类产品前列。
- 配置方式灵活: 支持手动添加节点、扫码导入、订阅链接、配置文件导入(.conf/.yaml)等多种方式。
- 规则系统: 基于自有规则引擎,支持 DOMAIN、DOMAIN-SUFFIX、IP-CIDR、GEOIP 等规则类型,语法与 Surge 类似但不完全兼容。
- 脚本能力: 支持 JavaScript 脚本进行 HTTP 重写和 MitM,但脚本生态相对 Loon 较弱。
市场生态: Shadowrocket 在中国区 App Store 曾多次下架又上架,目前需要非中国区 Apple ID 购买。由于价格低、上手快,它是大量普通用户的第一款 iOS 代理工具,用户基数最大,中文教程和社区资源最丰富。
底层架构: Shadowrocket 使用自研的代理核心(闭源),基于 C/C++ 实现,在 iOS Network Extension 的 50MB 内存限制下做了大量优化。其规则匹配引擎采用多级哈希表 + 前缀树混合结构,在数千条规则下仍能保持较低的内存占用。
1.3 Loon:界面精美的高级玩家折腾利器
定位: 面向高级用户的网络调试与代理工具,以 MitM 脚本重写和插件生态为核心卖点。
Loon 由开发者 Ethan 维护,售价 $5.99(中国区 ¥38),三者中价格最高。它的核心特点:
- UI/UX 设计出色: 界面美观、信息层级清晰,实时流量图、连接列表、规则命中统计等可视化做得非常精致。
- MitM 与脚本重写强大: 支持完整的 HTTPS 中间人解密,配合 JavaScript 脚本可实现广告拦截、API 重写、签到自动化等高级功能。其脚本 API 设计参考了 Surge,但有自己的扩展。
- 插件系统: 支持插件化配置,社区有大量现成的去广告、功能增强插件可直接引用。
- 规则系统: 支持 Surge 风格的规则语法,兼容性较好,支持 RULE-SET 远程规则集。
- 协议支持: Shadowsocks、VMess、VLESS、Trojan、Hysteria2、TUIC 等主流协议均支持,但不如 Shadowrocket 全面。
市场生态: Loon 的用户群体偏“折腾型”,中文社区(如 Telegram 群组、V2EX)讨论活跃。由于价格较高且功能复杂,新手门槛相对较高,但一旦掌握后可以实现非常精细的流量控制。
底层架构: Loon 同样使用闭源自研核心,但在 MitM 实现上采用了更高效的流式解密方案,支持 HTTP/2 和部分 HTTP/3 流量的解密重写。其脚本引擎基于 JavaScriptCore,与 iOS 系统原生集成,性能较好。
1.4 Stash:Clash 规则在 iOS 上的原生复刻
定位: 面向已有 Clash 配置体系的用户,强调跨端配置同步与规则兼容。
Stash 由开发者 xream 维护,售价 $3.99(中国区 ¥28)。它的核心特点:
- Clash 规则原生兼容: 直接支持 Clash 的 YAML 配置文件格式,包括 proxies、proxy-groups、rules、rule-providers 等全部核心语法。这意味着你在电脑上用的 Clash/Clash Meta 配置可以直接导入 Stash 使用。
- 跨端同步: 配置可通过 iCloud 或 WebDAV 同步,实现 iPhone、iPad、Mac 之间的无缝切换。
- 协议支持: Shadowsocks、VMess、VLESS、Trojan、Hysteria2、TUIC、WireGuard 等,基于 Clash Meta(现 Mihomo)内核的 iOS 移植。
- 规则系统: 完全兼容 Clash 规则语法,支持 RULE-SET、GEOSITE、GEOIP 等,规则生态与桌面端 Clash 完全共享。
- 脚本能力: 支持 JavaScript 脚本重写,但生态不如 Loon 丰富。
市场生态: Stash 的用户群体主要是已经在桌面端使用 Clash 的用户,他们希望手机端也能复用同一套配置。由于 Clash 生态庞大,Stash 的规则兼容性是其最大优势。需要注意的是,Stash 与 Clash 官方并无直接关系,是基于 Mihomo 内核的独立实现。
底层架构: Stash 基于 Mihomo(原 Clash Meta)内核的 iOS 移植版本。Mihomo 使用 Go 语言编写,在 iOS 上通过 Gomobile 编译为静态库供 Swift/Objective-C 调用。Go 运行时的 GC 和协程调度在 iOS Network Extension 的内存限制下需要精细调优,Stash 在这方面做了大量工作。
二、功能与易用度全维度对比
| 对比维度 | Shadowrocket | Loon | Stash |
|---|---|---|---|
| 价格 | $2.99 | $5.99 | $3.99 |
| 内核架构 | 自研闭源核心 (C/C++) | 自研闭源核心 | Mihomo (Go) iOS 移植 |
| 协议支持 | SS/SSR/VMess/VLESS/Trojan/Hysteria/Hysteria2/TUIC/WireGuard/Snell 等 | SS/VMess/VLESS/Trojan/Hysteria2/TUIC 等 | SS/VMess/VLESS/Trojan/Hysteria2/TUIC/WireGuard 等 |
| 规则语法 | 自有语法(类 Surge) | Surge 风格 | Clash YAML 原生兼容 |
| 远程规则集 | 支持 | 支持 RULE-SET | 支持 RULE-SET/rule-providers |
| MitM 解密 | 支持 | 支持(更强,支持 HTTP/2) | 支持 |
| 脚本重写 | JavaScript(基础) | JavaScript(强大,API 丰富) | JavaScript(中等) |
| 插件生态 | 较少 | 丰富 | 中等(可复用 Clash 生态) |
| 配置导入 | 手动/扫码/订阅/文件 | 手动/扫码/订阅/文件 | 手动/扫码/订阅/文件/Clash YAML |
| 跨端同步 | 无原生同步 | 无原生同步 | iCloud/WebDAV 同步 |
| UI 美观度 | 一般(功能优先) | 优秀 | 良好 |
| 上手难度 | 低 | 中高 | 中 |
| 耗电/发热 | 中等(取决于规则和协议) | 中等偏高(MitM 开启时明显) | 中等(Go GC 有一定开销) |
| 后台保活 | 良好 | 良好 | 良好 |
| 更新频率 | 极高 | 高 | 高 |
| 中文社区 | 最大 | 活跃 | 活跃 |
| 适合人群 | 新手/通用用户 | 高级玩家 | Clash 用户/跨端用户 |
2.1 协议支持深度解析
Shadowrocket 在协议支持上确实是最全的。它不仅支持所有主流协议,还支持一些较少见的协议如 Snell(Surge 私有协议)、ShadowsocksR(已过时但在部分场景仍有使用)。对于使用小众协议的用户,Shadowrocket 几乎是唯一选择。
Stash 基于 Mihomo 内核,协议支持紧随其后,但 Mihomo 本身对某些协议的支持取决于版本。例如 Hysteria2 的支持在 Mihomo 中较晚才加入,Stash 需要跟随内核更新。
Loon 的协议支持覆盖主流需求,但在小众协议上不如前两者。不过对于 95% 以上的用户,三者的协议支持都足够。
2.2 脚本与去广告能力
这是 Loon 的核心优势领域。Loon 的 MitM 脚本系统支持:
- 完整的 HTTP/HTTPS 请求/响应重写;
- JavaScript API 丰富,支持正则匹配、JSON 解析、定时任务等;
- 社区插件可直接引用,例如 YouTube 去广告、Spotify 解锁、各类 App 签到等。
Shadowrocket 也支持脚本重写,但 API 相对简单,社区脚本较少。Stash 的脚本能力介于两者之间,但由于可以复用部分 Clash 生态的脚本,实际可用性不差。
需要注意的是: MitM 开启后会显著增加耗电和发热,因为所有 HTTPS 流量都需要在设备上解密再加密。这是物理层面的开销,无法通过软件优化完全消除。
2.3 分流规则便利度
- Shadowrocket: 自有规则语法,配置界面直观,适合手动调整。但规则集生态不如 Clash 丰富。
- Loon: Surge 风格规则,支持远程 RULE-SET,社区有大量现成规则集。
- Stash: Clash YAML 原生兼容,可直接使用桌面端 Clash 的全部规则集和 rule-providers,规则生态最丰富。
对于已经在桌面端使用 Clash 的用户,Stash 的规则迁移成本几乎为零。这是 Stash 最大的差异化优势。
2.4 耗电量与发热表现
三者的耗电差异主要取决于以下因素:
- 规则数量: 规则越多,每次连接匹配的 CPU 开销越大。Stash 的 Mihomo 内核在大量规则下使用了高效的匹配算法,表现较好。
- 协议类型: Hysteria2 等基于 QUIC 的协议在移动网络下可能更耗电(UDP 保活),而 Shadowsocks 等 TCP 协议相对省电。
- MitM 状态: 开启 MitM 后,所有 HTTPS 流量需要解密,CPU 开销显著增加,耗电和发热都会明显上升。Loon 在 MitM 场景下的优化较好,但物理开销无法避免。
- Network Extension 内存管理: 三者都需要在 50MB 内存限制下运行,内存管理效率影响后台保活和稳定性。
实测经验: 在相同节点、相同规则复杂度、不开启 MitM 的情况下,三者耗电差异在 5%-10% 以内,日常使用难以感知。开启 MitM 后,Loon 和 Shadowrocket 的耗电增加较为明显,Stash 由于 Go 运行时的 GC 开销,CPU 占用略高但差异不大。
三、针对不同用户人群的具体购买建议
3.1 新手用户 / 预算有限
推荐:Shadowrocket
理由:价格最低($2.99),上手最快,协议支持最全,中文教程最多。即使你后续升级到 Loon 或 Stash,Shadowrocket 也可以作为备用工具保留。
3.2 高级玩家 / 需要 MitM 去广告
推荐:Loon
理由:MitM 脚本系统最强大,插件生态最丰富,UI 最美观。如果你愿意花时间折腾脚本和插件,Loon 能实现的功能远超另外两者。价格 $5.99 虽然最高,但对于目标用户群体来说物有所值。
3.3 Clash 用户 / 多端同步需求
推荐:Stash
理由:Clash YAML 原生兼容,桌面端配置可直接导入,iCloud/WebDAV 同步让多设备切换无缝。如果你已经在电脑上使用 Clash Verge、ClashX 等工具,Stash 是 iOS 端最自然的选择。
3.4 双持 / 全能型用户
推荐:Shadowrocket + Loon 或 Shadowrocket + Stash
理由:Shadowrocket 作为日常通用工具,Loon 或 Stash 作为特定场景的补充。例如日常使用 Shadowrocket 的简单规则,需要去广告时切换到 Loon 的 MitM 脚本。
3.5 企业 / 团队用户
推荐:Stash
理由:Clash 配置的标准化程度最高,便于团队统一管理和分发。Stash 的跨端同步也方便团队成员在不同设备上保持一致体验。
四、5 个高价值长尾 FAQ
H3:Shadowrocket、Loon、Stash 三者的内核有什么区别?为什么 Stash 的耗电可能略高?
Shadowrocket 和 Loon 都使用自研的闭源代理核心,基于 C/C++ 实现,直接调用 iOS 底层网络 API,内存管理精细,运行时开销小。Stash 则基于 Mihomo(原 Clash Meta)内核,Mihomo 使用 Go 语言编写,通过 Gomobile 编译为 iOS 可调用的静态库。Go 语言的运行时包含垃圾回收(GC)和协程调度器,这些机制在桌面端表现优秀,但在 iOS Network Extension 的 50MB 内存限制下,GC 的停顿和协程调度的开销会导致 CPU 占用略高于纯 C/C++ 实现。不过 Mihomo 内核在规则匹配算法上做了大量优化(如使用 domain trie 和 IP CIDR 的位图索引),在大量规则场景下反而可能比自研核心更高效。实际耗电差异在日常使用中通常在 5% 以内,只有在极端规则数量或高并发场景下才会显现。
H3:MitM 解密在 iOS 上安全吗?开启后有哪些风险?
MitM(中间人)解密的原理是:代理工具在设备上生成一个根证书,你需要在 iOS 设置中信任该证书。之后,代理工具可以对 HTTPS 流量进行解密、读取、修改,再重新加密发送。这在技术上是安全的——前提是你信任该工具的开发者。风险在于:第一,代理工具本身可以看到你所有的 HTTPS 明文流量,包括密码、Cookie、Token 等敏感信息;第二,如果根证书私钥泄露或被恶意利用,攻击者可以伪造任意网站的证书;第三,部分 App 使用证书固定(Certificate Pinning)技术,MitM 会导致连接失败。建议只在需要去广告或重写特定 App 时开启 MitM,并只对目标域名启用解密,避免全局解密。Loon 和 Shadowrocket 都支持按域名精细化控制 MitM 范围,Stash 也支持类似功能。
H3:为什么 Shadowrocket 在中国区 App Store 经常下架?购买后会被回收吗?
Shadowrocket 在中国区下架的主要原因是 Apple 应中国监管部门要求,对涉及 VPN/代理功能的 App 进行合规审查。这类工具在中国区上架需要获得工信部相关许可,而大多数独立开发者无法满足要求。因此 Shadowrocket 多次在中国区下架又上架,目前需要非中国区 Apple ID 才能购买。关键点: 一旦你通过 App Store 购买(即使是非中国区账号),该购买记录绑定在你的 Apple ID 上,Apple 不会因为 App 下架而回收你的购买权限。你仍然可以在“已购项目”中重新下载。但如果 App 被 Apple 彻底从所有区域下架(极端情况),则可能无法重新下载。建议购买后保留一份 IPA 备份(通过 iMazing 等工具),以防万一。
H3:Stash 的 Clash 配置兼容性到底有多高?有哪些不兼容的地方?
Stash 对 Clash 配置的兼容性非常高,核心语法如 proxies、proxy-groups、rules、rule-providers、proxy-providers 等全部支持。但仍有以下不兼容点需要注意:第一,Clash 的部分高级功能如 TUN 模式的自定义栈参数(tun.stack)在 iOS 上无意义,因为 iOS 的 Network Extension 已经固定了网络栈;第二,部分 Clash 的 DNS 配置项(如 dns.enhanced-mode)在 Stash 中可能行为不同;第三,Clash 的 script 功能(基于 Lua 或 JavaScript)在 Stash 中的实现可能有差异;第四,某些第三方 Clash 分支的私有扩展语法不被 Stash 支持。总体而言,90% 以上的标准 Clash 配置可以直接导入 Stash 使用,剩余 10% 需要微调。建议导入后检查日志,确认规则是否正确加载。
H3:三款工具在 iOS 后台保活方面表现如何?为什么有时会断连?
iOS 对后台应用的限制非常严格。Network Extension 虽然允许在后台运行,但系统会在内存紧张或电量低时回收。三款工具都采用了类似的保活策略:第一,使用 NEPacketTunnelProvider 的 setTunnelNetworkSettings 维持隧道;第二,通过定时心跳包保持连接活跃;第三,在 App 内使用 beginBackgroundTask 延长后台运行时间。但以下情况仍可能导致断连:第一,系统内存不足时优先回收 Network Extension;第二,低电量模式下 iOS 会限制后台网络活动;第三,切换网络(WiFi 到蜂窝)时隧道需要重建,如果重建失败会断连;第四,部分运营商对长时间 UDP 连接进行干扰。三者的断连概率差异不大,更多取决于节点质量和网络环境。如果频繁断连,建议检查节点协议(TCP 协议通常比 UDP 稳定)和 iOS 的低电量模式设置。
五、总结
Shadowrocket、Loon、Stash 三款工具在 iOS 平台上各有千秋,它们的差异本质上反映了三种不同的产品哲学:
- Shadowrocket 是“够用就好”的实用主义,以最低的价格提供最全的协议支持,适合大多数用户;
- Loon 是“折腾到底”的极客精神,以强大的 MitM 和脚本系统满足高级玩家的定制需求;
- Stash 是“生态兼容”的务实路线,以 Clash 规则原生兼容和跨端同步为核心,适合已有 Clash 体系的用户。
选择哪款,取决于你的技术背景、使用场景和预算。没有绝对的最优解,只有最适合你的工具。建议根据本文的对比表格和购买建议,结合自身需求做出选择。如果预算允许,同时持有 Shadowrocket 和 Loon/Stash 中的一款,可以覆盖绝大多数使用场景。