Shadowrocket规则推荐:3类规则集怎么选、导入后如何验收
简答:新手先用基础分流,确认国内直连、海外代理和局域网访问正常后,再单独加入去广告规则。选择规则源时优先看源码、格式、策略组、更新记录和是否包含脚本或MITM。
定义:Shadowrocket规则是根据域名、IP地址、关键词或地域条件,把连接交给PROXY、DIRECT、REJECT或自定义策略处理的路由条目。
先看推荐结论:Shadowrocket规则应该怎么选
如果你只是想让国内服务直连、指定海外服务走代理,优先选择基础分流;如果还要拦截广告,再单独添加一个REJECT规则集,不要一开始叠加多套拦截、重写和脚本。Shadowrocket的App Store页面说明,它支持按域名、域名后缀、关键词、CIDR和GeoIP匹配,也支持从URL或iCloud Drive导入规则文件。Shadowrocket App Store页面:规则类型与导入能力
| 方案 | 适合场景 | 优点 | 主要风险 | 建议 |
|---|---|---|---|---|
| 基础分流 | 国内直连、海外代理、局域网直连 | 规则少,容易定位问题 | 个别服务可能需要补充专用规则 | 新手首选 |
| 分流加去广告 | 希望拦截常见广告域名 | 可减少部分广告请求 | REJECT可能误拦截登录、图片或统计接口 | 单独启用,逐项验收 |
| 隐私增强 | 愿意维护追踪、遥测和重写规则 | 覆盖范围更广 | 可能含脚本、MITM或URL Rewrite | 先看文件内容和权限要求 |
| 轻量自定义 | 办公、家庭设备或少量固定域名 | 行为可预测,更新影响小 | 覆盖范围有限 | 只写明确需要的例外 |
规则集和节点订阅不是同一个东西:节点订阅提供连接信息,规则配置决定请求使用哪种策略。更新节点订阅后,当前配置的[Rule]区段不一定会同步改变;测试规则时要确认Home中的Global Routing确实选择了Config,并确认正在使用目标配置。
具名规则源对比:先看格式,再决定是否导入
截至2026-10-24,以下仓库页面都能看到源码或配置说明;“每日更新”只能说明仓库自述的维护方式,实际更新时间应继续查看README、Activity或Releases页面。规则源不是官方推荐榜单,表中的“适合”只表示其公开文件结构与用途。
| 规则源 | 主要用途与规模 | 格式或维护信息 | 许可证 | 脚本/MITM风险 |
|---|---|---|---|---|
| blackmatrix7/ios_rule_script | Shadowrocket目录较完整,按Advertising、Global、Mainland、Reject及Google、Apple、Telegram等服务分类 | 仓库包含Shadowrocket专用README和多类.list文件 | GPL-2.0 | 规则目录与rewrite、script分开;AdvertisingScript页面明确包含HTTP脚本、响应脚本和MITM字段,不能当作普通分流规则直接启用 |
| Mr-Grin/proxy-rules | 将China、ChinaMax、ChinaIPs等来源合并为china与global两类,并渲染为Shadowrocket等客户端格式 | README提供Shadowrocket module与raw rule两种入口,适合需要合并规则的人 | 仓库页面未列明许可证 | README主线是规则列表;使用前仍应检查实际下载文件,不要因为文件是.list就默认没有脚本 |
| ACL4SSR | 跨客户端ACL、去广告、GFWList和Clash规则片段,适合挑选单项规则而不是直接覆盖完整配置 | 组织页说明面向Android、Windows、Mac和iOS客户端,兼容Shadowrocket前要检查语法 | CC-BY-SA-4.0 | 公开仓库概览未显示MITM或脚本入口;仍需检查具体文件内容和引用格式 |
| Loyalsoldier/surge-rules | 提供apple、cncidr、direct、google、proxy、reject等分类列表 | 主要面向Surge格式;是否能在Shadowrocket中按RULE-SET使用,要先核对文件内容 | 以仓库说明为准 | 公开发行文件以规则列表为主;不要把Surge配置段直接粘到Shadowrocket的[Rule]中 |
实际选择时可以按下面的顺序判断:只要基础分流,就优先选有Shadowrocket目录的规则源;要去广告,先看是否只是DOMAIN或RULE-SET;看到HTTP-REQUEST-SCRIPT、HTTP-RESPONSE-SCRIPT、MITM或[URL Rewrite],就把它当作高级配置单独评估。公开项目也可能整合其他来源,因此要保留原配置并确认许可证和上游说明。
七级规则顺序速查:先具体,后宽泛
规则排查最容易出错的地方不是语法,而是顺序。连接通常按文件从上到下检查,先命中的策略生效;因此明确的域名例外应放在宽泛规则前,GEOIP和FINAL应放在后面。Shadowrocket的App Store页面确认了域名、CIDR和GeoIP匹配能力,公开配置说明也采用了具体条件在前、FINAL兜底在后的结构。Shadowrocket App Store页面 Shadowrocket配置文件示例:规则类型、顺序和导入路径
| 顺序 | 类型 | 示例 | 常见错误 |
|---|---|---|---|
| 1 | 局域网与私有地址 | IP-CIDR,192.168.0.0/16,DIRECT,no-resolve | 只写IPv4,遗漏IPv6私有地址 |
| 2 | 明确直连例外 | DOMAIN,login.example.com,DIRECT | 把必须直连的固定域名放到宽泛规则后 |
| 3 | 明确代理例外 | DOMAIN-SUFFIX,google.com,PROXY | 误用DOMAIN,导致www或子域名不匹配 |
| 4 | 明确拦截规则 | DOMAIN-KEYWORD,ads,REJECT | 关键词过宽,误伤正常业务域名 |
| 5 | RULE-SET或DOMAIN-SET | RULE-SET,规则地址,PROXY | 把带类型的RULE-SET当成纯域名列表 |
| 6 | 地域兜底 | GEOIP,CN,DIRECT | 放在具体海外域名之前,可能提前命中 |
| 7 | 最终兜底 | FINAL,PROXY | 放在前面,导致后续规则没有机会匹配 |
私有IPv4地址范围可参考IANA列出的10.0.0.0/8、172.16.0.0/12和192.168.0.0/16。IPv6的fe80::/10是链路本地地址,fc00::/7是唯一本地地址,分别见RFC 4291和RFC 4193。这些规则只用于本地网络直连,不代表所有局域网服务都一定能访问。
为什么海外域名要放在GEOIP,CN,DIRECT之前?GEOIP判断的是目标IP的地域分类,不是网页语言或域名后缀。CDN、解析结果和地域数据库可能让同一个服务出现不同分类,所以已经明确需要代理的服务应先写DOMAIN-SUFFIX或对应RULE-SET,再放GEOIP作为较宽泛的判断,FINAL最后兜底。
可复制的[Rule]区段:基础分流加可选去广告
下面是可合并进已有配置的[Rule]区段,不是包含节点、DNS和其他设置的完整配置。示例使用Shadowrocket内置策略名PROXY、DIRECT和REJECT;如果你的配置使用自定义策略组,应替换成配置中已经声明的组名。规则集地址来自公开仓库,导入前仍要打开README核对格式。
[Rule]
# 1. 本地与局域网直连
IP-CIDR,10.0.0.0/8,DIRECT,no-resolve
IP-CIDR,172.16.0.0/12,DIRECT,no-resolve
IP-CIDR,192.168.0.0/16,DIRECT,no-resolve
IP-CIDR6,fe80::/10,DIRECT,no-resolve
IP-CIDR6,fc00::/7,DIRECT,no-resolve
DOMAIN-SUFFIX,local,DIRECT
# 2. 已明确需要代理的域名;DOMAIN-SUFFIX覆盖根域名及子域名
DOMAIN-SUFFIX,google.com,PROXY
DOMAIN-SUFFIX,github.com,PROXY
# 3. 可选:确认来源和误拦截范围后再启用
RULE-SET,https://raw.githubusercontent.com/blackmatrix7/ios_rule_script/master/rule/Shadowrocket/Advertising/Advertising.list,REJECT
# 4. 国内规则集;与上面的具体代理例外保持顺序关系
RULE-SET,https://raw.githubusercontent.com/blackmatrix7/ios_rule_script/master/rule/Shadowrocket/China/China.list,DIRECT
# 5. 地域兜底与最终兜底
GEOIP,CN,DIRECT
FINAL,PROXY如果不需要去广告,先删除Advertising这一行;如果你的目标是“未知请求直连”,将最后一行改为FINAL,DIRECT。不要同时导入多套功能重叠的China、Global或Reject规则,否则重叠域名会按照更早出现的条目处理。Google、App Store、流媒体、AI服务和Telegram等应用通常涉及多个域名或地址,优先使用对应服务的专用RULE-SET,并通过日志确认实际命中项,不要只凭一个主页域名扩大关键词范围。
Shadowrocket导入步骤:配置、规则集和模块分开处理
- 备份配置:先保存当前配置副本,记下正在使用的策略组名称和Global Routing状态。
- 确认配置模式:打开Home,进入Global Routing,选择Config;Proxy或Direct模式不会按你编辑的[Rule]逐条测试。
- 进入规则编辑:打开Config页,在当前配置旁点击信息按钮,进入Edit,再打开Rules并点击右上角加号。公开Shadowrocket配置仓库给出的路径是Config→当前配置的信息按钮→Edit→Rules→+,但菜单文字可能随客户端界面变化。Shadowrocket配置文件仓库:添加RULE-SET的操作路径
- 添加规则集:将Type设为RULE-SET,粘贴规则列表URL,选择PROXY、DIRECT或REJECT策略,保存后拖动到正确位置。带规则类型的列表使用RULE-SET;纯域名列表才考虑DOMAIN-SET。
- 检查当前配置:确认保存后的配置仍是Home→Global Routing中选中的Config;只把文件导入Config页但没有选中它,规则不会按预期生效。
- 发起新请求并看日志:关闭正在播放的视频或网页后重新请求,在连接日志中记录目标、命中规则和策略。已有连接可能继续沿用旧路径。
远程规则更新覆盖本地修改时,最稳妥的做法是不要直接编辑远程文件:把个人例外写在当前配置[Rule]中,并放在远程RULE-SET之前;远程列表只作为被引用的后续条目。每次更新后重新检查当前配置、规则顺序和策略名称,必要时恢复备份。这样可以减少更新后本地例外消失的问题。
六类测试目标:不要只测一个网页
导入后建议按“局域网→国内服务→海外服务→应用分类→拦截→兜底”的顺序测试。下面的预期策略是基础分流示例,实际结果应以你的配置目标为准。
| 测试目标 | 建议预期 | 日志中要确认 | 异常先查什么 |
|---|---|---|---|
| 局域网设备、路由器或NAS | DIRECT | 命中私有地址或local规则 | 私有网段、IPv6规则、系统VPN权限 |
| App Store或Apple系统服务 | 按配置设为DIRECT或专用策略 | 实际域名是否命中Apple规则 | 不要只测试App Store首页,检查日志中的真实请求 |
| 国内支付或银行页面 | DIRECT | 是否命中China或明确直连规则 | REJECT规则、GEOIP位置和DNS解析 |
| Google或海外开发服务 | PROXY | 是否命中DOMAIN-SUFFIX或对应RULE-SET | DOMAIN误写、策略组不存在、GEOIP提前命中 |
| 流媒体、Telegram或AI服务 | 按各自专用规则设为PROXY | 应用实际连接的域名或地址 | 不要只添加主页域名,优先检查对应服务规则集 |
| 广告测试请求和未匹配域名 | 分别验证REJECT与FINAL | 是否命中拦截规则、最后是否进入FINAL | 规则集格式、远程地址可访问性和兜底策略 |
如果全局Proxy模式能打开、Config模式打不开,先不要更换节点:检查Global Routing是否为Config,再看日志命中了哪条规则。若关闭REJECT规则后登录或图片恢复,说明应缩小拦截范围或增加明确直连例外。若所有规则都没有命中,则优先检查当前配置是否选中、远程列表是否下载成功,以及RULE-SET与DOMAIN-SET类型是否写反。
常见问题:规则失效、误匹配和更新覆盖
DOMAIN和DOMAIN-SUFFIX怎么选?
DOMAIN,example.com,PROXY只匹配根域名本身;需要覆盖根域名及其子域名时,使用DOMAIN-SUFFIX,example.com,PROXY。如果只想给某个登录或接口域名单独设置策略,把DOMAIN精确规则放在DOMAIN-SUFFIX之前。
GEOIP,CN,DIRECT可以放在最前面吗?
不建议。它是较宽泛的目标IP地域判断,应该放在明确的海外域名、服务规则集和私有地址之后。否则具体域名可能先被地域规则处理,导致与预期不同。
PROXY必须替换成自己的策略组吗?
不一定。Shadowrocket的App Store说明支持代理策略,公开配置示例也使用PROXY作为策略名。若当前配置已经有可用的PROXY策略,可以保留;如果你使用自定义策略组,就把规则中的PROXY替换为已声明的组名。
RULE-SET和DOMAIN-SET有什么区别?
RULE-SET引用的文件通常已经包含DOMAIN、IP-CIDR等规则类型;DOMAIN-SET通常是纯域名列表,策略由配置条目指定。导入前先打开文件或README确认格式,不要只看文件后缀。
规则更新后自己的例外消失怎么办?
不要修改远程规则文件。把个人例外写在本地配置[Rule]中,并放在远程RULE-SET之前;更新后确认本地配置仍是当前激活配置,再重新测试命中日志。
Shadowrocket规则推荐是否等于节点推荐?
不是。规则只决定请求使用PROXY、DIRECT或REJECT等策略,不能替代节点订阅,也不能保证连接速度、延迟或可用性。线路方案需要结合实际网络环境单独判断。
使用边界与下一步
本文是第三方使用指南,不是Shadowrocket官方页面,也不代表任何规则仓库的官方推荐。Shadowrocket的App Store页面将其定位为基于规则的代理工具,并说明用户可以自行导入规则文件;实际配置仍应以客户端当前界面、规则仓库README和你的网络环境为准。Shadowrocket App Store页面:产品说明
如果你刚开始配置,建议先保留局域网直连、两个明确的海外域名、GEOIP和FINAL,确认日志命中后再加入去广告或服务分类规则。每次只改一处,出现异常就恢复上一份配置。
常见问题
Shadowrocket规则推荐新手先选哪一种?
先选基础分流,只保留局域网直连、明确海外域名、GEOIP和FINAL。确认日志、国内服务和海外服务都符合预期后,再单独添加去广告规则集。
Shadowrocket规则和节点订阅有什么区别?
节点订阅提供连接信息,规则配置决定请求使用PROXY、DIRECT、REJECT或自定义策略。更新节点订阅不代表当前配置的[Rule]区段也会更新。
为什么DOMAIN,google.com,PROXY经常被认为失效?
DOMAIN只匹配google.com本身,不自动覆盖www.google.com或其他子域名。需要覆盖根域名和子域名时,应使用DOMAIN-SUFFIX,google.com,PROXY。
GEOIP,CN,DIRECT为什么不能放在规则最前面?
GEOIP属于较宽泛的目标IP地域判断。把它放在明确海外域名或服务规则前面,可能提前命中并改变预期路径;更稳妥的顺序是具体规则在前、GEOIP在后、FINAL最后。
去广告规则导入后登录或图片打不开怎么办?
先关闭REJECT规则集并重新发起请求。如果问题消失,再查看日志中被拦截的域名,缩小关键词范围或增加明确的DIRECT例外,不要直接叠加更多拦截列表。
远程规则更新后本地规则被覆盖怎么办?
不要编辑远程文件,把个人例外写在本地配置[Rule]中并放到远程RULE-SET之前。更新后确认当前激活配置和规则顺序,再用新请求检查日志。
相关阅读
参考资料
- Shadowrocket App Store页面:规则类型、导入能力与产品定位
- blackmatrix7/ios_rule_script:分流规则、重写规则与脚本仓库
- ios_rule_script Shadowrocket目录:服务分类与规则文件索引
- Shadowrocket AdvertisingScript:脚本、MITM与规则说明
- Mr-Grin/proxy-rules:合并并渲染为Shadowrocket格式的规则集
- ACL4SSR组织页:跨客户端ACL规则与许可证信息
- Loyalsoldier/surge-rules Releases:分类规则列表与发行记录
- haritos90/shadowrocket-config-files:Shadowrocket配置、RULE-SET格式与导入路径
- IANA Private-use IP addresses:IPv4私有地址范围(iana.org)
- RFC 4291:IPv6链路本地地址与fe80::/10
- RFC 4193:IPv6唯一本地地址与fc00::/7