本文适用于已经在 Shadowrocket(小火箭)中配置好可用代理连接、希望只代理指定网站的用户。先确认 Global Routing 使用 Config,再将域名名单放在规则前部,以 FINAL,DIRECT 收尾。下面给出可合并到配置中的规则片段、保存启用步骤与验证方法,并区分规则未命中和代理连接失败。
先确认 Config:名单规则生效的前提
“只让指定网站走代理”包含两个独立条件:指定域名匹配后使用 PROXY,其他请求默认使用 DIRECT。仅添加域名规则还不够;如果 Global Routing 当前为 Proxy,请求会按全局代理姿态处理,不能用它验证这份名单的分流结果。
在 Home 打开 Global Routing,选择 Config;随后在 Config 中确认正在使用的配置文件。Home 中选中的代理连接也必须可用。本文以用户已有自己的服务商与订阅或连接参数为前提,不涉及连接服务获取。
| 姿态 | 处理方式 | 本文使用方式 |
|---|---|---|
| Config | 依据当前配置中的规则决定连接策略。 | 名单分流的验证前提。 |
| Proxy | 全局代理姿态,不按本文的域名名单决定分流。 | 可用于对照代理是否可用,测试后切回 Config。 |
| Direct | 全局直连姿态。 | 用于直连对照,不能验证 PROXY 规则。 |
| Scene | 根据已设置的场景条件应用相应路由设置。 | 排查时先明确切到 Config,减少场景切换的干扰。 |
On Demand 负责按条件建立或恢复连接,并不代替域名规则。若测试期间连接自动变化,可在 Settings → On Demand 核对现有条件,记录原设置后暂时手动控制连接;不要同时修改按需连接、DNS 和规则,否则难以判断是哪项改动产生作用。
最小规则:DOMAIN-SUFFIX 配合 FINAL,DIRECT
下面是规则段示例,不是包含全部连接参数的完整配置。example.com 是示例域名,不代表实际需要代理的网站。使用时替换成你要分流的网站域名,合并到现有配置的 [Rule] 段,不要用这个片段覆盖整个文件。
[Rule]
DOMAIN-SUFFIX,example.com,PROXY
FINAL,DIRECT
DOMAIN-SUFFIX,example.com,PROXY 匹配 example.com 本身以及 www.example.com、api.example.com 等子域名。它按域名层级匹配,不会因为 notexample.com 末尾也包含相同字母,就把后者当成同一个域名后缀。
FINAL,DIRECT 表示前面的规则都未命中时使用直连。规则按顺序检查,先命中的规则决定策略。因此,名单上方若还有较宽泛的规则,或者提前出现了 FINAL,请求可能根本到不了你新增的那一行。
DOMAIN、DOMAIN-SUFFIX 与 DOMAIN-KEYWORD 的边界
名单精度取决于匹配关键字。网站主域名及其子域名都需要代理时,优先使用 DOMAIN-SUFFIX;只处理某一个主机名时,使用 DOMAIN。DOMAIN-KEYWORD 按域名中的字符串匹配,范围更宽,不适合默认当作域名后缀的替代写法。
| 规则写法 | 匹配范围 | 适合的目标 |
|---|---|---|
DOMAIN,api.example.com,PROXY | 仅匹配 api.example.com,不包含它的下级子域名。 | 只代理一个明确的接口域名。 |
DOMAIN-SUFFIX,example.com,PROXY | 匹配 example.com 及其子域名。 | 以网站域名为单位维护名单。 |
DOMAIN-KEYWORD,example,PROXY | 匹配域名中含 example 的请求,可能覆盖无关域名。 | 确实需要关键词范围,并能检查误匹配时使用。 |
规则中的域名不要带 https://、端口、路径或查询参数。例如,只填 example.com,不要填 https://example.com/account。这类域名分流不能按 HTTPS 网页的路径区分同一主机上的不同页面。
若希望某个子域名直连、同一主域名下其他请求走代理,应把更精确的例外放在后缀规则前面。下面的顺序会让 status.example.com 直连,其余匹配该后缀的域名走代理。
[Rule]
DOMAIN,status.example.com,DIRECT
DOMAIN-SUFFIX,example.com,PROXY
FINAL,DIRECT
保存与启用:每次只改一组规则
先保留原配置副本,再在本地配置中做最小改动。远程配置更新可能覆盖本地编辑;Home 中连接订阅的更新与 Config 中配置文件的更新也不是同一件事。排查时应分别记录当前连接和当前配置,避免误把连接列表变化当成规则已经加载。
-
备份配置
进入 Config,确认当前配置并保留副本。先记录原有的 FINAL 策略和规则集引用,防止修改后无法恢复。
-
编辑规则
在 Config 打开待使用的本地配置并进入编辑,将名单加入 [Rule] 段。该段只保留一个有效的最终兜底位置,将 FINAL,DIRECT 放在名单之后。
-
保存选中
保存后回到 Config,确认选中的是刚修改的文件,而不是名称相似的其他配置。若出现解析错误,先检查英文逗号、关键字拼写与每行的字段数量。
-
切换姿态
回到 Home → Global Routing → Config,并确认已选中可用的代理连接。必要时断开再重新连接,使测试使用当前设置。
-
重新测试
关闭目标网页后重新打开,触发新的连接,再检查数据记录中的域名、命中规则和实际策略。不要只观察修改前已经建立的长连接。
从其他配置复制规则时,还要检查策略名称是否存在。自定义组名不是通用内置关键字,原文件中名为某个组的策略,在新文件中未必有对应定义。若目标只是本文的名单模式,先用 PROXY 与 DIRECT 验证,再考虑增加策略组。
验证分流:看命中规则,不只看网页能否打开
网页正常打开只能说明某条连接路径可用,不能单独证明使用了代理。应在 Shadowrocket 的数据记录中对照本次请求的域名、规则与出站策略;若记录未开启,先在 Settings 中检查数据记录设置,再重新发起请求。只保留必要记录,分享前移除域名以外的敏感信息。
- 名单内:用真实目标域名替换示例后,访问其主站和一个子域名,预期命中 DOMAIN-SUFFIX,策略为 PROXY。
- 名单外:访问一个你确认可直连、且不在名单中的域名,预期命中 FINAL,策略为 DIRECT。
- 例外项:如果采用前文的精确域名例外,单独访问该主机名,预期先命中 DOMAIN,而不是后面的后缀规则。
一个网页可能同时连接主站、登录接口、静态资源与媒体域名。主站命中 PROXY 而图片请求命中 DIRECT,并不矛盾。若出现页面文字正常、图片或登录失败,应先找出失败请求的真实域名,再决定是否补充名单;不要直接加入过短的 DOMAIN-KEYWORD 来扩大范围。
GEOIP 根据目标 IP 的地理信息匹配,IP-CIDR 根据 IP 网段匹配,二者都不是网站域名归属判断。一个网站可能使用多个地址,也可能与其他网站共享地址。严格名单模式下,不要为图省事添加宽泛的 IP 代理规则,否则名单外请求也可能被代理。直接访问 IP 的请求也不能保证命中域名规则。
连接失败:先区分规则问题与出站问题
如果记录已经显示命中 PROXY,但请求仍失败,继续调整 DOMAIN-SUFFIX 通常没有帮助。下面列出连接诊断中可能出现的底层错误片段;具体显示文字取决于协议与失败环节,不代表每次都会出现完全相同的完整提示。
报错:connection refused
原因与解法:连接被目标端或中间设备拒绝,不等于域名规则未生效。先确认记录中的实际出站,再核对已有连接的地址、端口及服务端监听状态;端口应以自己的配置为准,不要因为目标网页使用 HTTPS 就把代理端口改成 443。
报错:i/o timeout
原因与解法:某个网络读写阶段超过等待时间,单靠这段文字无法判断是本地网络还是代理路径。保持规则不变,在 Wi-Fi 与蜂窝网络下分别发起新请求,并对照同一代理连接的测试结果。
报错:certificate has expired
原因与解法:TLS 验证涉及的证书有效期异常,也可能与设备时间错误有关。先检查 iPhone 的设置 → 通用 → 日期与时间,再向自己的服务商核对证书;不要通过关闭证书验证掩盖问题。
如果记录显示 DIRECT,而你预期 PROXY,则回到规则层检查:当前文件是否正确、Global Routing 是否为 Config、实际请求是否使用了另一个域名,以及名单前是否存在更早的匹配项。按这些证据修正,比反复重写整份配置更容易定位原因。
常见问题:补充域名、更新与恢复
只想让一个网站走代理,要把每个子域名都写进去吗?
同一主域名下通常只需一条 DOMAIN-SUFFIX。先写主域名,再检查资源请求;如果网站使用不同主域名的登录或资源服务,应按实际记录分别补充,不要把整段 URL 写入规则。
加了规则却还是所有网站都走代理,怎么检查?
先到 Home → Global Routing 确认 Config,再在 Config 核对当前文件。随后检查是否仍有 FINAL,PROXY、其他宽泛的代理规则或代理规则集;严格名单模式应让名单外请求最终落到 FINAL,DIRECT。
更新自己的连接订阅后,名单需要重写吗?
只更新 Home 中的连接列表,通常不需要重写 Config 内的域名规则,但应重新确认所选连接。若更新的是远程配置文件,则本地编辑可能被替换;更新后打开当前配置检查 [Rule],再做一次名单内外对照测试。
修改后访问异常,怎样恢复原设置?
在 Config 重新选中之前保留的配置,回到 Home 确认原有 Global Routing 姿态,再重新连接。恢复正常后,在副本中一次只增加一条规则;不要同时恢复配置、换代理连接并修改 DNS,以免丢失问题线索。
完成后的核对标准只有三项:Config 正在生效,名单请求命中预期规则,其他请求落到 DIRECT。需要继续了解配置结构,可查阅本站技术参考;需要确认路由姿态差异,可查看代理模式说明。