在iOS设备上使用Shadowrocket时,很多用户希望实现部分应用走代理、部分应用直连的需求,本文详细讲解如何通过规则配置实现特定APP排除代理,帮你精准控制流量走向。
排除代理的核心逻辑
Shadowrocket的代理排除本质是分流规则配置,通过定义规则,告诉客户端哪些域名或IP段需要直连(不经过代理),哪些需要走代理通道,配置的核心在于理解规则优先级和匹配类型。
规则类型与写法
| 规则类型 | 写法示例 | 适用场景 |
|---|---|---|
| DOMAIN-SUFFIX | domain-suffix,example.com |
匹配域名及所有子域名 |
| DOMAIN-KEYWORD | domain-keyword,google |
关键词匹配 |
| IP-CIDR | ip-cidr,10.0.0.0/8,no-resolve |
IP段直连 |
| GEOIP | geoip,cn,no-resolve |
国家/地区匹配 |
规则优先级
Shadowrocket规则从上往下匹配,第一条匹配的规则生效,因此排除规则必须放在代理规则之前。
配置步骤演示
创建排除规则组
在配置文件中添加直连规则段:
rules: # 排除特定APP直连规则(放在前面) - DOMAIN-SUFFIX,example-app.com,DIRECT - DOMAIN-KEYWORD,local-service,DIRECT - IP-CIDR,192.168.0.0/16,DIRECT - IP-CIDR,10.0.0.0/8,DIRECT - GEOIP,cn,DIRECT # 代理规则放后面 - MATCH,Proxy
识别目标APP的域名
排除APP前,需要确定该应用使用的服务器域名,常用方法:
- 抓包分析:使用Charles或Stream等工具分析APP流量
- 查阅文档:部分应用会在官网公布服务器域名
- 常见APP域名:如需排除流媒体,可针对其CDN域名配置
在Shadowrocket中应用配置
- 打开Shadowrocket → 配置 → 点击对应配置
- 点击编辑 → 找到rules部分
- 将排除规则添加在文件最前面
- 保存并更新配置
TUN模式与系统代理的区别
| 特性 | TUN模式 | 系统代理 |
|---|---|---|
| 接管范围 | 所有流量(TCP/UDP) | 仅HTTP/HTTPS |
| 适用场景 | 游戏、视频通话 | 浏览器、APP |
| 性能消耗 | 略高 | 较低 |
| 排除APP | 需在TUN规则中配置 | 需在分流规则中配置 |
如果开启TUN模式,排除特定APP需要在TUN的stack配置中单独设置,逻辑与系统代理规则类似。
常见问题FAQ
现象:配置排除规则后,APP仍然走代理
原因:规则优先级错误,或APP使用了代理难以识别的域名
解决方法:检查规则是否在文件最前面;使用DOMAIN-SUFFIX精确匹配;尝试抓包确认实际访问域名
现象:部分APP无法访问
原因:被排除的APP需要访问国际资源
解决方法:将APP的国际域名添加到代理规则,使用DOMAIN-SUFFIX单独放行
现象:开启代理后排除的APP变慢
原因:代理节点延迟高,或排除规则未生效
解决方法:更换低延迟节点;在配置中确认排除规则格式正确
节点选择建议
不同的跨境访问需求对节点要求不同:4K视频需要高带宽支持,游戏加速需要低延迟线路,办公场景则更看重稳定性,建议根据实际使用场景选择合适的节点服务,避开高峰期拥堵的线路。
