Shadowrocket规则与策略组怎么配置?分流与常见问题详解

Nate
Nate
IPWeb 技术研究员

如果你只是想知道 Shadowrocket 怎么添加节点、开启连接或检查出口 IP,这篇不是基础入门教程,可以先看 Shadowrocket怎么用?iOS新手一步步使用指南 。 这一页只处理更具体的问题:规则怎么写、策略组怎么选节点,以及分流为什么没有按预期生效。

在使用规则配置进行分流时,可以先把一次请求理解成: 请求 → 规则匹配 → 对应策略或动作 → 直连 / 拒绝 / 代理节点。 但这只是规则分流场景下的简化模型,并不代表 Shadowrocket 的所有运行模式都必须经过同一套规则判断。

Shadowrocket 在 Apple App Store 官方页面 中被定位为“Rule based proxy utility”,并明确列出域名、域名后缀、域名关键词、CIDR IP 段和 GeoIP 等规则条件。下面就按“先理解关系 → 再写规则 → 再看策略组 → 最后排查”的顺序展开。

一、Shadowrocket规则、策略组和节点是什么关系?

这三个概念不用反复讲,只要先分清各自负责什么:

层级 主要作用 你需要关注什么
规则 判断某类请求应该交给哪个策略或动作 匹配条件、规则位置、最终指向
策略组 在一组可选出口中决定当前使用哪个节点,或执行特定策略 策略组类型、当前选中的节点
节点 实际承载代理流量的服务器配置 服务器、端口、认证和可用性
DIRECT / REJECT 直接连接或拒绝请求 它们是动作,不是代理节点

所以,“节点已经存在”并不能单独证明当前请求一定会使用它。先看请求命中了什么规则,再看规则指向哪个策略或动作;如果指向的是策略组,还要继续确认这个组当前选中了哪个节点。

Shadowrocket 请求通过规则匹配、策略选择最终到节点的系统决策流程示意图
Shadowrocket规则分流中,从规则匹配到最终出口的简化关系

这里也要纠正一个常见误解:并不是“只要规则命中的策略组没变,换节点就一定没用”。 如果规则指向的是一个可以手动选择节点的策略组,而你改变了这个策略组当前选中的节点,最终代理出口就可能随之变化。真正需要确认的是:你改的节点是否属于当前实际被使用的策略组

二、Shadowrocket规则怎么配置?

规则的核心格式可以理解为:

规则类型, 匹配内容, 策略或动作

例如:

DOMAIN,www.example.com,Proxy
DOMAIN-SUFFIX,example.com,Proxy
GEOIP,CN,DIRECT
FINAL,Proxy

Shadowrocket 官方 App Store 页面明确说明支持 domain match、domain suffix、domain keyword、CIDR IP range 和 GeoIP lookup 等规则条件。常见规则可以先掌握下面这些:

Shadowrocket规则配置界面中的DOMAIN、DOMAIN-SUFFIX和FINAL规则
图2:Shadowrocket规则配置界面示例
规则类型 用途 示例
DOMAIN 精确匹配一个完整域名 DOMAIN,www.example.com,Proxy
DOMAIN-SUFFIX 匹配一个域名及其子域 DOMAIN-SUFFIX,example.com,Proxy
DOMAIN-KEYWORD 匹配域名中包含的关键词 DOMAIN-KEYWORD,example,Proxy
IP-CIDR 按 IPv4 / IPv6 地址段匹配 IP-CIDR,203.0.113.0/24,Proxy
GEOIP 根据 IP 地理数据库匹配 GEOIP,CN,DIRECT
FINAL 处理前面没有匹配到的剩余请求 FINAL,Proxy

2.1 DOMAIN和DOMAIN-SUFFIX怎么选?

如果只想匹配一个完整主机名,用 DOMAIN;如果希望某个主域及其多个子域都采用同一策略,用 DOMAIN-SUFFIX 更合适。

例如:

DOMAIN,www.example.com,Proxy
DOMAIN-SUFFIX,example.com,Proxy

第一条只针对 www.example.com;第二条则可以覆盖 api.example.comstatic.example.com 等子域。

2.2 规则顺序为什么重要?

在常规规则列表中,上面的规则通常优先于下面的规则,因此排查时不能只看“有没有这条规则”,还要看它前面有没有更早匹配的规则。

一个更稳妥的思路是:更具体的匹配放前面,更宽泛的兜底放后面,FINAL 留在最后处理未命中的请求。 同时要注意,模块规则和配置文件规则可能存在不同的优先关系,所以遇到“明明写了规则却没走”的情况,还要确认规则来自哪里,而不是只检查单个文件。

2.3 RULE-SET和DOMAIN-SET什么时候用?

当规则很多时,没有必要把每一个域名都手工写在主配置里。RULE-SET 可以引用包含多种规则类型的规则集,DOMAIN-SET 更适合引用纯域名列表。

如果你正在处理完整的 .conf 配置文件结构、导入和维护,而不是单独调规则,可以转到 Shadowrocket配置文件教程

三、Shadowrocket策略组怎么选择节点?

规则解决“这类请求交给谁”,策略组解决“这个策略当前实际用哪个出口”。两者放在一起看,才能判断最终流量为什么走到了某个节点。

3.1 手动选择型策略组

最容易理解的是手动选择型策略组。它可以包含多个节点,你在策略组中选中了哪个节点,这个节点就可能成为该组当前使用的代理出口。

因此,如果某条规则明确指向 Proxy 策略组,而 Proxy 组中当前选择的是“节点 A”,此时把该组切换到“节点 B”,新建立的相关连接就可能使用新的出口。

Shadowrocket策略组中选择代理节点的界面
图3:在Shadowrocket策略组中选择当前使用的节点

3.2 为什么“我换了节点”有时还是没变化?

不要先假设 Shadowrocket 没有响应。按下面三个问题检查更快:

  1. 当前请求是否真的命中了你以为的那条规则?
  2. 这条规则是否真的指向了你正在调整的策略组?
  3. 你切换的节点是否是这个策略组当前实际选择的节点?

如果其中任何一项不成立,你在其他节点列表里怎么切换,都可能与当前请求无关。

四、Shadowrocket规则为什么没有按预期生效?

这一章不再重复讲“规则 → 策略 → 节点”的概念,直接按排查顺序来。

4.1 先确认当前运行方式和配置来源

首先确认当前确实在使用需要规则分流的配置,而不是把其他运行方式下的结果误判成“规则没生效”。如果同时使用了配置文件、模块、订阅或手动内容,还要确认当前规则实际来自哪一层。

4.2 再看请求实际命中了哪条规则

Shadowrocket 官方说明中包含 HTTP、HTTPS、DNS 请求记录与显示能力。排查某个网站时,比盯着规则列表猜测更有效的方法,是发起一个新的请求,再结合客户端记录确认它实际匹配到了什么。

如果你预期它命中后面的精确规则,但实际被前面的宽泛规则提前处理,就应该调整规则范围或位置,而不是继续换节点。

4.3 查看命中规则指向哪个策略或动作

规则可能直接指向 DIRECTREJECT,也可能指向一个策略组。如果出口不符合预期,先确认规则右侧的目标,而不是默认所有匹配都会走代理。

4.4 如果指向策略组,再检查当前节点

策略组本身没有问题,也不代表组内当前选择一定符合预期。尤其在手动切换、多节点或订阅更新之后,需要重新确认该组当前选中的节点。

4.5 修改后用新连接重新验证

修改规则或策略后,建议重新发起连接再测试,并同时检查最终公网出口。不要只根据“已连接”或一次旧页面结果判断配置是否生效。

现象 优先检查
某个域名一直走错出口 规则类型、规则位置、实际命中项
规则命中,但出口节点不对 规则指向的策略组及该组当前节点
切换某个节点后结果没变化 这个节点是否属于当前请求实际使用的策略组
所有代理请求都失败 先检查节点、服务器、端口和认证,不要先改规则

五、哪些情况其实不是规则或策略问题?

规则已经按预期命中、策略组也选中了正确节点,并不代表目标网站一定会正常返回。到了这一步,就应该把问题从“配置层”移开。

表现 更可能的问题 判断思路
节点本身无法连通或认证失败 节点 / 代理参数 检查服务器、端口、用户名、密码和代理资源状态
出口IP已经正确,但目标网站仍拒绝访问 目标站点限制 继续检查地区、ASN、IP信誉、访问频率等站点侧条件
IP访问正常,但域名访问异常 DNS 区分DNS解析路径和最终代理出口
Wi-Fi和蜂窝网络表现明显不同 本地网络环境 检查运营商、企业网络或本地链路限制

如果只是第一次添加节点、测试连接和验证出口 IP,不需要继续研究规则层,可以回到 Shadowrocket iOS新手使用教程

常见问题

Shadowrocket规则是从上到下匹配吗?

在常规规则列表中,上面的规则通常优先于下面的规则,因此更早匹配到的规则可能让后面的规则没有机会参与当前请求。但排查时也要考虑模块与配置文件之间的优先关系,不能只看单个列表。

DOMAIN和DOMAIN-SUFFIX有什么区别?

DOMAIN 用于精确匹配完整域名;DOMAIN-SUFFIX 可以匹配某个域名及其子域。如果只想控制一个主机名,用 DOMAIN 更精确;如果一组子域都要走同一策略,用 DOMAIN-SUFFIX 更方便。

Shadowrocket策略组和节点有什么区别?

节点是具体的代理服务器配置,策略组负责组织和选择这些节点。规则可以指向策略组,再由策略组决定当前使用哪个节点。

为什么我换了节点,出口IP还是没变化?

先确认当前请求命中的规则是否指向了你正在调整的策略组,以及你切换的是否正是这个组当前使用的节点。如果你改的是另一个没有参与当前请求的节点,出口自然不会变化。

FINAL规则有什么作用?

FINAL 用于处理前面没有匹配到的剩余请求,所以通常作为兜底放在规则列表后部。它指向 DIRECT、某个策略组还是其他动作,会直接影响未被前面规则覆盖的流量。

规则已经正确命中,为什么网站还是打不开?

这时不应该继续默认是规则问题。继续检查节点可用性、DNS、本地网络,以及目标网站本身的地区、ASN、IP信誉或访问频率限制。

配置文件和规则配置是一回事吗?

不是。规则只是配置文件中的一个组成部分。完整配置文件还可能包含 DNS、Host、重写、脚本、MITM 等内容。如果你的问题是 .conf 怎么看、怎么导入或怎么维护,可以查看 Shadowrocket配置文件教程

Nate
Nate
IPWeb 技术研究员

专注IP代理与网络架构领域的技术写作者。所有内容创作源于超过六年在IP代理服务商的一线核心工作,涉及大规模代理网络调度、Socks5/HTTP协议栈优化、反爬策略攻防等实战。其目标是剖析网络安全性、稳定性与效率背后的工程逻辑。

服务领域
代理 IP 与网络架构 Web Scraping 反爬与协议优化 大规模数据采集工程

你可能感兴趣

团队使用代理IP怎么分账号?项目分账、流量限额与凭证交接指南

团队使用代理IP怎么分账号?项目分账、流量限额与凭证交接指南

团队使用代理 IP 时,不要让所有员工、项目和自动化任务长期共用一套主凭证。更容易管理的做法是按照项目和运行环境分配代理子账号,记录每个账号的负责人、使用位置和流量上限;项目结束或人员变动时,只停用对...

Nate

Nate

IPWeb 技术研究员

代理成功率怎么测?为什么 HTTP 200 不等于有效数据

代理成功率怎么测?为什么 HTTP 200 不等于有效数据

爬虫日志全部显示 HTTP 200,代理控制台里的请求成功率也很漂亮,交付数据时却发现:商品价格为空、搜索结果属于错误国家、详情页被替换成登录页,或者几十万个响应里混入了大量重复记录。 这不是少见的边...

Nate

Nate

IPWeb 技术研究员

GPT号池搭建封面图,展示多个OpenAI API Key通过网关进行智能路由、负载均衡和日志监控。

GPT号池搭建指南:从OpenAI Key池到One API、New API部署

单 Key 最常见的翻车不是「模型不够聪明」,而是限额与故障域绑在一把钥匙上:一挂全站无响应。GPT 号池(也常叫 OpenAI 号池、API 号池)把上游凭证变成可调度渠道。下面只谈怎么搭、怎么验、...

Winston

Winston

IP 代理技术总监

准备好开始使用了吗?

严格反滥用

禁止欺诈、自动化操作及违规用途

企业级服务

仅面向合法商业与技术使用场景

风控与限制

异常行为可触发限制或终止服务

合规数据使用

数据获取与使用需符合相关法规

隐私保护优先

严禁采集或滥用个人敏感信息

所有服务均需遵守《使用政策》