Shadowrocket配置文件语法详解:规则与分流进阶实战

从 .conf 文件各配置段的作用,到规则优先级与远程 RULE-SET 引用,逐步掌握 Shadowrocket 自定义分流。文中附有可复制的配置示例,并介绍日志验证、版本差异和 MitM 证书解密的安全注意事项。

本文速览

本文面向已经在使用 Shadowrocket、希望自己检查或调整分流规则的用户,按配置段、规则顺序、远程 RULE-SET 和日志验证逐步说明 .conf 文件的阅读方法。示例中的域名、IP 与 URL 都是占位内容,不能直接作为可用线路或规则源。修改前请备份当前配置,并以 Shadowrocket 实际识别的配置为准。

一、先弄清 .conf 配置文件的组成

Shadowrocket 的 Config 用于管理配置文件及其规则。它与 Subscribe 订阅不是同一类内容:订阅主要用于取得和更新服务器记录,配置文件则可以定义规则,以及与规则处理相关的设置。导入了服务器,不代表已经选择了预期的 Config;选择了 Config,也不代表其中每条规则都符合自己的分流需求。

.conf 通常按段落组织。方括号中的段名标记后续内容的用途,具体可识别的字段与语法可能随应用版本和配置来源而不同。阅读文件时先看段名,再看等号或逗号分隔的字段;不要把其他格式的配置整段粘贴进 Shadowrocket,也不要仅通过更改文件扩展名来转换格式。

常见配置段

[General]
通用设置区域,具体可用选项以当前 Shadowrocket 的配置解析结果为准。
[Rule]
按顺序列出匹配条件及对应策略,是检查分流结果的主要位置。
[Host]
用于配置主机名与地址的对应关系;修改前应明确其影响范围。

段名用于分类;文件中出现某个段名,不等于所有字段都已被当前版本接受。

其他规则相关段

[URL Rewrite]
描述 URL 重写类规则,和普通域名分流规则不是同一用途。
[MITM]
与中间人解密配置有关,可能涉及证书信任及受影响域名。
[Proxy] / [Proxy Group]
部分配置会用这些段组织服务器或策略组;具体格式应以文件来源和应用识别结果为准。

不要只复制单独一段就假设其依赖项也已一并导入。

不同配置文件可以省略不需要的段,也可能引用远程规则。遇到无法识别的字段时,先在副本中逐段检查,保留原始文件以便恢复。若配置由自己已有的服务商提供,涉及服务器地址、认证信息或令牌的行应按凭据保管,不要公开粘贴到论坛或在线检查工具。

二、规则如何匹配,顺序为什么重要

在 [Rule] 中,每条规则通常表达匹配类型、匹配内容与处理策略。对常见的规则列表,应按文件中的排列顺序检查:前面的规则先参与判断,匹配后便会影响该请求所采用的策略。若宽泛规则排在更具体的规则前面,后面的例外规则可能无法按预期生效。规则列表末尾常用 FINAL 提供兜底策略。

[Rule]
DOMAIN-SUFFIX,example.com,PROXY
DOMAIN,www.example.net,DIRECT
IP-CIDR,192.0.2.0/24,DIRECT,no-resolve
GEOIP,CN,DIRECT
FINAL,PROXY

上面只展示规则行的阅读方式,域名与网段均为文档示例。实际策略名称必须能在当前配置中对应到可用策略;如果策略名写错,即使匹配条件正确,结果也可能不符合预期。

结论:先看命中顺序,再看策略名称

当某个域名走错路径时,先从 [Rule] 顶部向下找第一条可能匹配的规则,再确认该行右侧策略在当前配置中存在。不要一开始就同时改 DNS、服务器与多条规则,否则很难定位是哪项改动改变了结果。

三、在 Shadowrocket 中安全地修改并验证

实际界面会随版本和配置来源有所差异。以下步骤强调操作顺序:先确认当前生效文件,再复制备份,修改一项后验证一次。若文件是远程托管或由自己的服务商维护,应先确认本地编辑是否会被后续更新覆盖。

  1. 确认当前配置

    打开 Config,找到正在使用的配置文件并核对名称。不要只凭 Home 中已选中服务器,就推断当前正在使用哪份规则配置。

  2. 保存备份副本

    在 Config 中复制或导出原配置;若当前界面没有对应操作,先保留原始 .conf 文件。记录修改前的规则行与测试域名,确保可以恢复。

  3. 只改一条规则

    进入当前配置的编辑界面,先定位 [Rule],再调整一条测试规则的顺序或策略。检查逗号、域名拼写、CIDR 前缀和策略名称,不要顺手改动无关段落。

  4. 保存并重新选择

    保存后回到 Config,确认编辑后的文件仍是当前使用的配置。若应用提示语法或导入错误,先停止继续修改,回到备份检查报错附近的段名和字段。

  5. 查看连接日志

    回到 Home,在 Global Routing 中确认选择 Config,再开启连接并访问一个明确的测试域名。查看 Shadowrocket 的请求记录或日志,核对请求匹配的规则与处理策略;不同版本的日志入口和字段呈现可能不同。

如果日志显示请求没有命中预期规则,检查域名是否被实际请求、规则是否排在更早的匹配项之后,以及该请求是否使用了缓存连接。若规则命中但访问仍失败,再分别检查策略可用性、网络状态与服务器侧情况。一次测试只改变一个条件,并记录测试前后的结果。

四、远程 RULE-SET 与版本差异怎么处理

RULE-SET 用于引用远程规则集时,配置行通常需要提供规则集地址和目标策略。下面仅展示结构示意,URL 与策略均为占位内容,不应当作真实规则服务使用:

[Rule]
RULE-SET,https://rules.example.com/sample.list,PROXY
FINAL,DIRECT

远程规则集的具体格式、可接受的地址形式及更新行为,应以 Shadowrocket 当前版本对该配置的解析结果为准。规则集本身也必须包含应用能够识别的规则行;一个可以在浏览器打开的 URL,并不自动意味着其响应内容符合规则集格式。若远程资源返回错误页面、空内容或登录页面,客户端可能无法按预期加载规则。

不同版本可能在配置导入、字段识别、远程内容更新和日志展示上有所变化。不能仅凭其他人的截图推断当前界面相同;也不要把某个版本中的未知字段解释为必然有效。出现行为差异时,保留原文件、记录 Shadowrocket 的实际提示,并逐项移除或调整最近新增的配置内容来缩小范围。

五、MitM 解密的适用范围与安全边界

MitM(中间人)解密不是普通分流规则的必要组成部分。它会改变特定域名 HTTPS 流量的处理方式,通常涉及在设备上安装并信任相应 CA 证书。证书一旦被信任,其签发能力就具有安全影响;配置不当可能暴露敏感请求内容,或造成应用连接异常。

MitM 的配置键、证书安装流程和界面名称可能随应用与系统版本变化。本文不提供可直接套用的证书参数;请以当前 Shadowrocket 界面提示和证书实际用途为准。普通域名分流测试优先使用 [Rule] 与日志验证,不需要为了确认策略命中而启用 HTTPS 解密。

六、常见问题

规则写对了,为什么还是走错策略?

打开 Config 确认当前生效文件,再在 [Rule] 中从上往下查找可能先命中的规则。随后查看请求日志中的匹配结果,并核对该行的策略名称是否存在。

远程 RULE-SET 更新失败,应该先改哪一项?

先确认 URL 是否完整,再核实响应内容确实是规则文本。不要先删除本地配置;同时向规则维护方确认地址是否需要额外授权,以及当前返回内容是否发生变化。

修改后日志里看不到预期规则怎么办?

确认 Home → Global Routing 当前选中 Config,并确认 Config 中选择的是刚修改的文件。再用一个已知会产生请求的域名测试,避免把没有实际发出的请求当作规则未命中。

为了检查分流,需要开启 MitM 吗?

通常不需要。先用 [Rule] 和连接日志核对匹配与策略;只有确有解密用途且理解证书风险时才配置 MitM,并在测试结束后复查证书信任状态。

Shadowrocket 正版获取说明