Shadowrocket 博客 · 规则与配置

规则分流到底怎么写:
DOMAIN-SUFFIX、GEOIP、FINAL 一次讲清楚。

首页和详细教程里都提到了"规则分流",也各给了一段示例,但都是点到为止。这篇文章把规则文件里最常见的几种匹配类型、它们的匹配顺序,以及新手最容易写错的几个地方,按实际例子完整过一遍。

规则文件到底在解决什么问题

Shadowrocket 连接之后,默认可以选择让「所有流量」都走代理节点,这种模式最省心,但也最浪费——国内网站本来直连就能访问,绕一圈经过节点反而更慢,还占用节点的带宽额度。规则文件要解决的就是这一件事:把不同的网络请求,按域名或 IP 分别判断该走「直连」还是「代理」,而不是所有流量一刀切。

规则文件本质上是一份纯文本清单,每一行是一条规则,格式统一是:

类型,匹配内容,策略

Shadowrocket 从上到下逐行读取这份清单,某个网络请求命中了哪一行,就按那一行末尾写的策略处理,命中即停止,不会继续往下比对。

常见的几种匹配类型

「类型」决定了这一行规则按什么维度去匹配请求,最常用的几种如下:

类型匹配对象示例说明
DOMAIN完整域名,精确匹配DOMAIN,www.example.com,PROXY只匹配这一个域名,子域名或其他前缀都不算命中
DOMAIN-SUFFIX域名后缀DOMAIN-SUFFIX,google.com,PROXY匹配 google.com 及其所有子域名(如 mail.google.com、scholar.google.com)
DOMAIN-KEYWORD域名中包含的关键字DOMAIN-KEYWORD,youtube,PROXY只要域名里出现这个关键字就命中,范围比后缀匹配更宽,容易误伤,谨慎使用
IP-CIDRIP 地址段IP-CIDR,192.168.0.0/16,DIRECT按 IP 段匹配,常用于内网地址、特定服务器 IP
GEOIPIP 所属国家/地区GEOIP,CN,DIRECT按目标服务器的地理位置判断,CN 代表中国大陆,通常用来兜底"国内 IP 直连"
FINAL没有匹配到以上任何一条时的默认策略FINAL,PROXY必须放在规则文件最后一行,作用是"其余情况怎么处理"

策略部分(逗号后面的最后一项)通常是 PROXY(走代理节点)、DIRECT(直连)或 REJECT(拒绝连接,常用于屏蔽广告域名)。

匹配顺序:从上到下,命中即停

这是规则文件里最容易被忽略、也最关键的一点:规则是按顺序从上到下逐条比对的,一旦某一行命中就立即按那一行的策略处理,不会继续往下看。这意味着规则的先后顺序会直接影响结果,即使后面还有更"精确"的规则,只要前面已经有一行命中了,后面的就不会被执行。

一个完整、可以直接理解的示例:

DOMAIN-SUFFIX,google.com,PROXY
DOMAIN-SUFFIX,csdn.net,DIRECT
DOMAIN-KEYWORD,youtube,PROXY
IP-CIDR,192.168.0.0/16,DIRECT
GEOIP,CN,DIRECT
FINAL,PROXY

按这份规则,访问 scholar.google.com 会命中第一行(域名后缀是 google.com),走代理;访问 blog.csdn.net 命中第二行,直连;访问路由器管理页面 192.168.1.1 命中第四行,直连;访问一个域名信息未知、但服务器 IP 属地在中国大陆的网站,会一路走到第五行 GEOIP 判断为直连;如果前面所有规则都没命中(比如一个海外小众网站,域名和 IP 都不在前面几条里),最终落到 FINAL,PROXY,走代理兜底。

几个新手常见的写法错误

01把 FINAL 写在了中间,不是最后一行+

FINAL 代表"以上都没匹配到时怎么处理",如果写在中间,它后面的所有规则都会变成永远不会被执行的"死代码",因为请求只要到了 FINAL 这一行就已经被处理并停止比对了。FINAL 必须放在文件的最后一行。

02用了 DOMAIN-KEYWORD,结果误伤了不相关的网站+

关键字匹配的范围比想象中宽,比如 DOMAIN-KEYWORD,ads,PROXY 不仅会匹配广告域名,也可能误伤域名里恰好包含 "ads" 这几个字母的正常网站。优先用 DOMAIN-SUFFIX 精确匹配已知域名,只有在确实需要覆盖大量相似域名、且能接受一定误伤范围时才用关键字匹配。

03GEOIP,CN,DIRECT 放得太靠前,导致想代理的网站被强制直连+

部分海外网站会把加速节点部署在中国大陆的 CDN 上,如果 GEOIP,CN,DIRECT 这条规则排在前面,这类网站可能被误判为"国内 IP"直接放行,反而访问不到真正想要的海外内容。通常建议把明确需要代理的域名规则放在前面,GEOIP 判断放在比较靠后的位置。

04规则改了但没生效,还是老的结果+

如果编辑的是本地手动维护的规则文件,保存后一般会立即生效;如果用的是订阅形式的规则集,需要重新触发一次更新(进入对应订阅条目点「更新」),本地缓存的旧规则不会自动刷新。

不想自己从零写规则?

大部分订阅服务商会同时提供一份配套的规则集,导入即可使用,不需要从这篇文章的示例重新敲一遍。这篇文章的目的是帮你看懂规则文件里每一行在做什么,方便你在别人写好的规则基础上做局部调整(比如新增一个想直连的国内网站),而不是要求每个人都从零开始编写。

说明:本文规则语法基于 Shadowrocket 官方使用手册与实测整理,不同版本对规则类型的支持可能略有差异,请以你所用版本的实际支持情况为准。

还没下载 Shadowrocket? App Store 一次性付费 $2.99,无内购、无订阅费,下载后按本文规则配置即可开始分流
查看下载指南 →

延伸阅读:返回首页:Shadowrocket 是什么 · 进阶规则配置教程