本文适合已经在 Shadowrocket(小火箭)中导入自己的订阅、希望仅让指定网站使用代理的用户。操作重点是编辑当前生效的 Config,把需要代理的域名规则放在前面,以 FINAL,DIRECT 收尾,并在 Home → Global Routing 中选择 Config。下面分别说明匹配范围、规则顺序、保存与验证方法,不改变用户已有订阅的来源。
一、先区分规则、策略与连接模式
“只让部分网站走代理”包含两个条件:目标网站命中指向 PROXY 的规则,其余请求落到 DIRECT。订阅提供可用的服务器信息,Config 决定请求如何分配;仅切换服务器或更新订阅,并不会自动形成这套分流逻辑。开始前,应确认 Home 中已有可用服务器,并为当前配置保留备份。
本文使用内置策略 PROXY 与 DIRECT。PROXY 将请求交给当前代理选择,DIRECT 直接连接目标;如果现有配置使用自定义策略组,规则末尾也可以填写该组的准确名称,但必须先确认组已定义且有可用成员。第一次调整建议先采用下文的最小结构,避免同时修改策略组与匹配条件。
Home → Global Routing 中的 Proxy 与 Direct 用于整体选择代理或直连,不能用来检验本文的逐条分流结果。Config 才是这里需要的按配置规则处理方式。Scene 用于场景切换,初次验证时先固定在 Config,减少场景条件引入的变化。Settings → On Demand 处理按需建立连接的行为,也不是域名规则编辑入口。
二、DOMAIN-SUFFIX 与 DOMAIN-KEYWORD 怎么选
域名规则匹配的是请求对应的主机名,不是整段网页地址。以 https://www.example.com/account 为例,应填写 example.com 或 www.example.com,不要把 https://、路径 /account、查询参数或端口一起写进域名字段。规则使用半角逗号分隔,规则关键字保留英文。
| 规则写法 | 匹配范围 | 适用情况 |
|---|---|---|
DOMAIN,www.example.com,PROXY |
只匹配 www.example.com 这个主机名。 | 只需要一个明确的站点入口。 |
DOMAIN-SUFFIX,example.com,PROXY |
匹配 example.com 及其子域名,如 api.example.com。 | 同一根域名下的网页与接口一起代理。 |
DOMAIN-KEYWORD,example,PROXY |
匹配主机名中含 example 字符串的请求。 | 确实需要跨域名的关键词匹配,且能够接受更大范围。 |
FINAL,DIRECT |
处理此前未被任何规则匹配的请求。 | 作为“其他流量直连”的最后一条规则。 |
DOMAIN-SUFFIX 按域名后缀边界匹配:example.com 的规则可以覆盖 img.example.com,但不会因为字符串相似就覆盖 notexample.com。DOMAIN-KEYWORD 没有这种后缀边界约束,关键词 example 会同时扩大到其他含有该字符串的主机名。因此,已知目标域名时优先使用 DOMAIN 或 DOMAIN-SUFFIX,而不是用短关键词猜测站点归属。
结论:先列域名,再决定是否使用关键词
先用 DOMAIN-SUFFIX 覆盖目标根域名;只有日志确认多个必要域名确实共享稳定关键词、且逐条列举不适合维护时,才加入 DOMAIN-KEYWORD。
三、最小规则片段与从上到下的顺序
下面的片段表示 example.com 与 example.net 及各自子域名使用代理,其他请求直连。[Rule] 是配置文件的规则区段标记:在文本编辑中粘贴时使用一次即可;若通过规则列表逐项添加,分别填写规则类型、域名和策略,不需要把区段标记填进某一条规则。
[Rule]
DOMAIN-SUFFIX,example.com,PROXY
DOMAIN-SUFFIX,example.net,PROXY
FINAL,DIRECT
规则通常按从上到下的顺序匹配,先命中的规则决定该请求的策略。把 FINAL 放在列表上方,会让后面的目标规则失去处理机会。同样,若前面已有覆盖目标域名的 DIRECT 规则或宽泛的规则集,新增的 PROXY 规则应放到这些规则之前,否则只修改末尾仍可能看不到变化。
需要让某个子域名保持直连时,把更具体的例外写在宽泛规则之前。以下片段中,status.example.com 走 DIRECT,www.example.com 等其他子域名走 PROXY;不要把例外放到 DOMAIN-SUFFIX 后面再期待它覆盖先前的结果。
[Rule]
DOMAIN,status.example.com,DIRECT
DOMAIN-SUFFIX,example.com,PROXY
FINAL,DIRECT
- DOMAIN-KEYWORD:如确实需要,可添加
DOMAIN-KEYWORD,example,PROXY,但它会扩大匹配范围,不是必需项。 - GEOIP:
GEOIP,CN,DIRECT按目标 IP 的地区数据匹配,不表示“所有中文网站”,也不能替代目标域名清单。 - IP-CIDR:按目标 IPv4 网段匹配,适用于明确掌握地址范围的情况;网站使用共享地址或 CDN 时,按 IP 添加可能连带影响其他域名。
- FINAL:只保留一个有效的最终兜底意图。本文要求其他流量直连,因此末尾采用
FINAL,DIRECT,不是FINAL,PROXY。
已有配置可能还包含 DNS、Host、策略组及其他区段。上述代码仅展示 Rule 部分,不是要求删除整个配置再重建。编辑前先复制一份现有配置,并检查是否已经存在 [Rule],不要在原文件末尾重复追加整个区段。
四、在 Config 中保存,并切换到规则模式
以下按 Home、Config、Settings 的界面结构说明。编辑对象必须是实际启用的配置,而非同名的远程配置副本。远程配置更新可能替换本地改动,适合长期保留的规则应写入单独保存的本地副本,并在每次切换后确认当前选择。
-
备份配置
进入 Config,找到当前使用的配置,先保留副本。记录原来使用的配置名称,便于验证失败时切回,不要直接覆盖唯一的一份文件。
-
编辑规则
在 Config 中打开该本地配置的编辑入口,进入 Rule。通过规则列表添加 DOMAIN-SUFFIX,域名填写 example.com 对应的实际目标域名,策略选择 PROXY;或在文本编辑中修改现有 [Rule] 区段。
-
整理顺序
把指定网站的 PROXY 规则放在可能冲突的宽泛规则之前,确认最后一条为 FINAL,DIRECT。保存修改,并在 Config 列表中选中这份配置作为当前配置。
-
选择模式
回到 Home → Global Routing → Config,再确认当前代理选择有效。若这里停在 Proxy 或 Direct,不能用访问结果判断刚才编辑的域名规则。
-
重新测试
开启连接后重新打开目标网页;修改前已建立的连接可能继续沿用原有路径。必要时关闭网页、重新建立连接,再同时测试一个目标域名和一个不在清单中的域名。
订阅更新解决的是服务器列表与参数更新,Config 编辑解决的是请求路由,两者不要混为同一个操作。若只是增加一个需要代理的网站,通常不必重新导入订阅,也不必调整服务器的端口、密码、SNI 或 TLS 参数。首次导入与连接步骤可参考快速上手,模式差异见代理模式说明。
五、用连接记录验证,不只看网页能否打开
页面打开成功并不能单独证明走了代理:某些网站直连同样能访问。页面打不开也不能证明规则未命中,因为服务器连接、DNS 解析及网站自身状态都可能导致失败。验证时应在连接记录或日志中核对目标主机名、匹配规则及最终策略;记录入口的呈现可能随平台不同,但需要核对的信息一致。
| 测试请求 | 预期匹配 | 预期策略 |
|---|---|---|
| example.com 与 www.example.com | DOMAIN-SUFFIX,example.com | PROXY |
| status.example.com,已添加前文例外 | DOMAIN,status.example.com | DIRECT |
| 不在目标清单、也未命中其他规则的域名 | FINAL | DIRECT |
上表是前文规则的预期结果,不是对示例站点的连通性测量。实际测试时换成用户需要的目标域名,并一次只改变一个条件。如果记录显示目标已命中 PROXY,却仍然连接失败,应转向检查当前服务器及服务商提供的参数,而不是反复扩大 DOMAIN-KEYWORD。
一个网页常会访问独立的图片、登录、验证码和接口域名。主页面命中 PROXY,不代表这些请求也会自动跟随主页面。遇到“文字能显示但图片不出”或“主页正常、登录一直转圈”时,重新触发相关操作,查找失败请求对应的主机名,再把确有必要的域名补入清单。
- 先确认记录中的请求时间是修改规则之后,避免读取旧连接结果。
- 确认查看的是实际失败的资源域名,而不只是地址栏中的主域名。
- 若目标落到 FINAL,先检查拼写、当前配置和规则顺序,再考虑补充依赖域名。
- 若记录只有 IP、缺少域名信息,应继续检查 DNS 与域名识别情况;不要把共享 CDN 的整个地址段直接加入代理清单。
六、超时、解析失败与常见问题
排查时先区分“没有按规则路由”和“已经按规则路由但连接失败”。下面两项是浏览器可能显示的真实错误代码,不是 Shadowrocket 的固定提示文本;不同浏览器的显示方式可能不同。应结合连接记录判断原因,不能仅凭一个错误代码认定服务器或规则有问题。
报错:ERR_CONNECTION_TIMED_OUT
原因与解法:浏览器等待连接或响应超时,可能涉及目标服务、当前网络或代理链路——先核对该请求最终走 PROXY 还是 DIRECT;已命中 PROXY 时测试当前服务器的连通性,未命中时检查生效配置和规则顺序。
报错:ERR_NAME_NOT_RESOLVED
原因与解法:浏览器未能获得可用的域名解析结果——先核对域名拼写与 Config 中的 DNS 设置,并检查浏览器是否另设 DNS;不要通过重复添加 DOMAIN-SUFFIX 来代替解析排查。
规则已经加了,怎么所有网站还是走代理?
先检查 Home → Global Routing 是否停在 Proxy,切回 Config;再检查当前生效配置的末尾是否仍是 FINAL,PROXY,以及前面是否存在覆盖范围过大的 PROXY 规则。保存后重新建立连接,再查看一个清单外域名的最终策略。
为什么加了主域名,登录还是失败?
登录可能跳转到另一根域名,DOMAIN-SUFFIX,example.com 不会匹配 example.net。触发登录后查看连接记录,将必要的登录或接口域名单独添加到 FINAL 之前,不要直接改成全局 Proxy 作为长期处理。
能不能只让某一个网页路径走代理?
DOMAIN 与 DOMAIN-SUFFIX 匹配主机名,不区分 /news 与 /account 等路径。同一主机名下的 HTTPS 页面不能靠这两种规则按路径拆分;若服务使用不同子域名,可分别用 DOMAIN 明确指定。
更新订阅后还要重写这些规则吗?
单纯更新服务器订阅通常不等于替换 Config。先到 Config 核对当前配置及 Rule 是否仍在;若更新的是远程配置,内容可能被替换,改用保留了自定义规则的本地副本,再回到 Home → Global Routing → Config 验证。
最后保留一个可重复的检查顺序:当前 Config 正确、Global Routing 为 Config、指定域名规则在前、FINAL,DIRECT 在后、当前服务器有效,再用新连接核对日志。需要扩充规则类型时,可继续查阅配置字段参考,不必为每一个显示异常的网站直接增加整段 IP 规则。
获取 Shadowrocket 与首次配置
iPhone / iPad 版在 App Store $2.99 一次性付费,Mac(Apple 芯片 / Intel)、Windows、安卓、Linux 版免费。iPhone / iPad 系统要求以 App Store 页面标注为准。前往下载页选择平台;已有应用的用户可按教程导入自己的订阅,再设置 Config 规则。