导读:
小火箭(Shadowrocket)分应用代理完全指南:精细化流量管理实战手册
1 什么是分应用代理(Per-App Proxy)
分应用代理是iOS 14+及Shadowrocket 2.2.0+版本引入的应用层流量调度技术,允许用户针对特定App单独设定代理策略(直连/代理/拒绝),而非传统的"一刀切"全局模式。
技术原理:通过iOS Network Extension框架的NEAppProxyProvider接口,在数据包出网前识别发起请求的Bundle ID,匹配预设规则后定向转发。
2 与传统模式的本质区别
| 模式 | 粒度 | 适用场景 | 性能开销 |
|---|---|---|---|
| 全局代理 | 设备级 | 全流量加密 | 高(全部绕行) |
| 规则代理 | 域名/IP级 | 智能分流 | 中(依赖规则质量) |
| 分应用代理 | 应用级 | 精准控制 | 低(仅处理指定App) |
基础配置:从零开始搭建
1 前置条件检查
- 系统要求:iOS 14.0 或更高版本(需支持Per-App VPN)
- 应用版本:Shadowrocket 2.2.0+(设置→关于中查看)
- 权限配置:设置→通用→VPN与设备管理→已启用"个人VPN"
2 配置入口与界面解析
路径:Shadowrocket → 配置(Config)→ 分应用代理(Per-App Proxy)
界面分区说明:
- 已配置应用列表:显示已设定策略的App(带彩色标签标识)
- 策略选择器:Proxy(代理)、Direct(直连)、Reject(阻断)
- 应用选择器:支持按Bundle ID搜索或从已安装列表选取
3 标准配置流程(三步法)
步骤1:添加目标应用 点击右上角"+" → 选择"从已安装应用选取" → 勾选需要配置的App(支持多选) 技巧:银行类App建议优先配置,避免风控
步骤2:设定代理策略
- Proxy:强制走代理节点(适用于海外App)
- Direct:强制直连(适用于国内金融、视频App)
- Reject:阻断联网(适用于去广告场景)
步骤3:优先级调整 长按应用条目拖动排序,列表顶部优先级高于底部,建议将最严格的规则置于上方。
进阶策略:与规则系统协同
1 双重过滤机制解析
Shadowrocket的处理逻辑遵循:分应用代理 > 配置文件规则 > 默认策略
流量产生 → 识别Bundle ID → 匹配分应用策略?
↓ 是
按设定策略处理(Direct/Proxy/Reject)
↓ 否
进入配置文件规则匹配(DOMAIN/IP/GEOIP)
↓
应用默认策略(通常Final为Proxy)
2 策略组(Policy Group)的嵌套应用
在分应用代理中可引用策略组,实现动态节点选择:
配置示例:
- 应用:YouTube → 策略:🇭🇰香港专线(自动测速组)
- 应用:TikTok → 策略:🇺🇸美国静态(固定节点)
- 应用:微信 → 策略:Direct(强制直连)
脚本增强(适用于高级用户):
// 在配置文件的[Script]段添加
if (app == "com.apple.AppStore") {
$surge.setSelectGroupPolicy("AppStore下载", "🇭🇰香港高速");
}
3 特殊应用处理方案
银行/金融类App(招商银行、支付宝等)
- 策略:Direct(必须)
- 原因:SSL Pinning检测、IP地理位置校验
- 注意:部分银行App需同时关闭"IPv6"和"HTTP/3"
流媒体App(Netflix、Disney+等)
- 策略:指定解锁节点(非自动选择)
- 优化:开启"分应用代理"后,在规则中排除这些App的域名匹配,减少CPU开销
游戏类App(原神国际服、PUBG Mobile等)
- 策略:UDP代理节点(需节点支持Full Cone NAT)
- 配置:设置→延迟测试方法→选择"CONNECT"(避免UDP阻断)
实战场景与配置模板
场景A:国内出海双轨制(最常用)
需求:国内App流畅使用,海外App自动翻墙
配置清单:
Direct列表:
- com.tencent.xin(微信)
- com.alipay.iphoneclient(支付宝)
- com.apple.AppStore(AppStore下载走直连提速)
Proxy列表:
- com.google.ios.youtube(YouTube)
- com.twitter.twitter(Twitter)
- com.facebook.Facebook(Facebook)
Reject列表(去广告):
- com.baidu.BaiduMobile(百度App广告域名)
- com.sina.weibo(微博部分追踪域名)
场景B:多账户多节点隔离
需求:不同社交App使用不同国家IP,避免关联封号
配置方法:
- 创建多个策略组(如"美国商业"、"日本私人")
- 分应用代理中指定:
- Twitter → 美国商业组
- Line → 日本私人组
- Telegram → 欧洲隐私组
场景C:流量节省模式(蜂窝网络专用)
策略:仅允许必要App走代理,其余全部直连
自动化配置: 结合快捷指令(Shortcuts)实现:
- 当连接蜂窝数据时:启用"省流量配置"(仅邮件、通讯工具走代理)
- 当连接WiFi时:启用"全功能配置"
故障排查与性能优化
1 常见问题诊断
问题1:配置了Direct但App仍走代理
- 排查:检查是否同时存在DOMAIN规则冲突
- 解决:在配置文件中将该App相关域名加入"DOMAIN-SUFFIX,xxx,DIRECT"并置顶
问题2:App无法识别或显示为"?"
- 原因:iOS沙盒限制,部分系统App无Bundle ID
- 解决:使用"进程名"(Process Name)匹配代替,或更新至最新版Shadowrocket
问题3:分应用代理导致电池消耗异常
- 优化:设置→高级→关闭"日志记录",调整"TCP Keepalive"为300秒
2 性能优化 checklist
- [ ] DNS缓存:开启"分应用代理"后,建议DNS服务器设置为本地直连(如223.5.5.5),避免DNS泄露
- [ ] MTU设置:蜂窝网络下建议设置为1280(避免分片)
- [ ] IPv6处理:国内App建议"IPv6"设为"直接连接",海外App设为"通过代理"
最佳实践与风险提示
1 配置备份与迁移
分应用代理配置存储在.conf文件的[Per-App Proxy]段,建议:
- 定期导出配置文件至iCloud
- 使用"配置同步"功能(需订阅iCloud同步)
2 安全红线警告
⚠️ 绝对避免对以下应用使用Reject策略:
- 系统设置(com.apple.Preferences)
- 查找我的iPhone(com.apple.findmy)
- 蜂窝网络设置相关进程
⚠️ 银行类App使用Proxy可能导致:
- 账户临时冻结(异地登录检测)
- 支付功能被禁用(风控系统触发)
3 与iOS系统代理的协同
在"设置→无线局域网→配置代理"中设置的系统级代理,优先级低于Shadowrocket的分应用代理,建议保持系统代理为"关闭"状态,避免冲突。
分应用代理是Shadowrocket在iOS生态中最强大的精细化控制工具,合理配置可实现"无感翻墙"——国内应用极速直连,海外服务无缝访问,建议从"金融类App直连+海外社媒代理"的基础配置开始,逐步根据使用习惯优化规则集。
最后更新:2024年(适用于Shadowrocket 2.2.50+版本)