适用于已经在 Shadowrocket(小火箭)中配置好可用连接、只想让少数网站经过代理的用户。操作要点是:在 Config 的有效配置中加入域名规则,把 FINAL,DIRECT 放在末尾,并将 Home → Global Routing 设为 Config。随后用请求记录核对域名、命中规则与实际策略,而不是仅凭网页能否打开判断配置是否生效。
一、先区分规则分流与全局姿态
“只代理部分网站”包含两个条件:目标域名命中 PROXY,其他请求落到 DIRECT。前者由域名规则决定,后者由最后的 FINAL 规则决定。两者都依赖当前连接按配置规则运行;如果 Global Routing 选择了 Proxy 或 Direct,单独修改规则文件不能得到本文预期的分流结果。
| Global Routing 选项 | 判断方式 | 本文操作 |
|---|---|---|
| Config | 按当前配置中的规则决定策略。 | 选择此项,验证域名规则。 |
| Proxy | 以代理姿态处理流量,不按本文的域名白名单分流。 | 不要用它验证 FINAL,DIRECT。 |
| Direct | 以直连姿态处理流量。 | 不要把直连结果误判为域名规则失效。 |
| Scene | 按已配置的场景条件决定行为。 | 初次排查先切到 Config,减少场景切换的影响。 |
本文的 PROXY 表示代理策略,DIRECT 表示直接连接目标。开始前先确认 Home 中选中的代理连接本身可用。若现有配置使用自定义策略组,需核对规则末尾引用的策略名是否真实存在,不要把其他配置中的组名原样粘贴过来。
二、DOMAIN-SUFFIX 加 FINAL,DIRECT 的完整规则段
下面是可用于说明语法的完整 [Rule] 段,不是包含连接参数、DNS 等设置的完整配置文件。example.com 与 example.net 是文档示例域名,需要替换为你实际需要代理的网站域名;不要把示例域名当成可用服务。
[Rule]
DOMAIN-SUFFIX,example.com,PROXY
DOMAIN-SUFFIX,example.net,PROXY
FINAL,DIRECT
DOMAIN-SUFFIX,example.com,PROXY 匹配 example.com 本身及其子域名,例如 www.example.com 和 api.example.com。它不会把 notexample.com 或 example.com.other.net 当成同一域名后缀。这里的匹配对象是域名,不是网页地址中的任意文字。
- 域名字段不带
https://、端口、路径或查询参数。 - 访问
https://www.example.com:443/account时,规则中填写域名部分,不填写/account。 - 每条规则单独占一行,字段用英文逗号分隔,保留
PROXY、DIRECT等关键字原文。 FINAL,DIRECT没有域名字段:未命中前序规则的请求由它兜底直连。
三、按顺序安装规则,而不是只保存文本
以下路径以 Home、Config、Settings 的界面结构说明。不同平台的编辑入口表现可能不同,但都要完成“编辑文件、保存、使其成为当前配置、按 Config 运行”四个动作。订阅提供连接信息与规则配置是否启用,是两个需要分别确认的问题。
-
备份配置
进入 Config,先保留当前文件的副本或导出备份。记下当前正在使用的配置,避免编辑了另一个文件却继续用旧配置连接。
-
整理规则
打开待使用文件的编辑入口,定位
[Rule]。写入需要的 DOMAIN-SUFFIX 规则,检查已有规则,把FINAL,DIRECT留在末尾。 -
启用文件
保存修改,在 Config 中确认该文件成为当前使用的配置。若文件来自远程更新,先确认后续更新是否会覆盖本地编辑。
-
切换姿态
返回 Home → Global Routing,选择 Config,再确认 Home 中选中的代理连接可用并开启连接。
-
重建请求
在可以中断连接的情况下重新连接,关闭原网页后重新打开,生成新的网络请求,再检查请求记录中的匹配结果。
已有订阅链接应从你的服务商处获取。不要为了修改分流规则反复删除订阅,也不要把订阅地址粘贴到 DOMAIN-SUFFIX 的域名字段。Settings → On Demand 负责自动连接条件,不负责决定某个域名走 PROXY 还是 DIRECT;排查期间应留意它是否重新触发连接,避免把自动连接现象当成规则变化。
四、DOMAIN 与 DOMAIN-SUFFIX 怎么选,例外放在哪里
规则按从上到下的顺序匹配,先命中的规则决定该请求使用的策略。因此,“整个站点代理,但某个子域名直连”需要把更具体的例外放在前面。下面让 status.example.com 直连,其余属于 example.com 的域名走代理。
[Rule]
DOMAIN,status.example.com,DIRECT
DOMAIN-SUFFIX,example.com,PROXY
FINAL,DIRECT
| 规则关键字 | 适用范围 | 本场景的注意点 |
|---|---|---|
| DOMAIN | 精确匹配一个域名。 | 只代理某个主机,或为一个子域名设置例外。 |
| DOMAIN-SUFFIX | 匹配域名本身及其子域名。 | 适合网站主域及同后缀服务一起分流。 |
| IP-CIDR | 匹配 IPv4 地址网段。 | 适合明确的地址范围,不能表达网站路径。 |
| GEOIP | 按目标 IP 的地理归属匹配。 | 不依据页面内容、域名后缀或用户所在地判断。 |
| FINAL | 接住没有命中前序规则的请求。 | 本文使用 DIRECT,末尾不再添加其他规则。 |
例如 IP-CIDR,192.168.0.0/16,DIRECT,no-resolve 表示匹配这一私有地址范围并直连,no-resolve 用于避免仅为匹配这条 IP 规则而发起域名解析。它不是所有规则都必须附加的参数,也不能解决网站遗漏了其他资源域名的问题。
判断:域名白名单不需要先写地理分流
如果目标就是“只有列出的域名代理”,先保留精确例外、域名代理与 FINAL,DIRECT 即可。加入 GEOIP 或宽泛 IP 代理规则前,先说明它要改变哪一类请求,否则“其余全部直连”的边界会被提前命中的规则改变。
五、验证规则是否生效:对照域名、规则与策略
网页打开成功不能证明它走了代理,打不开也不能证明规则没有匹配。规则选择正确之后,代理连接、目标服务、DNS 或 TLS 仍可能失败。验证时应查看应用提供的请求记录或连接详情,将一次新请求的目标域名、命中规则以及最终策略放在一起判断;记录入口与字段展示以当前平台界面为准。
| 测试输入 | 预期命中 | 预期策略 |
|---|---|---|
| www.example.com | DOMAIN-SUFFIX,example.com | PROXY |
| status.example.com | DOMAIN,status.example.com | DIRECT |
| www.example.org | FINAL | DIRECT |
上表是规则推演,不是对示例站点的联网实测。实际验证时替换为你有权访问的真实域名,并逐一建立新连接。浏览器可能复用既有连接,也可能直接展示缓存内容;修改配置后只看原页面,未必会生成能验证新规则的请求。
- 先确认姿态:Home → Global Routing 必须是 Config,当前文件必须是刚保存的文件。
- 再看命中:目标域名若命中 FINAL,先查拼写、子域名归属及域名信息是否可用。
- 再看策略:命中了指定规则但出口不符合预期时,检查策略引用及当前选择的连接。
- 最后看响应:策略已经正确,才继续检查代理服务端口、目标响应与证书错误。
六、页面只加载一半与连接报错的排查
网站页面可能同时请求主站、登录域名、静态资源域名及视频域名。主域名走代理不代表所有资源都属于同一后缀。例如页面还访问 assets.example.net,仅写 DOMAIN-SUFFIX,example.com,PROXY 不会覆盖它。先从失败请求中确认真实域名,再决定是否新增规则,不要凭猜测扩大代理范围。
报错:connection refused
原因:连接目标端口被拒绝,可能发生在代理服务器或直连目标一侧。解法:先核对该记录的策略与远端地址;若走 PROXY,按已有服务资料检查服务器地址和端口,不要仅为消除错误把所有域名改成代理。
报错:i/o timeout
原因:网络操作在等待期限内没有完成,单凭此消息无法判断是规则、线路还是目标故障。解法:先确认规则命中,再分别测试当前代理连接与同一目标的新请求,一次只改变一个条件。
报错:no such host
原因:域名解析没有得到可用结果,可能是拼写错误或 DNS 查询失败。解法:核对实际请求域名与现有 DNS 配置;先解决解析问题,再观察它命中 DOMAIN-SUFFIX 还是 FINAL。
以上是网络日志中常见的错误文本片段,完整消息可能带有地址、端口与其他上下文,并非每个平台都会显示完全相同的弹窗。若需提供记录协助排查,保留时间、目标域名、规则与策略即可;分享前移除订阅令牌、密码和其他连接凭据。
七、常见问题:路径分流、更新覆盖与直连边界
只想让一个网站的 /video 走代理,可以写进规则吗?
不能用 DOMAIN-SUFFIX 按 URL 路径分流。它匹配域名,不读取 /video 作为匹配字段;HTTPS 路径也不是普通域名规则可直接使用的信息。先确认业务是否使用独立子域名,若有,可用 DOMAIN 精确匹配该子域名。
设置了 FINAL,DIRECT,为什么还有别的网站走代理?
先在 Home → Global Routing 确认是 Config,再检查 FINAL 之前的规则。较早命中的 DOMAIN-SUFFIX、IP-CIDR、GEOIP 或规则集都可能先决定策略。FINAL 只处理剩余请求,不会覆盖先前命中的结果。
昨天有效,更新配置后规则怎么不见了?
在 Config 中打开当前文件,查找新增的域名行。远程配置更新可能替换本地文本;保留独立的本地配置副本,更新前后核对规则。不要把连接订阅刷新与远程规则文件更新当成同一件事。
其余 DIRECT,是不是说明其他应用都不经过代理?
它表示进入当前规则处理流程、又没有命中前序规则的请求采用 DIRECT,不等于设备所有流量的总保证。按应用实际产生的请求记录核对;同时检查是否有其他系统代理、VPN 或应用内代理设置影响测试环境。
完成后应保留一份可复现的最小规则:需要代理的域名、必要的精确例外,以及末尾的 FINAL,DIRECT。后续每新增一个站点,都重复“建立新请求、查看命中、检查策略”的过程。需要扩展到更多规则类型时,可查阅规则参考;术语含义可在术语手册核对。