Shadowrocket(小火箭)入门教程与规则分流
iOS 经典网络工具 Shadowrocket 新手全方位指南。从正版获取渠道、节点/订阅导入,到配置(Config)规则模式与分流原理深入解析。
Shadowrocket(小火箭)iOS 入门安装、订阅导入与配置分流全解
Shadowrocket(小火箭)入门教程与规则分流
Answer Block
Shadowrocket 是 iOS 平台上一款基于 Apple NetworkExtension 框架构建的轻量级规则化网络代理客户端。它本身不提供任何节点或订阅服务,仅作为本地代理内核与规则引擎的容器,通过导入用户自备的代理配置(如 Shadowsocks、VMess、VLESS、Trojan、Hysteria 等协议)实现流量的按规则转发。其核心能力在于“规则分流”:依据内置或用户导入的规则列表(Rule Set),将国内域名/IP 判定为直连(Direct),将海外域名/IP 判定为代理(Proxy),从而在保证本地访问速度的同时完成跨境访问。安装必须通过非中国大陆区 Apple ID 在 App Store 购买正版,任何“免费下载”“企业签名版”“TestFlight 共享版”均存在窃取 Apple ID、注入恶意配置、劫持流量的风险。Shadowrocket 的工作模式分为配置模式(Config)、代理模式(Proxy)与直连模式(Direct),其中配置模式是规则分流的实际执行形态。
一、Shadowrocket 是什么:从 NetworkExtension 说起
要理解 Shadowrocket,必须先理解 iOS 的网络扩展机制。
iOS 从 9.0 开始引入 NetworkExtension.framework,允许第三方 App 创建两类与网络相关的系统级扩展:
- NEPacketTunnelProvider:数据包隧道提供者,可接管设备的三层/四层流量,构建虚拟网卡(utun),这是所有代理类 App 的技术底座。
- NEFilterDataProvider:内容过滤提供者,用于按流做拦截或审计。
Shadowrocket 使用的是前者。当你在 App 内开启一个配置后,系统会弹出“Shadowrocket 想添加 VPN 配置”的授权框,这实际上是在向系统注册一个 Personal VPN Profile。授权后,系统会创建一个 utun 虚拟接口,所有符合条件的流量被路由进这个接口,再由 Shadowrocket 内置的代理内核(早期基于 shadowsocks-libev 与自研规则引擎,后续版本支持多协议)进行处理。
关键点有三:
- 它不是 VPN 服务商。Shadowrocket 只是“管道工”,管道另一头连哪里,完全取决于你导入的节点。
- 它没有后台常驻权限。iOS 不允许第三方 App 长期后台运行,NetworkExtension 是系统托管的扩展进程,因此代理能在锁屏、切换 App 时保持,但会被系统在低内存时回收。
- 它受系统 VPN 槽位限制。iOS 同一时间只允许一个 Personal VPN 处于连接状态,这也是为什么 Shadowrocket 与其它同类 App 不能同时开启。
理解了这三点,后面所有的“导入”“分流”“模式”才有落脚点。
二、正版安装与安全防伪
2.1 为什么必须用非国区 Apple ID
Shadowrocket 从未在中国大陆区 App Store 上架。你在国区搜索到的“小火箭”“Shadowrocket 加速器”“Shadowrocket Pro”全部是仿冒品。正版唯一获取途径是:使用非中国大陆区(如美区、港区、日区等)的 Apple ID,在 App Store 搜索 “Shadowrocket”,开发者显示为 Shadow Launch Technology Limited,售价通常为 2.99 美元(各区定价略有差异,且会随汇率调整)。
2.2 山寨版本的典型特征与危害
| 特征 | 说明 |
|---|---|
| 免费或极低价 | 正版是付费买断制,任何“免费领”“共享账号下载”都不可信 |
| 企业签名分发 | 通过描述文件安装的版本,证书可被随时吊销,且可读取你的全部网络流量 |
| TestFlight 共享 | 正版不使用 TestFlight 分发,TestFlight 版本可被作者随时替换为恶意构建 |
| 图标近似但名称不同 | 如 “Shadowrocket - Proxy” “ShadowRocket VPN” 等 |
| 要求输入 Apple ID 密码 | 正版购买只需在 App Store 内验证,绝不会在 App 内二次索要 |
山寨版本最直接的危害是:你的所有代理流量、订阅链接、甚至部分明文凭据都会经过攻击者控制的服务器。订阅链接一旦泄露,等于把你的节点资产拱手让人。
2.3 购买与安装步骤
- 准备一个非国区 Apple ID(自行注册,注意账单地址与区服一致)。
- 在 App Store 退出当前账号,登录该非国区账号。
- 搜索 “Shadowrocket”,核对开发者名称与售价。
- 购买并下载。购买后该 Apple ID 永久拥有该 App,可重复下载。
- 下载完成后可切回原 Apple ID,App 仍可正常使用与更新(更新时需再次登录购买账号)。
三、订阅与节点导入方式
Shadowrocket 支持多种导入途径,按使用频率排序如下。
3.1 剪贴板导入(最常用)
复制一条节点链接(如 ss://、vmess://、vless://、trojan://、hysteria2://)或一条订阅链接,打开 Shadowrocket,它会自动检测剪贴板并弹窗提示“是否导入”。确认后节点或订阅即被添加。
3.2 二维码扫描
在首页右上角点击“扫描二维码”,对准节点或订阅的二维码即可。适合在电脑上生成二维码、手机扫码的跨设备场景。
3.3 HTTPS 订阅链接管理
这是最推荐的方式,因为节点变更时只需在服务端更新,客户端下拉刷新即可同步。
操作路径:首页 → 右上角 “+” → 类型选择 Subscribe → 粘贴 URL → 保存。
订阅链接通常形如:
https://example.com/api/v1/client/subscribe?token=xxxxxxxx
保存后,在首页对应订阅条目上左滑 → 更新,即可拉取最新节点列表。Shadowrocket 支持设置“自动更新”,可在订阅详情里开启,间隔通常为 1 天。
3.4 手动添加单节点
首页 “+” → 类型选择对应协议 → 逐项填写服务器、端口、密码、UUID、传输方式(ws/grpc/tcp)、TLS 等参数。适合调试或临时使用。
3.5 配置文件导入
如果你拿到的是 .conf 或 .sgmodule 文件(例如某些规则集或模块),可通过 AirDrop、文件 App 或 URL 导入。Shadowrocket 会自动识别并放入“配置”或“模块”列表。
四、分流模式深度对比
Shadowrocket 首页底部有三个全局开关:全局路由(Global Routing) 下的 配置 / 代理 / 直连。很多人误以为这只是“开关档位”,实际上三者对应完全不同的流量处理路径。
4.1 直连模式(Direct)
技术原理:不启动 NetworkExtension 隧道,或启动后所有流量直接走系统默认路由。DNS 由系统 resolver 处理,不经过任何代理内核。
适用场景:临时关闭代理、排查“是不是代理导致的问题”。
注意:直连模式下,即使你配置了一堆规则,也全部不生效。
4.2 代理模式(Proxy)
技术原理:所有流量(除少数系统保留流量)无条件送入代理内核,再由内核转发到当前选中的节点。不做任何域名/IP 判定。
适用场景:需要全局代理的极端场景,或调试节点连通性。
代价:国内网站也走海外节点,延迟高、速度慢,且部分国内服务会因海外 IP 触发风控。
4.3 配置模式(Config)——规则分流的实际执行形态
这是 Shadowrocket 的核心价值所在。
技术原理:
- 流量进入 utun 后,代理内核读取当前选中的配置文件(Config)。
- 配置文件由若干段组成,核心是
[Rule]段,每条规则形如:DOMAIN-SUFFIX,qq.com,DIRECT DOMAIN-SUFFIX,google.com,PROXY IP-CIDR,10.0.0.0/8,DIRECT GEOIP,CN,DIRECT FINAL,PROXY - 内核按从上到下的顺序匹配。命中
DIRECT的流量走系统默认路由直出;命中PROXY的流量送入节点;命中REJECT的流量被丢弃(用于去广告)。 FINAL是兜底规则,通常设为PROXY或DIRECT,取决于你的使用习惯。
DNS 处理:配置模式通常配合 [General] 段中的 dns-server 与 fallback-dns-server 使用。国内域名用国内 DNS 解析,海外域名用加密 DNS(如 DoH/DoT)解析,避免 DNS 污染导致规则误判。
规则集(Rule Set):Shadowrocket 支持引用远程规则集,例如:
RULE-SET,https://example.com/rules/ads.list,REJECT
RULE-SET,https://example.com/rules/cn.list,DIRECT
这样规则可以集中维护,不必写死在本地配置里。
典型分流逻辑:
- 国内域名/IP → DIRECT(直连,走本地宽带)
- 海外域名/IP → PROXY(走节点)
- 广告域名 → REJECT(丢弃)
- 未匹配 → FINAL(兜底)
为什么配置模式是默认推荐:它在“访问速度”与“跨境能力”之间取得平衡。国内流量不绕路,海外流量走代理,DNS 污染被规避,广告被拦截。代价是规则列表需要维护,且首次匹配有一定开销(现代内核已优化到微秒级,实际无感)。
五、跨平台/跨终端操作要点
虽然 Shadowrocket 是 iOS 独占,但规则与订阅是跨平台通用的。以下操作在其他终端上逻辑一致:
- Android:使用支持 VpnService 的客户端(如 Clash Meta for Android、v2rayNG、Sing-box),导入同一订阅链接,规则集可复用。
- Windows/macOS:Clash Verge、Mihomo Party、Sing-box 等,导入订阅后同样支持 Rule 模式。
- 路由器:OpenWrt 上的 OpenClash、PassWall,可将订阅与规则下发到全屋设备。
关键差异在于:iOS 的 NetworkExtension 是单隧道模型,Android 的 VpnService 支持分应用代理(可指定哪些 App 走代理),桌面端则通常支持TUN 模式与系统代理模式两种。理解这些差异,才能在多设备间保持一致的分流体验。
六、5 个高价值长尾 FAQ
H3:Shadowrocket 的配置模式和代理模式到底差在哪?为什么我开了配置模式国内网站还是走了代理?
配置模式与代理模式的本质区别在于是否执行规则匹配。代理模式是无条件全局转发,配置模式是先匹配 [Rule] 段再决定走向。如果你在配置模式下发现国内网站仍走代理,通常有三个原因:
第一,当前选中的配置文件里 FINAL 规则被设为了 PROXY,而你的国内域名没有被前面的 DIRECT 规则命中。解决方法是检查规则列表是否包含 GEOIP,CN,DIRECT 或 RULE-SET,cn.list,DIRECT。
第二,DNS 解析被污染。如果国内域名被解析成了一个海外 IP,那么 GEOIP,CN 判定就会失败,流量被送入 FINAL。解决方法是在 [General] 段配置国内 DNS 作为主解析,并开启 fallback 加密 DNS。
第三,规则顺序错误。规则是从上到下匹配的,如果一条宽泛的 DOMAIN-KEYWORD 代理规则排在国内规则之前,就会抢先命中。解决方法是把精确规则放前面,宽泛规则放后面,FINAL 永远在最后。
理解这三点,基本能解决 90% 的“分流不生效”问题。
H3:订阅链接导入后节点全部超时,是 Shadowrocket 的问题还是节点的问题?
先做分层排查,不要一上来就怀疑 App。
第一层:确认订阅是否成功拉取。在订阅条目上左滑更新,看是否提示“更新成功”以及节点数量是否变化。如果更新失败,说明订阅 URL 本身不可达(可能被墙、可能 token 失效),此时与 Shadowrocket 无关。
第二层:确认节点参数是否正确。部分订阅返回的节点依赖特定传输层(如 ws + TLS + SNI),如果服务端配置变更而客户端未更新,就会超时。手动点开一个节点,核对端口、UUID、传输方式、SNI 是否与订阅描述一致。
第三层:确认本地网络是否放行。某些企业 Wi-Fi、校园网会封锁非标准端口(如 443 以外的端口),此时换 4G/5G 测试即可判断。
第四层:确认是否被系统 VPN 槽位冲突。iOS 同一时间只允许一个 Personal VPN,如果你同时装了其它代理 App 并处于连接状态,Shadowrocket 的隧道可能无法正常建立。关闭其它 VPN 再试。
第五层:确认 Shadowrocket 版本。旧版本可能不支持新协议(如 Hysteria2、VLESS Reality),更新到最新版再试。
如果五层都排查完仍超时,基本可以判定是节点服务端问题,而非客户端问题。
H3:Shadowrocket 的规则集(Rule Set)和配置文件(Config)是什么关系?我该用哪个?
两者是“零件”与“整机”的关系。
配置文件(Config) 是一个完整的 .conf 文本,包含 [General]、[Proxy]、[Rule]、[Host] 等段落,定义了 DNS、代理组、规则、Host 映射等全部行为。它是 Shadowrocket 实际加载的对象,同一时间只有一个配置生效。
规则集(Rule Set) 是一段独立的规则列表,通常以 .list 或 .yaml 形式托管在远程 URL 上,只包含规则条目,不含 DNS 和代理定义。它必须被配置文件通过 RULE-SET,<url>,<policy> 引用才会生效。
该用哪个:如果你只是普通用户,直接用别人维护好的配置文件即可,规则集是配置作者的事。如果你想自己维护规则,建议采用“薄配置 + 远程规则集”的结构:配置文件里只写 DNS、代理组和几条 RULE-SET 引用,具体规则放在远程 .list 里,这样规则更新时不必改配置文件,只需服务端更新 .list,客户端下拉刷新即可。
这种结构的另一个好处是:同一份规则集可以同时被 iOS 的 Shadowrocket、Android 的 Clash Meta、桌面的 Mihomo 引用,实现跨平台规则统一。
H3:为什么 Shadowrocket 开启后,某些 App(如银行、支付、流媒体)会报错或无法使用?
这是规则分流与 App 自身风控共同作用的结果,常见于三类场景。
第一类:IP 风控。银行、支付类 App 会检测出口 IP 是否与账号注册地一致。如果你把这些 App 的流量误送进了海外节点,就会触发风控。解决方法是在规则里为这些 App 的域名显式添加 DIRECT,例如 DOMAIN-SUFFIX,icbc.com.cn,DIRECT。更彻底的方式是使用 iOS 的“分应用代理”能力——但 Shadowrocket 本身不直接提供按 App 分流(这是 Android VpnService 的特性),iOS 上只能通过域名/IP 规则间接实现。
第二类:证书校验。部分 App 使用证书绑定(Certificate Pinning),如果代理内核做了 MITM(中间人解密),证书链就会断裂。Shadowrocket 默认不做 MITM,但如果你开启了 HTTPS 解密模块,就会触发这个问题。解决方法是关闭解密,或为该 App 的域名添加 DIRECT。
第三类:流媒体区域检测。Netflix、Disney+ 等会检测出口 IP 是否属于数据中心。即使你的节点在目标区域,也可能因为 IP 被标记为机房而无法播放。这属于节点质量问题,与 Shadowrocket 无关,只能更换节点。
核心原则:风控敏感类 App 一律直连,流媒体类 App 单独指定节点,普通浏览走规则分流。
H3:Shadowrocket 的配置文件和模块(Module)有什么区别?模块能做什么配置文件做不到的事?
配置文件(Config)和模块(Module)都是 Shadowrocket 的配置载体,但作用层级不同。
配置文件是全局的,定义 DNS、代理、规则、Host 等核心行为,同一时间只有一个生效。它决定“流量怎么走”。
模块是叠加式的,可以在不替换主配置文件的前提下,向当前配置注入额外的规则、Host 映射、URL 重写等。多个模块可以同时启用,按顺序叠加。它决定“在现有走向基础上额外做什么”。
模块能做的典型事情包括:
- 去广告:注入
REJECT规则,拦截特定域名。 - URL 重写:把某个 App 的请求重定向到另一个地址(常用于解锁某些功能)。
- Host 映射:把域名强制解析到指定 IP。
- 脚本注入:部分模块支持 JavaScript 脚本,在请求/响应阶段做处理。
配置文件做不到的是“叠加”与“热插拔”。你不可能为了加一条去广告规则就替换整个配置文件,但可以启用一个模块。这就是模块存在的意义。
需要注意的是,模块的 URL 重写与脚本能力如果被恶意利用,可以窃取你的请求内容。因此只启用来源可信的模块,不要随意导入来路不明的 .sgmodule 文件。这与第二部分强调的“正版安装”是同一套安全逻辑:Shadowrocket 本身是中性的管道工具,风险永远来自你导入的内容。