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-setJSON 校验、核心日志

选择流程

  1. 打开你的服务端或订阅管理页,看是否提供 iOS、Shadowrocket、Stash/Clash、sing-box 等导出。
  2. 如果只有单条节点或常见订阅,先考虑 Shadowrocket。
  3. 如果桌面端用 Clash Verge Rev / Mihomo Party,并希望策略组名称一致,优先看 Stash。
  4. 如果你在路由器、服务器或桌面已经使用 sing-box JSON,iOS sing-box 更便于复用概念。
  5. 导入后不要只看 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。

一台手机需要装多个客户端吗? 通常不需要。保留一个主力客户端,另一个只用于排错或迁移测试即可。