
策略组在Shadowrocket中的核心定位
策略组作为分流决策的最终执行者
在Shadowrocket的配置体系中,策略组是规则匹配流程的终点,每条规则在匹配到目标流量后,都会指向一个具体的策略动作,这些动作决定了该网络请求最终被如何处理。PROXY、DIRECT、REJECT和FINAL是Shadowrocket中最核心的四种策略类型,它们分别对应代理转发、本地直连、请求拒绝和兜底裁决四种截然不同的处理逻辑。用户理解这四种策略的含义和适用场景,是编写高效配置文件和排查分流问题的基本前提。
策略与规则的协作关系
规则负责识别流量特征(如域名、IP段、地理位置),而策略负责执行具体的动作指令,两者在配置文件中以“规则类型,条件,策略”的格式组合出现。用户编写的每一条规则都包含了匹配条件和执行策略两个要素,例如“DOMAIN-SUFFIX,google.com,PROXY”中的PROXY就是策略部分,指示匹配到google.com的请求走代理通道。策略组在配置文件末尾通常以FINAL兜底规则作为所有未匹配流量的最终策略,确保任何流量都不会因为没有策略可执行而被丢弃。
策略的全局性与配置文件绑定
PROXY、DIRECT、REJECT和FINAL是全局性的策略定义,它们在当前加载的配置文件中生效,当用户切换配置文件时,这些策略的行为定义可能随之改变。PROXY策略具体使用哪个节点或策略组,取决于用户在服务器列表中选择的当前活动节点,以及策略组中的节点调度逻辑。策略的行为与配置文件的规则集、策略组定义以及当前的节点选择状态紧密耦合,理解这种耦合关系有助于用户准确预期切换配置或节点后的实际网络行为。
PROXY策略的完整定义与使用
代理转发的核心执行逻辑
PROXY策略指示Shadowrocket将匹配该规则的网络请求全部转发至当前选中的代理节点,由该节点完成与目标服务器的通信并将响应返回给客户端。在PROXY策略生效时,用户的真实IP地址被代理节点的出口IP所替代,目标网站看到的请求来源是代理服务器的位置而非用户的物理位置。PROXY策略是所有境外网站访问需求的基础,配置文件中绝大多数代理规则最终都会指向该策略,确保跨境流量通过代理通道完成传输。
PROXY策略与策略组的嵌套关系
在高级配置中,PROXY策略不一定直接指向单个节点,而是可以指向一个包含多个候选节点的策略组(如“自动选择”或“故障转移”组)。当规则匹配后执行PROXY策略时,Shadowrocket会从该策略组中根据预设的调度逻辑(如延迟测速、顺序选择或手动选择)挑选一个具体的节点来转发流量。这种嵌套设计使用户可以在策略层面实现节点的智能调度和故障转移,而无需为每条规则单独指定节点。用户可以在策略组编辑页面中为PROXY策略指定具体的策略组名称,实现规则与节点调度逻辑的解耦。
不同场景下PROXY策略的选择建议
对于绝大多数日常使用场景,所有需要访问境外网站的规则都应当指向PROXY策略,包括但不限于Google搜索、YouTube视频、GitHub代码仓库和Twitter社交等服务的域名规则。当用户处于需要访问特定国内服务的漫游场景时,反向代理需求也应通过PROXY策略实现,此时PROXY指向的是回国代理节点而非普通境外节点。用户应当为不同的使用场景创建不同的配置文件,在每个配置文件中将需要代理的目标规则统一指向PROXY策略,通过切换配置文件而非修改每条规则来改变代理行为。
DIRECT策略的完整定义与使用
本地直连的执行机制
DIRECT策略指示Shadowrocket直接通过设备的本地网络接口发送请求,不经过任何代理节点的转发,行为上等同于未开启代理时设备正常的网络访问方式。在DIRECT策略下,目标网站看到的请求来源是用户的真实IP地址(运营商分配的IP或Wi-Fi网络出口IP),请求的往返延迟完全取决于用户本地网络到目标服务器之间的物理距离和路由质量。DIRECT策略是确保国内网站快速访问和局域网设备正常通讯的核心机制,配置文件中大量国内域名规则和私有IP段规则都会指向该策略。
DIRECT策略对国内流量的优化价值
在中国大陆网络环境下,将国内主流网站的流量通过DIRECT策略直连,可以充分利用本地运营商的带宽和低延迟优势,避免因代理节点绕路而导致的访问速度下降。百度、淘宝、京东、微信等日常高频访问的国内服务,如果错误地走PROXY策略,不仅会消耗代理节点的流量配额,还可能因为节点出口IP频繁变化而触发风控机制。通过GEOIP,CN规则批量将中国大陆IP段的流量指向DIRECT策略,是实现国内流量直连的最常用方法,配合精确的DOMAIN-SUFFIX直连规则,可以做到国内流量零代理损耗。
DIRECT策略在局域网访问中的必要性
Shadowrocket默认将私有IP地址段(192.168.x.x、10.x.x.x、172.16.x.x)的请求自动指向DIRECT策略,确保用户访问路由器管理页面、NAS存储设备、网络打印机和局域网内其他设备时流量始终停留在本地网络。如果这些局域网请求被错误地指向PROXY策略,不仅无法访问内网设备(因为代理服务器无法路由到用户的内网地址),还可能导致敏感的内网数据被发送至外部代理节点。用户不应修改或覆盖这些默认的局域网直连规则,除非有特殊的内网穿透需求。
REJECT策略的完整定义与使用
请求拒绝的精确拦截逻辑
REJECT策略指示Shadowrocket在应用层直接丢弃匹配的网络请求,不会将请求转发至代理节点也不会通过本地网络发出,目标服务器永远不会收到该请求的任何数据包。从用户设备的角度看,被REJECT的请求会立即返回连接失败或无法访问的错误,但不会产生任何实际的网络流量,因此该策略在节省带宽和提升加载速度方面有着立竿见影的效果。REJECT策略是配置文件中所有拦截规则的标准动作,广泛应用于广告域名屏蔽和恶意网站防护。
REJECT策略在广告拦截中的核心应用
大量广告联盟域名和用户行为追踪服务器被指向REJECT策略,用户在浏览网页时这些域名的资源请求被直接丢弃,广告内容无法加载显示,页面整体加载时间显著缩短。典型的广告拦截规则如“DOMAIN-SUFFIX,doubleclick.net,REJECT”和“DOMAIN-KEYWORD,googleadservices,REJECT”,这些规则覆盖了互联网上最广泛的广告投放和用户追踪网络。REJECT策略还可以用于拦截统计服务域名(如Google Analytics),防止用户的浏览行为数据被第三方收集和分析。
REJECT策略对功能兼容性的潜在影响
虽然REJECT策略在拦截广告和追踪方面效果显著,但部分网站的核心功能可能依赖于被拦截的第三方域名(如使用Google reCAPTCHA验证的登录页面)。当这些依赖域名被REJECT拦截时,用户可能无法完成登录、无法提交表单或无法加载评论功能,表现为页面功能残缺或不响应。用户在配置REJECT规则时需要权衡广告拦截收益和功能兼容性的损失,对于影响核心功能的域名,可以调整为DIRECT策略允许其正常加载,或使用更精细的白名单规则使其绕开REJECT拦截。
FINAL策略的完整定义与使用
兜底裁决的终极执行逻辑
FINAL策略是配置文件中优先级最低的策略,它在所有前置规则均未匹配当前请求时执行,是规则引擎处理流程的最后一道关卡。FINAL策略的核心价值在于为所有未被任何规则明确匹配的流量提供一个统一的出口决策,避免因规则列表不完整而导致部分请求无策略可用从而连接失败。每个配置文件有且仅有一条FINAL策略,通常位于规则列表的最末尾,其后的任何规则都不会被引擎检查。
FINAL策略与规则覆盖度的关系
FINAL策略的选择直接决定了配置文件的“默认行为”是代理还是直连。当FINAL设置为PROXY时,所有未被规则匹配的请求默认走代理通道,这对应了黑名单策略;当FINAL设置为DIRECT时,未匹配请求默认直连本地网络,这对应了白名单策略。用户通过调整FINAL策略的取值,可以在不修改大量规则条目的情况下整体改变配置文件的分流倾向,例如将FINAL从PROXY改为DIRECT即可瞬间将所有未匹配流量从代理切换为直连。
FINAL策略在不同网络环境下的配置建议
在中国大陆网络环境下,推荐将FINAL策略设置为PROXY,确保所有未匹配规则的境外网站默认走代理,国内网站通过前置规则精确直连。在境外漫游需要回国代理的场景中,FINAL策略应设置为DIRECT,因为用户的主要需求是直连国际网络而非回国代理,仅将特定回国服务通过前置PROXY规则处理。为不同网络环境创建独立配置文件并分别设置FINAL策略,是实现网络行为自动适配的最简洁方法。
四种策略的实际配合与配置示例
典型黑名单配置中的策略组合
在黑名单策略的配置文件中,四种策略按照“精确规则前置、批量规则居中、兜底规则后置”的原则组合使用。文件开头放置REJECT规则拦截广告和恶意域名,中间放置DOMAIN-SUFFIX规则将国内网站指向DIRECT策略,再以GEOIP,CN规则将中国大陆IP段批量指向DIRECT,最后以FINAL,PROXY作为兜底策略。这种组合确保了绝大多数境外流量默认走代理,国内流量和广告流量分别通过DIRECT和REJECT策略精细控制,是国内网络环境下最成熟的配置模板。
典型白名单配置中的策略组合
白名单配置中,FINAL策略通常设置为DIRECT,所有未被白名单规则匹配的流量默认直连本地网络。文件开头同样保留REJECT规则用于广告拦截,中间放置需要代理的境外服务规则指向PROXY策略,这些规则通常是DOMAIN-SUFFIX精确匹配。白名单配置的优势在于代理范围精确可控,仅白名单中的少数服务走代理,其余所有流量直连,适合对代理流量消耗敏感或仅需访问少数境外服务的用户。
混合策略中多策略协同的最佳实践
在真实的配置文件编写中,四种策略并非孤立使用,而是通过精心编排的规则顺序形成多层次的分流体系。推荐的分层顺序是:REJECT广告拦截层优先执行,PROXY强制代理层次之,DIRECT精确直连层再次,GEOIP批量直连层更次,最后以FINAL兜底策略收尾。这种分层结构利用规则匹配的优先级特性,实现了从最特殊需求到最通用需求的渐进式分流,确保每一种流量类型都能在最优的匹配位置获得正确的策略动作。
常见问题FAQ
PROXY策略和DIRECT策略哪个更快?
DIRECT直连通常比PROXY代理更快,因为直连无需经过代理节点的转发和加密解密过程,网络延迟仅取决于用户到目标服务器的物理距离。但国内访问境外网站时DIRECT策略不可用(因网络封锁),此时必须使用PROXY策略。
如果配置文件中没有FINAL策略会怎样?
Shadowrocket会使用默认的FINAL策略处理未匹配流量,该默认行为在不同版本中可能有差异,通常为PROXY。为了确保分流行为的确定性和可控性,强烈建议用户在配置文件中显式声明FINAL策略,而非依赖应用默认值。
REJECT策略和DIRECT策略在对广告拦截的效果上有什么区别?
REJECT策略直接丢弃请求,广告内容完全无法加载且不产生任何网络流量,拦截效果最彻底。DIRECT策略允许请求通过本地网络发出,广告内容会正常加载显示,只是绕过了代理通道,对广告拦截没有作用。
切换代理节点时,PROXY策略的行为会自动更新吗?
会的。PROXY策略始终指向当前在服务器列表中被选中的活动节点,当用户在Shadowrocket主界面切换选中的节点时,所有指向PROXY策略的规则会自动使用新节点转发流量,无需修改配置文件中的任何规则条目。