Shadowrocket 分流规则怎么设置?4 步搞定 Config、规则顺序与命中验证
简答:Shadowrocket 分流的关键是:先确认配置文件已保存并处于当前活动状态,再在 Home → Global Routing 中选择 Config;规则按从上到下匹配,精确规则应放在宽泛规则前,FINAL 通常作为最后的兜底。指定域名代理、国内地址直连、广告拦截和应用请求排查分别看对应小节。本文是第三方使用指南,不是相关客户端的官网。
定义:Shadowrocket 分流规则,是把域名、IP 地址或其他请求特征与 PROXY、DIRECT、REJECT 等策略对应起来,使不同请求按配置分别走代理、直连或拒绝。
先看首屏速查卡:规则不生效先查这 4 项
如果你已经导入节点或配置,但所有网站仍然像走同一路径,先不要反复添加规则。按照下面顺序检查,通常可以先区分“模式没有启用”“编辑的文件不是当前文件”“规则顺序不对”和“节点或 DNS 本身失败”。
| 检查顺序 | 要确认的内容 | 判断标准 | 下一步 |
|---|---|---|---|
| 1 | Global Routing | 需要规则分流时是否选择 Config | 若是 Proxy 或 Direct,先切换到 Config,再发起新请求 |
| 2 | 活动配置 | 当前选中的文件是否就是刚刚编辑的文件 | 重新选择、保存并确认活动状态;不要只看文件是否出现在列表中 |
| 3 | 规则顺序 | 精确 DOMAIN 是否排在宽泛后缀、关键词或 FINAL 前 | 把例外规则移到前面,并保留原文件副本 |
| 4 | 实际请求 | 连接记录或诊断信息是否显示预期策略 | 确认命中规则后,再判断是 DNS、策略组还是节点连接问题 |
客户端的 App Store 页面说明其属于基于规则的网络工具,支持按域名、域名后缀、域名关键词、CIDR 地址范围和 GeoIP 等条件配置规则,也能记录请求信息;具体字段和界面仍应以当前安装版本为准。可参考App Store 中的 Shadowrocket 功能说明。开发者信息可在Shadow Launch Technology Limited 的产品页面核对。
第 1 步:先区分节点订阅、配置文件和分流规则
这三个概念经常被混用,但作用不同:
- 节点或服务器记录:提供连接目标、认证信息或协议参数,解决“使用哪条连接”的问题。
- 配置文件:可以包含通用设置、规则、策略和其他模块,解决“不同请求如何处理”的问题。
- 分流规则:位于配置文件的规则部分,决定匹配到某个域名或地址后使用 PROXY、DIRECT、REJECT 等策略。
因此,导入节点后不一定自动拥有符合你需求的分流规则;导入一个规则文件,也不等于其中包含可用的节点。修改前先在 Config 中保存或导出副本,并记录当前 Global Routing、活动配置和默认策略。若配置来自远程地址,还要注意后续更新可能覆盖本地修改,重要改动应先保留本地备份。
界面菜单名称可能随版本变化。若当前页面没有完全对应的“编辑”“启用”或“活动配置”文字,应以当前界面能确认的文件选择、保存状态和路由模式为准,不要因为名称不同就直接删除配置。
第 2 步:在 Config 中启用规则模式
- 打开 Config。找到需要修改的配置文件,先复制或导出备份。不要直接在唯一副本上试错。
- 定位规则部分。文本配置通常把分流内容放在
[Rule]区域;如果使用可视化编辑器,则检查规则类型、匹配值和策略字段是否分别填写。 - 保存后重新选择文件。文件存在列表中,不等于它一定是当前正在使用的文件。返回 Config 页面,确认当前选中的文件就是刚才保存的版本。
- 回到 Home。在 Global Routing 中选择 Config,再关闭并重新发起一次测试请求。不要只刷新已经建立连接的页面。
Config、Proxy、Direct 是整体路由模式,不是三个节点。Config 按当前配置里的规则处理请求;Proxy 用选中的代理路径做整体对照;Direct 则尝试直连。测试完成后,如果你原先不是 Proxy 或 Direct,请恢复原来的 Global Routing 模式,避免把临时对照模式当成长期设置。
第 3 步:常见规则类型、策略与可复制模板
常见规则写法通常由“类型、匹配值、策略”组成,字段之间使用英文逗号。下面的 example.com 和策略名只是语法占位符,不能直接代表真实服务地址。
| 类型 | 适用场景 | 示例 |
|---|---|---|
| DOMAIN | 只匹配一个完整域名 | DOMAIN,login.example.com,PROXY |
| DOMAIN-SUFFIX | 匹配一个域名及其子域名 | DOMAIN-SUFFIX,example.com,PROXY |
| DOMAIN-KEYWORD | 域名中包含指定关键词 | DOMAIN-KEYWORD,example,PROXY |
| IP-CIDR | 匹配 IPv4 地址段 | IP-CIDR,192.168.0.0/16,DIRECT |
| GEOIP | 按 IP 地理数据库结果匹配 | GEOIP,CN,DIRECT |
| FINAL | 处理前面没有命中的请求 | FINAL,DIRECT |
每个模板都要先核对策略名称。只有当当前配置中确实存在名为 PROXY、DIRECT 或对应策略组时,示例才能直接使用。如果你的配置使用了自定义策略组,例如某个中文名称或分组名称,就要把模板最后一列替换成配置中实际存在的名称;如果策略不存在,规则可能无法按预期执行。
指定域名走代理,其余请求直连
适合只想处理少数域名的场景:
[Rule]
DOMAIN-SUFFIX,example.com,PROXY
DOMAIN,api.example.net,PROXY
FINAL,DIRECT
如果只需要匹配一个完整主机名,优先使用 DOMAIN;如果还要覆盖其子域名,使用 DOMAIN-SUFFIX。域名中不要加入协议头、端口或网页路径。
国内地址直连,其他未命中请求使用代理
[Rule]
GEOIP,CN,DIRECT
FINAL,PROXY
GEOIP 依赖 IP 地理数据库,不等于按网站语言或品牌所在地判断。如果某个域名必须固定走代理,应把更具体的 DOMAIN 或 DOMAIN-SUFFIX 放在 GEOIP 前面。FINAL,PROXY 也不会自动修复代理连接失败,它只处理前面没有命中的请求。
精确例外放在宽泛规则之前
假如大范围域名默认直连,但其中一个登录域名要走代理:
[Rule]
DOMAIN,login.example.com,PROXY
DOMAIN-SUFFIX,example.com,DIRECT
FINAL,DIRECT
规则一般按文本从上到下检查,前面命中后,后面的规则不会重新覆盖。因此,精确 DOMAIN 要放在宽泛的 DOMAIN-SUFFIX、DOMAIN-KEYWORD 或过早的 FINAL 前面。
第 4 步:网站分流与应用分流怎么区分
Shadowrocket 的规则能力主要围绕请求特征配置,例如域名、后缀、关键词、IP 地址范围和 GeoIP。它能捕获设备上应用产生的网络请求,但“捕获某个应用的流量”不等于“直接按应用名称写一条分流规则”。一个应用可能同时访问多个域名,单写一个 DOMAIN 规则往往覆盖不完整。
如果你的目标是“某个应用走代理,其他应用直连”,可以按以下方式做定位:
- 先让目标应用只执行一个明确动作,例如打开一个页面或刷新一个功能。
- 在 Shadowrocket 的请求记录、连接记录或诊断信息中,记录该动作实际访问的域名。
- 对确认过的域名分别使用 DOMAIN 或 DOMAIN-SUFFIX 规则,而不是凭应用名称猜测规则。
- 将这些规则放在宽泛规则之前,再重新打开应用并查看是否命中预期策略。
- 如果应用使用多个接口、CDN、登录域名或动态地址,继续根据新出现的请求补充规则;不要把不确定的宽泛关键词直接设为 PROXY 或 REJECT。
这种方法是“按应用请求涉及的域名进行近似分流”,不是保证所有应用流量都能被一个应用名规则完整覆盖。若当前版本提供专门的场景或应用级选项,应以当前界面和版本说明为准;本文不把未核实的应用级菜单当作统一功能。
广告拦截规则要单独处理,并保留回滚入口
广告拦截和普通分流不是同一个目标。普通分流通常在 PROXY 与 DIRECT 之间选择路径;拦截规则可能使用 REJECT 拒绝匹配请求。Shadowrocket 的 App Store 功能说明提到支持按域名或用户代理进行广告拦截,但实际规则来源、覆盖范围和副作用取决于所使用的配置。
如果你需要做最小化测试,可以只对一个明确的测试域名使用:
[Rule]
DOMAIN,ads.example.com,REJECT
FINAL,DIRECT
这只是语法示例,不是可直接套用的广告规则库。范围过宽可能影响登录、验证码、图片或应用接口。启用前备份原配置;如果页面缺少资源或登录异常,先移除这条测试规则或恢复备份,再逐条复测。不要把广告拦截规则和“国外代理”规则混在一起排错。
规则不生效或网页打不开:按现象定位
| 现象 | 先查什么 | 判断标准 | 处理与回滚 |
|---|---|---|---|
| 所有请求都像走同一路径 | Global Routing | 是否仍是 Proxy 或 Direct | 切换到 Config,重新请求;测试完恢复原模式 |
| 修改规则后结果没变化 | 活动配置 | 编辑文件是否就是当前选中的文件 | 重新选择、保存并确认,再关闭旧连接后重测 |
| 指定域名被错误策略处理 | 规则顺序 | 前面是否已有后缀、关键词或 GEOIP 规则命中 | 把精确 DOMAIN 放前面,保留修改前副本 |
| 规则显示命中但网页打不开 | 节点与 DNS | Proxy 模式下同一目标是否也失败 | 仅作定位对照,不代表 Proxy 一定能解决;完成后恢复原模式 |
| 只有部分应用异常 | 实际请求域名 | 是否遗漏登录、接口、CDN 或资源域名 | 查看请求记录,按已确认域名补规则,不要先扩大关键词范围 |
| 配置中出现策略不存在 | 策略名称 | 规则末尾名称是否与当前策略组完全一致 | 替换为现有策略名,保存后重新选择活动配置 |
Proxy 模式可用而 Config 模式失败,说明问题可能在规则、策略目标、活动配置或 DNS 路径;这不是“切到 Proxy 就修复”的结论。Proxy 模式也失败时,优先检查节点记录、认证参数、当前网络和 DNS,不要继续堆叠规则。每次只改一个变量,才能知道是哪一步产生了变化。
Shadowrocket 分流设置的最终检查清单
- 模式:需要按规则分流时,Global Routing 选择 Config。
- 文件:编辑、保存和当前活动配置必须是同一份。
- 顺序:精确 DOMAIN 在前,宽泛后缀或关键词在后,FINAL 通常放在规则末尾。
- 策略:PROXY、DIRECT、REJECT 或自定义策略组名称必须真实存在并拼写一致。
- 验证:用新请求查看实际命中结果,不要只看客户端是否显示已连接。
- 应用:先通过请求记录找出应用实际访问的域名,再做域名分流;不要把应用名规则当成已核实功能。
- 回滚:测试完成后恢复原路由模式,异常时优先恢复备份并逐项复测。
本文只介绍配置和排查方法,不提供节点、订阅或服务器内容。Shadowrocket 是客户端工具,能否连接还取决于现有节点、网络、DNS 和配置。客户端版本、菜单文字和规则解析能力可能变化,应以当前 App Store 页面和实际界面为准。
常见问题
Shadowrocket 导入节点后为什么没有自动分流?
节点或订阅主要解决连接目标和认证信息,不一定包含符合你需求的分流规则。请确认已经有配置文件,并在 Home → Global Routing 中选择 Config;如果仍是 Proxy 或 Direct,配置中的逐条规则不会按预期参与分流。
Shadowrocket 的 Config、Proxy、Direct 有什么区别?
Config 按当前活动配置中的规则处理请求;Proxy 使用选中的代理路径做整体对照;Direct 尝试直连。它们是整体路由模式,不是三个节点名称。测试完成后应恢复原来的模式。
DOMAIN 和 DOMAIN-SUFFIX 应该怎么选?
只匹配一个完整域名时使用 DOMAIN;希望覆盖该域名及其子域名时使用 DOMAIN-SUFFIX。精确 DOMAIN 通常应放在宽泛的后缀、关键词或 GEOIP 规则前面。
FINAL 规则必须放在最后吗?
FINAL 用于处理前面没有命中的请求,通常放在规则列表后部。若它过早出现,后面的规则可能没有机会处理请求。FINAL 也不是失败重试机制,前面的 PROXY 连接失败后不会自动改走 FINAL。
Shadowrocket 显示已连接,但指定网站还是打不开怎么办?
先查看实际请求命中了哪条规则,再短暂切换 Proxy 模式测试同一目标。Proxy 也失败时,优先检查节点、认证、DNS 和当前网络;Proxy 成功而 Config 失败时,再检查活动配置、规则顺序、策略名称和 DNS。测试后恢复原 Global Routing 模式。
Shadowrocket 能不能直接按应用名称设置分流?
本文不把按应用名称设置规则视为已核实的通用功能。更稳妥的做法是先查看该应用实际发出的域名和接口请求,再用 DOMAIN 或 DOMAIN-SUFFIX 进行分流。一个应用可能访问多个域名,因此单条规则可能覆盖不完整。
为什么规则写对了,但应用仍然有部分功能打不开?
应用可能同时使用登录域名、接口域名、CDN 或资源域名。请查看请求记录,确认遗漏的域名和实际策略;不要一开始就使用过宽的 DOMAIN-KEYWORD 或 REJECT,否则可能误伤登录、验证码和页面资源。
相关阅读
- Shadowrocket 连接成功但打不开网页的排查步骤
- Shadowrocket DNS 设置与网页打不开排查
- Shadowrocket 导入订阅后节点为空怎么办
- 连接后部分软件打不开时的分流与 DNS 排查
参考资料
- App Store:Shadowrocket 的规则能力、请求记录与客户端说明
- Shadow Launch Technology Limited 产品页面:开发者与产品信息(shadowlaunch.com)