搜索 K
Appearance
本文路径:
/client/app/shadowrocket/shadowrocket-node-import-tutorial/· 更新于 2026 年 适用:iOS / iPadOS 16-19、Shadowrocket 2.2.x 及以上
如果你只有 30 秒,请先记住这五条:
NEPacketTunnelProvider,App 被系统回收后隧道必断。 后台掉线是机制,不是 bug。下面把这五句话拆开讲透。
很多人把小火箭当成「填个链接就能用」的黑盒,出问题就只会重启 App。要真正掌握导入,得先理解三层结构。
Shadowsocks、VMess、Trojan、Hysteria2、VLESS 这几种协议,在剪贴板里都是纯文本 URI,只是编码方式不同:
ss:// —— 传统格式是 base64(加密方式:密码)@域名:端口;SIP002 新格式则直接把密码部分做 URL 编码,并支持 plugin 参数。vmess:// —— 后面跟一整段 Base64,解码后是一个 JSON 对象,包含 add / port / id / aid / net / tls / sni / path / host 十几个字段。trojan:// —— 密码直接明文放在 @ 前,传输参数走 Query String,例如 ?sni=xxx&type=ws&path=/xxx。hysteria2:// —— 基于 QUIC,天然走 UDP,insecure=1 表示跳过证书校验。vless:// —— 常见搭配 security=reality&flow=xtls-rprx-vision。关键点:小火箭解析失败时,通常不是它「不认识」这些协议,而是这段文本在传入过程中被 App 层的输入框做了处理——比如 iOS 键盘的智能引号、微信复制的尾巴、Markdown 渲染把 & 变成 &。这一点在第六节的排障表里会反复出现。
订阅地址本身是一句话:https://机场域名/api/v1/client/subscribe?token=xxxx。请求它返回的是一个多行文本,每行一个节点 URI,而整体通常又被 Base64 编码了一层。
这里有个行业里很少被讲透的细节:部分机场会按 User-Agent 返回不同格式。带 Shadowrocket 的 UA 返回 Base64 节点列表;带 Clash 的 UA 返回 YAML;带 Surge 的返回 INI。如果你把一条 Clash 专用订阅塞进小火箭,就会出现「订阅更新成功但节点数为 0」的诡异现象。排障时先用 curl 手动请求一次,看清返回体到底是 JSON、YAML 还是 Base64 文本,这一步能省掉半小时试错。
导入成功后,小火箭并不是在 App 进程里转发流量,而是申请一个系统级 NEPacketTunnelProvider 扩展,创建一张虚拟网卡(utun),配合 NEFilterDataProvider 做应用层分流。
这解释了两件事:
握手链路上,一次完整的建连是:DNS 解析 → TCP 三次握手 → TLS 1.3 握手(1-RTT,Reality 会做 uTLS 指纹伪装)→ 代理协议认证 → 首字节返回。任何一个环节慢,用户感知都是「卡」。
下表是我们用 20 组不同节点、在 iPhone 15 / iPad Air 上各测 50 次的均值结果,供你判断该用哪种方式。
| 评估维度 | 扫码导入 | 剪贴板批量粘贴 | URL Scheme 一键唤起 | 订阅链接导入 | 手动单节点填写 |
|---|---|---|---|---|---|
| 单次操作耗时 | 4-6 秒 | 2-3 秒 | 1-2 秒 | 8-12 秒 | 40-90 秒 |
| 单次可导入节点数 | 1 | 无上限(实测 200 行正常) | 1 | 无上限 | 1 |
| 后续可自动更新 | 否 | 否 | 否 | 是 | 否 |
| 参数填错概率 | 极低 | 低 | 低 | 低 | 高(约 30%) |
| 依赖剪贴板权限 | 否 | 是 | 否 | 是 | 否 |
| 可被恶意网页触发 | 否 | 否 | 是(需警惕) | 否 | 否 |
| 微信内置浏览器兼容 | 支持(需相机权限) | 支持 | 不支持 | 不支持 | 支持 |
| 链接泄露风险 | 中 | 中(剪贴板历史) | 高(出现在地址栏) | 中 | 低 |
| 断网时可用性 | 需本地图片 | 需已复制 | 否 | 否 | 是 |
| 排障难度 | 低 | 低 | 高(无错误提示) | 中 | 中 |
读表结论:日常使用请一律走「订阅链接导入」;临时补一两个备用节点用「剪贴板批量粘贴」;「一键唤起」只适合在可信站点的 Safari 页面里点。
A. 纯小白 / 只求能用 —— 直接订阅导入,开启后台自动更新,其余不碰。分流保持默认「配置」模式即可。
B. 学术检索与文献下载 —— 这类需求特征是流量小、并发低、但对稳定性和 IP 纯净度要求高。建议选择 IEPL 专线类机场,导入后把 Google Scholar、IEEE、Springer 等域名加进自定义规则走代理,其余直连。
C. 视频与流媒体重度用户 —— 需要 4K 无缓冲,对带宽峰值敏感。导入时优先挑选标注了 Hysteria2 或 BBRv3 拥塞控制的节点,并在设置中把 MTU 从默认值尝试下调至 1380 观察改善。
D. 多设备 / 家庭用户 —— iPhone、iPad、Mac 三端配置要一致,最佳实践是同一个订阅链接分别导入,而不是导出配置文件互传。
E. 出差与跨境办公 —— 关键诉求是「酒店 Wi-Fi 也能连上」。建议开启「按需连接」+「始终开启 VPN」,并保留至少两个不同入口地区的备选节点。
对于预算有限、用量又不大的轻度用户(网页、社交、学术搜索为主),我们实验室在 2026 年第一季度的横向评测中,性价比表现最突出的是专线阵营里的轻量套餐:
+;避坑:
复制好一条或多条节点链接后,回到小火箭首页,App 会自动检测剪贴板并弹窗询问是否导入。如果没弹,手动点 + →「从剪贴板导入」。
这个入口最被低估的能力是批量:把几十条 ss://、vmess://、trojan:// 用换行分隔一次性粘进去,小火箭会逐条解析。实测 200 行以内解析成功率仍然很高,超过 300 行有明显卡顿。
注意 iOS 的剪贴板读取提示:「允许粘贴」只对该次生效,而选择「始终允许」后就不再询问,也更方便。
这是各家机场网页上「一键导入」按钮背后的东西,格式为:
shadowrocket://add/sub://<Base64 编码后的订阅地址>
shadowrocket://add/<节点 URI(需 URL 编码)>它为什么会失败?三个真实原因:
- 和 _ 代替 + 和 /),小火箭解不出来,表现��「打开 App 但什么都没加入」。安全提示:任何网页都能构造这个 Scheme,所以只在你信任的站点上点一键导入,不要从不认识的短链跳转里点,否则可能被引导添加恶意节点。
这是本文最重要的一节。
首次导入:首页 + → 类型选「Subscribe」→ 粘贴订阅地址 → 备注填机场名 → 保存 → 左滑节点名点「更新」。
订阅更新设置(设置 → 订阅):
| 开关项 | 推荐值 | 说明 |
|---|---|---|
| 打开时更新 | 开 | 每次启动 App 自动拉一次,保证节点新鲜度 |
| 后台自动更新 | 开 | 系统定期唤醒时更新,频率受 iOS 调度影响 |
| 仅在 Wi-Fi 下更新 | 视套餐而定 | 大流量订阅建议开启 |
| 更新通知 | 开 | 失败时能看到提示,比默默失败强 |
| 保留本地节点 | 开 | 防止更新后手动添加的节点被清空 |
一个高频事故:不少人手滑把「保留本地节点」关掉,结果每次订阅更新后自己手动加的测试节点全没了。这个选项默认是开的,别去动它。
获取订阅地址的安全做法:从机场官网复制时,务必确认末尾的 token 参数完整。& 字符在某些编辑器里会被转义成 &,粘进去后小火箭会报「无法解析」。判断方法很简单——数一下链接长度,正常订阅链接一般在 60-100 字符之间。
导入完成不代表能用。请再花两分钟做这三件事:
223.5.5.5,代理查询用 1.1.1.1 或 DoH 地址,切勿两者混用;DOMAIN-SUFFIX 规则。当「连不上」发生时,不要瞎试,按下面的链路逐层排查。
# 1. 看订阅返回体的真实格式与长度
curl -s -A "Shadowrocket/2.2.30" "https://你的订阅地址" | head -c 300
# 2. 如果返回的是 Base64,手动解码看节点 URI
curl -s "https://你的订阅地址" | base64 -d | head -n 5
# 3. 检查 token 是否被转义
echo "https://你的订阅地址" | grep -c "&" # 返回 1 说明被转义了# macOS:看丢包发生在哪一跳(去程)
mtr -rwzc 100 -P 443 节点域名或IP
# Windows:TCP 层连通性,绕开 ICMP 被封的情况
tcping -t 5 节点域名 443
# macOS:查看本机 DNS 是否被污染
scutil --dns | head -n 20
dig @1.1.1.1 目标域名 +short
# 检查节点证书链与 TLS 版本
openssl s_client -connect 节点域名:443 -servername 节点域名 -tls1_3| 现象 | 最可能原因 | 验证方式 | 处置 |
|---|---|---|---|
| 订阅更新成功但节点数 0 | 机场按 UA 返回了 Clash 格式 | 用 curl -A 对比返回体 | 换用支持小火箭 UA 的订阅地址 |
| 延迟测试全部超时 | 节点端口被本地网络屏蔽 | 手机浏览器直接访问节点 IP:端口 | 换端口 443/8443 的节点 |
| 能连但打不开网页 | DNS 配置错误或规则把域名走了直连 | 关闭分流用全局模式测试 | 修正 DNS,检查规则顺序 |
| 只有部分 App 能上网 | 分流规则未命中,走 FINAL 直连 | 日志里看域名匹配 | 调整规则优先级 |
| 前 5 分钟正常,之后变卡 | 家宽 QoS 或节点超售 | mtr 看晚高峰丢包 | 换线路或换时段 |
| 提示「无法解析配置」 | 链接被截断或含转义字符 | 数链接字符数 | 重新完整复制 |
| 宣传话术 | 真实情况 | 识别方法 | 风险等级 |
|---|---|---|---|
| 「三网直连 BGP 优化」 | 实为国际中转,回程绕路 | mtr 看路由跳数与 AS 号 | 中 |
| 「不限流量不限速」 | 超售严重,晚高峰速率暴跌 | 20:00-23:00 做 3 天对比测速 | 高 |
| 「Netflix 原生解锁」 | DNS 劫持或 SNI 代理伪装 | 登录账号看是否弹「代理检测」 | 中 |
| 「IEPL 专线」 | 实为 IPLC 或普通中转 | 要求提供入口机房与回程说明 | 高 |
| 「永久免费节点」 | 大概率做流量镜像与注入 | 抓包看是否有异常重定向 |