切换节点

Shadowrocket(小火箭)

Shadowrocket 是 iOS/iPadOS 平台最成熟的网络代理客户端,基于系统级 VPN 框架开发,提供完整的代理解决方案,作为 iOS 首选代理工具,其核心优势在于:

  • 全协议支持:兼容 Shadowsocks、VMess、Trojan、Hysteria、Reality 等主流协议
  • 智能分流系统:基于域名、IP、GEOIP 的精细化路由规则,支持自定义脚本
  • MitM 与重写:支持 HTTPS 解密、请求/响应重写、JavaScript 脚本注入
  • 流量分析:实时网络监控、连接日志、流量统计图表
  • 系统级集成:通过 VPN 扩展实现全局代理,支持 Widget 与快捷指令自动化

操作教程:小火箭快捷指令自动化配置

前置准备与权限配置

确保设备已安装 Shadowrocket(需美区 Apple ID 购买)和快捷指令 App。

系统要求:
  iOS版本: ">= 14.0"
  小火箭版本: ">= 2.2.30"
  权限设置: 
    - VPN配置权限: 已授权
    - 本地网络权限: 已开启
    - URL Scheme: 已启用

进入 设置 > 快捷指令 > 高级,开启"允许运行脚本"和"不确认直接运行"。

获取小火箭 URL Scheme 参数

Shadowrocket 支持通过 URL Scheme 进行外部控制,基础格式如下:

shadowrocket://{action}?{parameters}

常用控制指令:


# 打开/关闭代理
shadowrocket://toggle
shadowrocket://connect
shadowrocket://disconnect
# 切换指定配置
shadowrocket://config?url={订阅链接编码}
# 打开特定策略组
shadowrocket://route?policy={策略组名}

创建基础自动化快捷指令

步骤 A:创建切换节点指令

  1. 打开"快捷指令"App,点击右上角 新建
  2. 添加操作:网页 > 打开 URL
  3. 输入 URL(示例为切换到指定节点):
// 编码后的订阅配置或节点信息
let nodeConfig = "shadowrocket://switch?host=server.example.com&port=443&password=base64encoded&method=aes-256-gcm";

步骤 B:创建代理开关指令

  1. 添加操作:脚本 > 运行 JavaScript
  2. 输入代码:
// 获取小火箭当前状态并切换
var url = "shadowrocket://toggle";
var app = Application.openURL(url);
completion(app);

配置自动化触发条件

场景 A:基于 Wi-Fi 连接的自动切换

  1. 进入"自动化"标签页,点击 创建个人自动化
  2. 选择 无线局域网 > 选择特定网络(如公司 Wi-Fi)
  3. 添加操作:打开 App 选择 Shadowrocket,或直接使用 URL Scheme
  4. 配置连接公司 Wi-Fi 时关闭代理:
触发条件: "无线局域网" 等于 "Company-WiFi"
执行动作: 
  - 打开URL: "shadowrocket://disconnect"
  - 显示通知: "已切换至直连模式"

场景 B:定时自动切换节点

  1. 选择 特定时间 触发(如每天 8:00)
  2. 添加 获取 URL 内容 操作,用于获取最新订阅
  3. 配置更新配置并切换:
# 更新订阅链接(需提前编码)
shadowrocket://config?url=https%3A%2F%2Fexample.com%2Fsub%3Ftoken%3Dxxx

高级自动化:基于地理位置的智能分流

配置地理围栏自动化:

  1. 创建自动化选择 到达/离开 特定位置
  2. 添加 如果 条件判断,检查当前网络状态
  3. 使用 ScriptableShortcutsGet Contents of URL 配合小火箭 API:
// 通过 Scriptable 实现复杂逻辑
let sr = new Shadowrocket();
await sr.switchPolicy("自动选择", "DIRECT");
// 或调用外部 API 获取最优节点
let response = await fetch("https://api.example.com/best-node");
let data = await response.json();
let scheme = `shadowrocket://switch?host=${data.host}&port=${data.port}`;
Safari.open(scheme);

调试与异常处理

添加错误捕获机制:

快捷指令结构:
  1. 获取当前IP地址 (网络操作)
  2. IP地址 包含 "国内IP段"
     - 执行: 打开URL shadowrocket://disconnect
  3. 否则
     - 执行: 打开URL shadowrocket://connect
  4. 显示结果通知
  5. 等待 2 秒
  6. 获取当前IP (验证代理是否生效)

调试技巧:

  • 在快捷指令中添加 快速查看 操作查看 URL 编码是否正确
  • 使用 显示结果 输出 Shadowrocket 的返回状态
  • 检查 设置 > 隐私与安全 > 分析与改进 > 分析数据 中的 Shadowrocket 日志

一键导入配置(高级)

创建包含完整配置的快捷指令:

{
  "action": "config",
  "url": "https://example.com/config.conf",
  "auto_update": true,
  "update_interval": 86400,
  "fallback": "DIRECT",
  "rules": [
    "DOMAIN-SUFFIX,apple.com,DIRECT",
    "GEOIP,CN,DIRECT",
    "FINAL,PROXY"
  ]
}

通过 Base64 编码 后生成: shadowrocket://config?url=base64encodedstring


注意事项:

  • iOS 16+ 系统需在 屏幕使用时间 > 内容和隐私访问限制 中允许快捷指令运行
  • 部分 URL Scheme 需小火箭保持后台运行才能响应
  • 建议配合 Focus 模式(专注模式)实现场景化自动切换

您可以还会对下面的文章感兴趣: