Shadowrocket 怎么分流设置规则?Config、规则顺序与验证步骤
简答:Shadowrocket 设置分流时,先打开 Home → Global Routing → Config,再确认 Config 页面选中了正确的配置文件。把更具体的规则放在宽泛规则前,把 FINAL 放在后面,保存后用连接记录或同一目标的 Proxy、Direct 对比确认是否命中。不同版本的菜单和编辑方式可能不同,本文以当前界面中能看到的名称为准。
定义:Shadowrocket 分流是根据当前配置文件中的规则,把不同域名、IP 或请求分别交给代理、直连、拒绝或其他策略处理。
先照做:Shadowrocket 分流设置三步速查
如果你已经添加了节点或订阅,但不知道网站为什么没有按预期直连或代理,先不要修改大量规则。按下面三步确认基础状态:
| 步骤 | 操作位置 | 需要确认的内容 |
|---|---|---|
| 1 | Home → Global Routing | 选择 Config,而不是暂时用于对比的 Proxy 或 Direct。 |
| 2 | Config | 当前启用的配置文件,确实是你准备查看或修改的文件。 |
| 3 | 配置中的 [Rule] | 具体规则在前,宽泛规则在后,FINAL 作为最后的兜底。 |
Shadowrocket 的 App Store 页面将其描述为规则型代理工具,并说明它本身不包含代理服务器或订阅服务;因此,应用、节点信息、配置文件和分流规则是不同层次的内容。可查看Shadowrocket App Store 页面。公开说明页面也把 Config、Proxy、Direct 列为不同的路由选择,但菜单文字和编辑入口可能随版本变化,实际操作时应以设备上显示的界面为准。
- 打开 Shadowrocket,进入 Home。
- 点击 Global Routing,选择 Config。
- 进入 Config,确认启用的配置文件名称。
- 备份当前配置,再检查或编辑其中的
[Rule]部分。 - 保存后重新发起一次新的访问请求,不要只观察已经打开的页面。
- 查看连接记录、数据记录或诊断信息,确认目标请求使用了哪条规则和策略。
先分清:节点、配置文件和规则分别做什么
分流设置最容易出错的地方,是把订阅链接、节点和规则文件当成一件事。它们解决的问题并不相同。
- 节点或服务器:提供连接地址、端口、认证和协议等信息,解决“通过哪条连接访问”。
- 订阅:通常用于获取或更新一组节点、服务器条目或相关配置内容,具体包含哪些部分要看提供方生成的文件。
- 配置文件:是客户端当前读取的整体配置,可能包含通用设置、策略、规则和其他配置段。
- 分流规则:通常位于配置中的
[Rule]部分,解决“某个请求交给哪个策略处理”。 - 策略名称:
PROXY、DIRECT、REJECT或自定义策略组必须已经在当前配置中存在,规则不会自动创建这些策略。
如果只测试直连或拒绝规则,不一定需要可用的代理节点;但要验证某个请求是否真正通过代理路径,通常还需要可用节点或可用策略组。连接开关显示已开启,也不能单独证明规则已经按预期命中。
需要特别区分两个名称相近的位置:Home 中的 Global Routing 是当前的整体路由模式,Config 页面则用于管理或选择配置文件。选择了某个配置文件,不代表 Global Routing 已经自动切换到 Config;两处都要检查。
可复制的最小规则模板:直连、代理与兜底
下面的内容是语法示例,不是完整配置文件。example.com、example.net 和 192.0.2.0/24 仅用于文档测试,不代表真实服务;访问结果还会受到 DNS、IPv6、节点状态和目标服务本身影响。
[Rule]
DOMAIN,example.com,DIRECT
DOMAIN-SUFFIX,example.net,PROXY
DOMAIN-KEYWORD,internal,DIRECT
IP-CIDR,192.0.2.0/24,DIRECT,no-resolve
FINAL,PROXY逐行理解如下:
DOMAIN,example.com,DIRECT:匹配指定的完整域名,适合只控制一个主机名。DOMAIN-SUFFIX,example.net,PROXY:匹配该域名及其子域名,适合一个站点包含多个子域名的情况。DOMAIN-KEYWORD,internal,DIRECT:域名包含指定关键词时匹配,范围较宽,容易误匹配。IP-CIDR,192.0.2.0/24,DIRECT,no-resolve:按 IPv4 网段匹配;no-resolve的具体行为要结合当前版本和配置实现核对,不能简单理解为关闭所有 DNS。FINAL,PROXY:前面的规则没有命中时,交给代理策略。兜底策略不一定必须是 PROXY,应按自己的需求填写。
如果你的配置使用自定义策略组,应把示例中的 PROXY 替换为配置中已经存在的策略名称。若策略名称写错,规则可能看起来已经匹配,但实际处理仍会失败或无法按预期连接。
关于 Global Routing、规则类型和配置文件结构,可以对照公开的 Shadowrocket 设置说明页面;该页面不是你当前配置的替代品,最终仍应以应用实际显示的策略和日志为准。
DOMAIN、DOMAIN-SUFFIX、DOMAIN-KEYWORD 怎么选
| 规则类型 | 匹配范围 | 适合场景 | 主要注意点 |
|---|---|---|---|
DOMAIN | 一个精确域名 | 只控制某个明确的主机名 | 不会因为写了主域名,就自动覆盖所有子域名。 |
DOMAIN-SUFFIX | 域名后缀及相关子域名 | 同一站点包含多个子域名 | 范围比精确域名更宽,要避免把不想处理的服务一起纳入。 |
DOMAIN-KEYWORD | 域名中包含指定字符串 | 临时匹配具有明显命名特征的一组域名 | 误匹配风险较高,不建议随意使用宽泛关键词。 |
IP-CIDR | IPv4 地址范围 | 已知目标网段或按地址分流 | DNS 解析、IPv6 和应用连接地址都可能影响最终结果。 |
GEOIP | 按 IP 地理数据库结果匹配 | 需要进行粗粒度地区分流 | 不能把 IP 地区结果等同于域名后缀或网页语言。 |
新手通常可以先从 DOMAIN 或 DOMAIN-SUFFIX 开始。只有在明确知道匹配范围时,再使用 DOMAIN-KEYWORD。如果主页面能打开,但图片、登录接口或通知异常,可能是这些请求使用了其他子域名、接口域名或 CDN 域名,不要只给主页面域名添加一条规则就下结论。
规则顺序怎么排:具体规则在前,FINAL 在后
规则通常按照配置中的先后顺序检查,某个请求命中前面的规则后,后面的规则可能不会再参与判断。因此,规则顺序比规则数量更重要。
- 先放需要优先处理的精确域名规则。
- 再放覆盖范围较大的后缀、关键词、IP 或地区规则。
- 把例外规则放在会覆盖它的宽泛规则之前。
- 最后放
FINAL,处理没有命中前面规则的请求。
例如,你希望 api.example.com 直连,但同一配置又希望 example.com 及其子域名走代理,可以把精确规则放在后缀规则前面:
[Rule]
DOMAIN,api.example.com,DIRECT
DOMAIN-SUFFIX,example.com,PROXY
FINAL,DIRECT反过来,如果先写 DOMAIN-SUFFIX,example.com,PROXY,精确域名的直连例外可能无法按预期执行。这里的示例只展示匹配逻辑,实际是否支持某个字段、策略名称如何定义,以及配置编辑方式,都应根据当前版本和文件内容核对。
修改订阅配置前怎么备份,避免更新后丢规则
订阅配置、手动配置和远程规则集的保存行为可能不同。不要假定所有版本都支持独立编辑副本,也不要认为保存一次就一定能抵抗后续订阅更新。更稳妥的做法是先备份,再做小范围修改。
- 记录当前启用的配置文件名称,并保留原始订阅或配置来源。
- 复制或导出原始配置,至少保存原来的
[Rule]内容。 - 一次只增加一条或一组规则,方便判断是哪次修改导致变化。
- 保存后重新进入 Config,确认当前启用的仍然是修改后的文件。
- 更新订阅后,再检查自定义规则是否仍在。
- 如果规则消失,先恢复备份,再确认当前版本是否提供本地配置、编辑副本或远程规则集等独立管理方式。
如果页面没有明确显示“复制配置”“本地配置”或类似入口,不要把手动改动当成永久保存方案。可以先用一个测试域名验证保存结果,确认配置没有被覆盖后,再处理日常使用的规则。
规则不生效怎么办:按模式、配置、顺序、连接排查
情况一:开启连接后所有请求表现都一样。回到 Home → Global Routing,确认当前是 Config,而不是 Proxy 或 Direct。Proxy 和 Direct 可以用于对比测试,但它们不代表按配置文件中的每条规则分流。
情况二:改了规则,访问结果没有变化。先检查修改的文件是否为当前启用文件,再检查规则是否位于 FINAL 或其他宽泛规则之后。只保留一个测试域名和一条测试规则,减少同时变化的因素。
情况三:日志显示命中了规则,但网页仍打不开。规则命中只说明请求被交给某个策略,并不等于节点、DNS 或目标服务一定可达。检查该策略对应的节点或策略组,再用 Proxy 和 Direct 对同一目标进行对比。
情况四:主页面能打开,但图片、登录或通知异常。查看连接记录中实际出现的域名,检查是否遗漏子域名、接口域名或 CDN 域名,同时排查过宽的关键词规则、REJECT 规则和 IP 规则。
情况五:订阅更新后自定义规则消失。这通常需要先判断更新动作是否重新写入了远程配置。恢复备份后,检查当前版本是否支持独立编辑副本或单独的规则集;未核实具体界面前,不要假定所有版本的保存逻辑相同。
排查时建议一次只改变一个变量:先固定目标域名,再分别检查 Global Routing、配置文件、规则顺序、策略对应节点、DNS 和连接记录。这样比直接切换到全局模式后反复修改规则更容易定位问题。
最后做一次可复现的命中验证
- 准备一个明确的测试域名和一条精确规则,例如
DOMAIN,example.com,DIRECT。 - 确认该规则位于宽泛规则和 FINAL 之前。
- 在 Config 页面确认使用的是已修改的配置文件。
- 在 Home → Global Routing 中选择 Config。
- 开启连接,只访问该测试域名,不要同时测试多个应用或多个站点。
- 查看连接记录、数据记录或诊断信息,确认实际命中的规则和策略。
- 临时切换到 Proxy,再访问同一目标;然后切换到 Direct 做对比。
- 完成测试后恢复日常使用的 Config,并删除临时测试规则。
如果 Config、Proxy、Direct 三种模式的结果不同,继续检查规则、策略和节点;如果三种模式都失败,则优先检查 DNS、系统网络、节点状态或目标服务本身。仅凭页面是否打开,不能完整证明最终请求路径,因为 DNS、IPv6、缓存和页面中的附加请求都可能改变表现。
本文是第三方使用指南,不代表 Shadowrocket 官方页面;应用名称、菜单和配置字段请以当前设备中的实际界面及可核验资料为准。
常见问题
Shadowrocket 开启连接后,为什么分流规则没有生效?
先检查 Home → Global Routing 是否选择了 Config,再确认 Config 页面选中的文件就是你修改的文件。随后检查规则顺序,尤其是前面的宽泛规则或 FINAL 是否已经提前匹配。
Shadowrocket 的 Config、Proxy、Direct 有什么区别?
Config 按当前配置文件中的规则处理请求;Proxy 用于通过代理路径进行整体对比;Direct 用于测试直连路径。它们是路由模式,不是节点名称,也不等同于连接开关。
DOMAIN 和 DOMAIN-SUFFIX 应该怎么选?
只控制一个精确主机名时使用 DOMAIN;需要覆盖一个域名及其子域名时考虑 DOMAIN-SUFFIX。使用 DOMAIN-KEYWORD 前要确认匹配范围,否则可能误伤其他请求。
FINAL 规则应该放在哪里?
通常放在具体规则、例外规则和宽泛规则之后,作为没有其他规则命中时的兜底。FINAL 放得过早,后面的规则可能无法按预期参与判断。
规则命中了,但网页仍然打不开怎么办?
规则命中只代表请求被交给某个策略,不代表节点、DNS 或目标服务可达。检查策略对应的节点或策略组,再用 Proxy、Direct 对同一目标做对比测试。
更新订阅后,自定义分流规则消失怎么办?
先恢复更新前保存的配置,确认是否是订阅更新重新写入了远程配置。之后检查当前版本是否提供本地配置、编辑副本或远程规则集等独立管理方式,具体入口以应用界面为准。
为什么主页面能打开,但图片或登录功能异常?
主页面、图片、接口和通知可能使用不同域名。查看连接记录中的实际域名,检查是否遗漏子域名或接口域名,并排查过宽的关键词规则、REJECT 和 IP 规则。
相关阅读
- 继续看 Shadowrocket 规则集怎么选
- 先了解 Shadowrocket 如何导入和更新订阅
- 规则命中但节点连不上时,查看连接排查步骤
- 需要对比全局模式时,查看 Shadowrocket 全局代理设置
参考资料
- Apple App Store:Shadowrocket 应用页面
- Shadowrocket 设置说明页面:Global Routing、规则类型与匹配顺序(shadow-help.com)
- Shadowrocket 配置与规则说明页面:Config、规则顺序和诊断思路(shadow-official.com)