理解策略组的核心价值与设计逻辑
策略组解决流量智能调度问题
策略组是Shadowrocket配置文件中的核心组件,它本质上是一个逻辑容器,将多个代理节点或策略组聚合在一起,并定义如何从这些选项中选择实际出口。当分流规则将某个域名或IP段指向一个策略组时,Shadowrocket会按照策略组预设的选择机制(如手动选择、自动测速或故障转移)决定最终使用哪个节点发起连接,实现了流量的动态调度和灵活管理。
策略组与策略组的嵌套层次关系
策略组不仅可包含节点,还能包含其他策略组,形成多层级结构。例如可创建一个“美国主用组”包含多个美国节点,再创建一个“北美汇总组”包含“美国主用组”和“加拿大节点组”。当规则指向“北美汇总组”时,Shadowrocket会逐层解析,最终落到具体节点上。这种嵌套能力使大规模节点管理变得层次分明且高度可扩展。
策略组在分流规则执行链中的位置
流量处理流程为:请求到达→匹配分流规则→规则指向策略组→策略组按选择策略确定节点→连接建立。策略组是连接“规则”与“实际节点”的桥梁,它解耦了“哪些流量走代理”和“具体走哪个节点”这两个决策维度,使用户能独立调整节点列表或策略选择机制,而无需逐条修改规则。这是策略组配置灵活性的根本来源。
策略组类型详解与选择策略
select手动选择策略组的特点与适用场景
select类型的策略组将选择权完全交给用户,在Shadowrocket首页的策略组区域会显示所有可用选项,用户点击即可手动切换。这种模式适合希望完全掌控出口选择的用户,例如需要随时在不同国家的节点间切换以访问特定区域内容,或固定使用某个性能最优的节点。其优势是透明可控,但需要用户主动管理。
url-test自动测速策略组的工作机制
url-test类型策略组会定期向预设的测试网址(如http://www.gstatic.com/generate_204)发起请求,根据响应延迟自动排序,并将流量导向当前延迟最低的节点。该模式适合追求最佳速度体验的用户,尤其在节点质量参差不齐且动态变化的环境中,它能自动适应网络波动,始终选择响应最快的出口。需注意测速本身会消耗少量流量和系统资源。
fallback故障转移策略组与备用逻辑
fallback策略组定义了主节点和备用节点的优先级顺序,主节点优先被使用。当主节点连接失败或超时达到设定阈值时,自动切换至下一个备用节点,依此类推。这种模式适合对连接可用性要求极高的场景,如长时间运行的下载任务或自动化脚本,避免因单个节点故障导致任务中断,实现了高可用性的节点调度。
配置策略组的基础语法与结构
策略组配置在配置文件中的位置
策略组定义位于配置文件的[Proxy Group]段落,该段落与[Proxy]、[Rule]等段落并列。所有策略组的声明必须集中在此段落内,每个策略组独立成块,使用[[Proxy Group]]作为组标记开始。策略组的名称在整个配置文件中必须唯一,且区分大小写,其他段落(如规则)引用时需使用完全一致的名称。
手动选择策略组的完整配置模板
最基础的select类型策略组配置示例如下:
[[Proxy Group]] name = 手动选择组 type = select proxies = 香港节点01, 日本节点02, 美国节点03, DIRECT
name定义组名称,type指定策略类型,proxies列出所有可选节点(包括DIRECT或REJECT等策略)。列表中的顺序决定了在Shadowrocket界面中的显示顺序,用户可根据使用频率或偏好调整排列。
自动测速与故障转移策略组的参数配置
url-test策略组需增加url指定测速目标,interval设定测速间隔(秒),timeout设定超时阈值:
[[Proxy Group]] name = 自动优选组 type = url-test url = http://www.gstatic.com/generate_204 interval = 300 timeout = 5 proxies = 香港节点01, 日本节点02, 新加坡节点03
fallback策略组类似,但无需url,按列表顺序决定优先级,同时可通过max-fail设置连续失败次数后切换备用节点。
策略组与分流规则的衔接配置
规则中引用策略组名称的方式
在[Rule]段落中,将原本指向具体节点或DIRECT的策略目标替换为策略组名称。例如DOMAIN,youtube.com,PROXY中的PROXY若替换为“手动选择组”,则YouTube流量将走向该策略组包含的节点。这一替换将规则的决策从“走哪个节点”提升到“走哪类节点组合”,使规则更简洁且便于统一管理。
多规则共享同一策略组的协同效果
多个分流规则可同时指向同一个策略组,实现流量的集中出口管理。例如将所有流媒体域名(YouTube、Netflix、Hulu)的规则都指向“流媒体专用组”,当该组的节点切换时,所有流媒体流量同步切换至新出口,无需逐条修改规则。这种“规则-策略组”的多对一映射显著提升了配置的维护效率和一致性。
利用策略组实现规则与节点的解耦
策略组最大的架构价值是解耦了“规则定义”和“节点选择”。当节点列表更新(如新增或删除节点)时,只需在策略组的proxies列表中调整,所有引用该策略组的规则自动感知变化,无需任何额外修改。这种分层设计使配置的扩展性和适应性大幅提升,尤其适合频繁更换节点或维护大型配置文件的用户。
高级配置与嵌套策略组的应用
策略组嵌套实现多层级选择逻辑
策略组的proxies列表中可包含其他策略组名称,形成多级决策树。例如:
[[Proxy Group]] name = 全球汇总组 type = select proxies = 亚洲组, 美洲组, 欧洲组, DIRECT [[Proxy Group]] name = 亚洲组 type = url-test proxies = 香港节点01, 日本节点02, 新加坡节点03
当“全球汇总组”被选择时,用户可先选择地区大组,再由各地区的自动测速组决定具体节点,实现了地区优先再性能优先的两级调度策略,适合节点覆盖广泛的使用场景。
结合DIRECT与REJECT策略的特殊用途
在策略组的proxies列表中加入DIRECT表示该策略组可能选择直连出口,REJECT则表示选择拒绝连接。例如可在“手动选择组”中加入DIRECT选项,用户临时需要直连时可直接在界面切换,无需修改规则。REJECT可用于规则调试或临时屏蔽特定流量,通过策略组提供了比规则更灵活的控制手段。
配置测试网址的优化选择
url-test的测试网址选择直接影响测速结果的代表性和准确性。推荐使用响应速度快、全球节点延迟差异明显的稳定服务,如http://www.gstatic.com/generate_204(Google的轻量级204响应)或http://cp.cloudflare.com/。避免使用访问受限或被屏蔽的网址,否则测速结果可能持续超时,导致策略组无法正常工作。
策略组配置的验证与调试
Shadowrocket首页的策略组界面操作
配置正确加载后,在Shadowrocket首页底部会显示所有select类型策略组的名称和当前选中的节点。用户点击任一策略组即可展开其proxies列表中所有选项,进行手动切换。若某策略组在界面中未出现,需检查配置文件中该策略组是否正确定义且被至少一个规则引用,未被引用的策略组不会在界面显示。
通过日志确认策略组的实际选择
开启Shadowrocket的详细日志功能后,当请求命中某个策略组时,日志会清晰显示“Proxy Group xxx selected node yyy”的字样,明确告知本次连接实际使用的节点。若选择结果与预期不符,可通过日志中的延迟测试记录或切换动作定位问题,例如url-test组选择了非预期的节点时,检查其测速URL是否可访问且延迟数据准确。
策略组切换生效的时机与范围
策略组的切换操作(包括手动选择和自动测速组的重新选优)实时生效,影响所有引用该策略组的规则。但已建立的现有连接不会中断切换,新策略仅对切换后新建的连接生效。若切换后发现某些应用未及时跟随新策略,可尝试重启应用或断开重连以强制使用新的出口节点。
常见问题FAQ
策略组中节点名称与[Proxy]段落不对应导致无法加载
策略组proxies列表中填写的节点名称必须与[Proxy]段落中定义的节点名称完全一致(包括大小写和标点)。若名称不匹配,配置加载时会跳过该节点且不提示错误,导致策略组实际可用节点少于预期。建议直接从[Proxy]段落中复制名称粘贴至策略组列表,彻底避免人为拼写错误。
url-test策略组频繁切换节点导致连接不稳定
频繁切换通常因测速间隔过短或测速网址响应波动大所致。建议将interval参数调整为300秒(5分钟)以上,减少测速频率,并选择响应稳定的测速网址。同时可配合persistent参数(若支持)使策略组在测速后不立即切换,仅当当前节点延迟显著劣于最优节点时才触发切换,降低震荡频率。
策略组无法显示在Shadowrocket首页的底部栏
首页底部栏仅显示被至少一条[Rule]规则引用的select类型策略组。若策略组未被任何规则引用,或仅被其他策略组嵌套引用而无直接规则引用,则不会显示。用户需至少为策略组创建一条规则(如GEOIP,US,策略组名)才能使其出现在界面中便于手动操作。
如何备份和迁移已配置好的策略组结构
[Proxy Group]段落的内容复制至新配置文件的相同段落,并确保[Proxy]段落中包含了所有被引用的节点定义。若节点来自订阅链接,需在新配置中同样添加订阅源,保持节点名称一致。
