导读:
小火箭(Shadowrocket)× 快捷指令(Shortcuts)深度自动化指南:打造iOS智能网络工作流
在iOS生态中,Shadowrocket(小火箭)作为专业的网络代理工具,与系统级快捷指令(Shortcuts)的结合,能够突破"手动切换节点、被动应对网络环境"的局限,实现场景感知、条件触发、智能调度的网络自动化体验。
本指南将从URL Scheme协议、自动化触发器、实战工作流三个维度,构建一套完整的智能网络管理体系。
基础准备与核心协议
1 环境要求
- iOS版本:iOS 14.0+(支持自动化触发)
- Shadowrocket版本:2.2.0+(完整URL Scheme支持)
- 权限配置:设置 → 快捷指令 → 开启"允许不受信任的快捷指令"
2 小火箭URL Scheme协议详解
小火箭支持以下核心指令格式,这是构建自动化的基础:
// 基础控制 shadowrocket://toggle // 切换连接状态(开/关) shadowrocket://connect // 强制连接 shadowrocket://disconnect // 强制断开 // 节点切换(需配置特定节点) shadowrocket://switch?host=服务器地址&port=端口&password=密码&method=加密方法 // 策略组切换(高级) shadowrocket://policy?group=策略组名&policy=节点名
重要提示:涉及敏感参数的URL Scheme建议通过Base64编码或配合快捷指令的"词典"功能动态构建,避免明文存储。
五大实战场景配置
基于地理位置的智能节点切换
需求:到达公司自动切换办公节点,回家切换家庭宽带节点,外出使用高速节点。
配置步骤:
-
创建个人自动化 → 选择"到达/离开"地点
-
添加操作:
- 操作1:获取当前WiFi名称(过滤条件:若WiFi名为"Office-5G")
- 操作2:打开URL →
shadowrocket://policy?group=Auto&policy=Office_Node - 操作3:显示通知"已切换至办公网络"
-
蜂窝网络兜底:
- 添加"离开"触发器,当离开家庭位置且连接蜂窝数据时
- 执行:
shadowrocket://policy?group=Auto&policy=HK-HighSpeed
优化技巧:配合"获取当前网络详情"判断信号强度,若4G信号<2格,自动切换至延迟更低的节点。
定时任务与专注模式联动
需求:深夜自动切换至省电节点,工作时间启用分流模式,睡眠时段完全断开。
配置方案:
深夜省电模式(22:00-07:00):
- 触发:特定时间(每天22:00)
- 动作:
- 运行JavaScript(通过小火箭API获取当前流量)
- 若当日流量>10GB,执行
shadowrocket://policy?group=Auto&policy=SaveTraffic_Node - 开启iOS低电量模式(系统操作)
专注模式深度集成:
- 工作专注模式启动时 → 切换至"Work"策略组(屏蔽娱乐网站但保留开发工具代理)
- 个人专注模式 → 切换至"Global"策略组
- 睡眠专注模式 → 执行
shadowrocket://disconnect并开启飞行模式(可选)
一键网络诊断与智能选优
需求:自动测试多个节点延迟,选择最优节点并连接。
快捷指令构建逻辑:
// 在快捷指令的"运行JavaScript"中使用
var nodes = ["Node_A", "Node_B", "Node_C"];
var bestNode = "";
var minDelay = 9999;
for (var node of nodes) {
// 通过小火箭的HTTP API获取延迟(需开启小火箭API访问)
var url = "http://127.0.0.1:9090/proxies/" + encodeURIComponent(node) + "/delay?timeout=5000";
var req = new XMLHttpRequest();
req.open("GET", url, false);
req.send();
if (req.status == 200) {
var delay = JSON.parse(req.responseText).delay;
if (delay < minDelay) {
minDelay = delay;
bestNode = node;
}
}
}
// 返回最优节点名称供后续URL Scheme使用
completion(bestNode);
后续操作:
- 使用"打开URL":
shadowrocket://policy?group=Auto&policy=[最优节点变量] - 添加震动反馈与语音播报"已切换至延迟XX毫秒的最优节点"
流量监控与限额提醒
需求:实时监控流量使用,接近套餐限额时自动切换至备用节点或断开连接。
实现方案:
-
获取流量数据:
- 通过小火箭的
http://127.0.0.1:9090/trafficAPI获取实时流量统计 - 或使用快捷指令的"获取文件"读取小火箭的本地日志(需开启iCloud同步)
- 通过小火箭的
-
逻辑判断:
- 若本月流量 > 80%套餐限额 → 发送通知并切换至"Limited"节点(低带宽模式)
- 若流量 > 95% → 执行
shadowrocket://disconnect并弹窗提醒
-
自动化触发:
- 设置每小时自动运行一次
- 或每次打开特定App(如YouTube、Netflix)前检查流量
跨设备状态同步(高级)
需求:iPhone切换节点后,自动同步至iPad或Mac(需配合其他工具)。
技术路线:
- iPhone执行切换后,通过快捷指令的"发送消息"至Telegram/微信文件传输助手
- iPad端设置快捷指令监控剪贴板或接收特定消息,触发本地小火箭切换
- 或使用iCloud Drive作为状态标记:iPhone写入节点名称至特定文件,iPad通过"获取文件"读取并执行对应URL Scheme
进阶技巧与故障排除
1 静默运行优化
为避免每次自动化运行时弹出通知干扰:
- 在快捷指令末尾添加"退出快捷指令"操作
- 系统设置 → 屏幕使用时间 → 查看所有活动 → 快捷指令 → 关闭通知(iOS 15+方法可能变化)
2 错误处理机制
在关键节点切换前添加"获取网络状态":
- 若当前无网络连接,延迟30秒后重试
- 若切换失败(通过检测小火箭VPN状态),回退至默认节点并发送错误日志
3 与Scriptable联动
对于复杂逻辑(如基于Ping测试的智能路由),可在Scriptable中编写JavaScript,通过快捷指令调用:
// Scriptable代码示例
let widget = new ListWidget();
let req = new Request("http://127.0.0.1:9090/proxies");
let json = await req.loadJSON();
// 处理节点数据...
Script.setShortcutOutput(bestNode);
4 常见问题解决
Q:URL Scheme执行无反应?
- 检查小火箭是否后台运行(iOS限制,建议保持后台刷新开启)
- 确认节点名称URL编码正确(含空格或特殊字符需encodeURIComponent)
Q:自动化触发延迟严重?
- iOS的"到达/离开"定位触发有5-10分钟延迟属正常
- 改用"连接至特定WiFi"触发更即时
Q:API访问被拒绝(127.0.0.1:9090)?
- 小火箭设置 → 开启"允许来自局域网的访问"
- 快捷指令中需先"获取URL内容"再解析JSON
安全与隐私建议
- 敏感信息保护:避免在快捷指令中硬编码服务器密码,建议使用iCloud钥匙串配合"获取密码"操作
- 自动化审计:定期检查"自动化"列表,删除不再使用的触发器,防止位置信息过度收集
- 网络隔离:工作流涉及API调用时,确保
0.0.1:9090仅本地可访问,公共WiFi环境下慎用自动连接功能
通过小火箭与快捷指令的深度整合,iOS设备能够实现从"人适应网络"到"网络适应人"的转变,无论是基于地理位置的智能分流、基于时间的策略调度,还是基于流量消耗的自我保护,这套自动化体系都能显著提升网络使用体验。
建议从简单的"连接家庭WiFi自动切换节点"开始,逐步构建复杂的条件判断网络,最终形成个性化的iOS智能网络中枢。
本文基于Shadowrocket 2.2.45及iOS 17系统测试,不同版本功能可能存在差异。