TL;DR:Shadowrocket 适合快速导入和轻量规则;Stash 适合把 Clash/Mihomo 的策略组、规则和覆写带到 iOS;sing-box 适合已经使用 sing-box JSON 的用户。先看订阅导出格式,再选客户端,不要反过来用客户端强行吃不匹配的配置。
适用场景与不适用场景
适用:
- iPhone / iPad 上不知道选 Shadowrocket、Stash 还是 sing-box。
- 你已有订阅,但不确定应该选哪个导出格式。
- 你希望手机、电脑、软路由的规则逻辑尽量一致。
不适用:
- 你需要 Android 或 Windows 客户端教程。
- 你要写完整 sing-box 服务端配置。
- 你只想比较 App Store 价格,不关心格式和排错。
三款客户端对比
| 客户端 | 更适合谁 | 配置重点 | 排错入口 |
|---|---|---|---|
| Shadowrocket | 快速导入节点、轻量规则用户 | 节点、远程文件、基础规则 | 连接日志、节点测试 |
| Stash | 需要 Clash/Mihomo 风格策略组的人 | YAML、策略组、规则、覆写 | 日志、策略组、MITM/覆写状态 |
| sing-box | 已有 sing-box JSON 工作流的人 | outbounds、route、dns、rule-set | JSON 校验、核心日志 |
选择流程
- 打开你的服务端或订阅管理页,看是否提供 iOS、Shadowrocket、Stash/Clash、sing-box 等导出。
- 如果只有单条节点或常见订阅,先考虑 Shadowrocket。
- 如果桌面端用 Clash Verge Rev / Mihomo Party,并希望策略组名称一致,优先看 Stash。
- 如果你在路由器、服务器或桌面已经使用 sing-box JSON,iOS sing-box 更便于复用概念。
- 导入后不要只看 VPN 图标,要做样本访问和日志验证。
常见错误定位表
| 表现 | 更可能原因 | 先检查 |
|---|---|---|
| 导入后没有节点 | 订阅格式不匹配 | 服务端是否给了当前客户端格式 |
| VPN 图标亮但网页打不开 | DNS、规则或出站未命中 | 客户端日志和策略组状态 |
| 某些 App 不走预期出口 | iOS 网络扩展接管但规则未命中 | 域名规则和最终规则 |
| Stash YAML 报错 | 缩进、字段或覆写冲突 | 错误行号附近 |
| sing-box 启动失败 | JSON 语法或字段版本不匹配 | 配置校验和官方文档 |
验证是否成功
- 打开客户端日志,访问一个国内站点、一个海外服务和一个内网地址。
- Shadowrocket 看连接记录是否出现目标域名。
- Stash 看策略组是否按规则切换。
- sing-box 看 route 与 outbound 命中,不只看 JSON 能保存。
- 切换 Wi-Fi 与蜂窝网络各测一次,确认不是某个网络环境单独异常。
相关阅读
中文长尾问题怎么落到配置?
代理客户端相关搜索往往很直接,比如「Clash 订阅更新失败」「节点全红」「Sing-box JSON 导入不了」「OpenWrt 透明代理没网」。这些词可以保留,但正文要把它们拆成配置、订阅、DNS、规则分流和系统代理几类问题,避免把所有故障都归因到线路。
| 中文长尾说法 | 优先检查 | 验证方式 |
|---|---|---|
| 订阅导入失败 | URL、User-Agent、证书、订阅格式 | 浏览器打开订阅地址,看客户端日志 |
| 节点全红 | 订阅是否过期、DNS、时间、出口端口 | 换同订阅另一个客户端对照 |
| 开了代理没网 | 系统代理、TUN、路由表、DNS | 先测 IP,再测域名 |
| 电视和 NAS 不走代理 | 网关、旁路由、DHCP、分流规则 | 用同一域名做设备对照 |
这种写法更贴近中文用户搜索习惯,也更容易把配套订阅线路放进真实排查场景里,而不是生硬插入广告。
FAQ
Shadowrocket 可以导入 Clash 配置吗? 取决于导出内容和客户端支持范围。更稳妥的做法是让服务端提供 Shadowrocket 专用导出,而不是直接粘 Clash 完整 YAML。
Stash 是不是 iOS 上的 Clash Verge Rev? 不是。它们都能围绕 Clash/Mihomo 配置工作,但平台、界面和实现不同,不能把桌面按钮教程照搬到 Stash。
sing-box iOS 为什么导入后提示配置错误? 多数是 JSON 语法、字段版本或 rule-set 路径不匹配。先用最小配置启动,再逐步加 DNS 和 route。
一台手机需要装多个客户端吗? 通常不需要。保留一个主力客户端,另一个只用于排错或迁移测试即可。