Shadowrocket(小火箭)只代理指定网站,需要同时满足三个条件:目标域名的规则指向 PROXY,规则末尾使用 FINAL,DIRECT,Home → Global Routing 选择 Config。本文以用户已有自己的服务商与订阅、已导入可用服务器为前提,给出最小规则、配置步骤和逐条验证方法;不会把“连接开关已打开”当作分流正确的证明。
一、先选 Config,再讨论域名规则
Global Routing 决定连接采用哪一种路由方式。只代理少数网站属于按配置文件分流的需求,应先在 Home → Global Routing 选择 Config。仅编辑规则而保留 Proxy 或 Direct,无法按本文的规则清单验证结果。
Config
推荐按当前启用配置中的规则选择策略。目标域名可指向 PROXY,没有命中前置规则的请求由 FINAL,DIRECT 处理。
适合:只代理指定网站,其余请求直连。
Proxy
采用代理路由,而不是按本文的域名清单逐条决定是否直连。可以作为排查服务器是否可用的临时对照,但不能用它证明域名规则正确。
适合:临时检查代理连接,再切回 Config 验证分流。
Direct
采用直连路由,不会因为本文中写了某条 PROXY 规则,就自动切换到按规则分流。
适合:检查当前网络的直连访问情况。
Scene
用于场景路由,结果取决于实际场景设置。它不是本文所用的固定域名清单验证入口,已有场景设置需要单独核对。
适合:已经明确配置场景条件的使用方式。
结论:先固定路由方式
排查期间将 Global Routing 固定为 Config,每次只修改一处域名规则。这样才能区分是规则没有命中,还是代理连接本身不可用。
本文的 PROXY 是规则中的代理策略,不是让你把 Global Routing 改为 Proxy。前者决定某条规则命中后的去向,后者决定全局采用哪一种路由方式,两者作用层级不同。
二、最小规则:目标在前,FINAL,DIRECT 在后
下面是一个只演示规则段的最小例子,使用保留的示例域名,不代表可用服务。实际编辑时,把域名换成需要代理的网站主机名;已有配置中的其他必要段落应保留,不要用这几行覆盖整个配置文件。
[Rule]
DOMAIN-SUFFIX,example.com,PROXY
DOMAIN,api.example.net,PROXY
FINAL,DIRECT
DOMAIN-SUFFIX,example.com,PROXY 匹配 example.com 以及它的子域名,例如 www.example.com。DOMAIN,api.example.net,PROXY 只匹配这个完整主机名,不包含 www.example.net,也不包含它自己的下级子域名。
规则从上到下匹配,命中后按对应策略处理。FINAL,DIRECT 没有域名参数,表示此前没有命中的请求使用 DIRECT。若把它放在目标域名规则前面,后面的目标规则就无法发挥预期作用。
三、从 Config 编辑到 Home 启用的操作顺序
服务器资料与路由配置不是同一项内容。Home 中已有可用服务器,并不表示 Config 中的域名规则已经启用;更新已有订阅,也不等于自动写好了本文的分流清单。开始前先保存当前配置副本,便于恢复。
-
备份配置
进入 Config,确认当前使用的配置文件,先保留副本。若配置来自远程更新,另外保存可编辑的本地副本,避免下一次更新覆盖手动修改。
-
编辑规则
在 Config 中打开目标配置的编辑入口,检查 [Rule]。将需要代理的 DOMAIN 或 DOMAIN-SUFFIX 规则放在兜底规则之前,最后一条使用 FINAL,DIRECT。文本编辑与逐条编辑的入口以应用当前显示为准。
-
启用配置
保存后回到 Config,确认刚才编辑的文件已被选用。不要只停留在编辑页面,也不要仅凭文件名判断;有多个近似名称时,应重新打开所选文件核对内容。
-
选择模式
返回 Home → Global Routing → Config,再回到 Home 选择已有的可用服务器。本文的 PROXY 规则需要有实际可用的代理出口;若配置另有同名策略组,应同时核对该组的选择。
-
发起新请求
打开连接开关,重新发起目标网站与非目标网站的请求。必要时关闭旧连接后再测试;已建立的连接不适合用于判断刚修改的规则是否生效。
若原配置具有额外策略组或复杂规则集,先理解其用途,再调整。对于本次目标,关键不是增加更多规则,而是确保目标域名能先命中 PROXY,其余请求最终到达 DIRECT。不要一边更换服务器,一边修改 DNS 和多条规则,否则出现差异后难以判断原因。
四、域名怎么填:不填路径,也不填端口
DOMAIN 与 DOMAIN-SUFFIX 匹配的是主机名,不是浏览器地址栏中的完整地址。访问使用 HTTPS 的网站时,常见目标端口为 443,但不应把 :443 拼进域名字段。请求的路径、查询参数也不属于该字段。
| 写法 | 匹配范围或问题 | 使用判断 |
|---|---|---|
DOMAIN,example.com,PROXY | 只匹配 example.com | 只需要这个完整主机名时使用 |
DOMAIN-SUFFIX,example.com,PROXY | 匹配根域名与其子域名 | 需要同时覆盖 www、api 等子域名时使用 |
DOMAIN-SUFFIX,notexample.com,PROXY | 与 example.com 是不同域名 | 域名后缀匹配不是任意字符串包含 |
https://example.com/path | 含协议与路径,不是域名字段 | 只提取 example.com 填入规则 |
example.com:443 | 附带端口,不是此处的主机名格式 | 移除端口后再填写 |
一个网页通常会请求多个主机名:主文档、图片、登录验证、视频或静态资源可能分属不同域名。为根域名添加 DOMAIN-SUFFIX 只能覆盖它自己的子域名,不能覆盖网站使用的所有第三方资源域名。因此,“首页能开但图片不显示”不必然说明规则没生效,也可能是资源请求落到了清单之外。
- 先加入需要代理的主站域名,再依据实际请求记录补充必要的资源域名。
- 只需单个主机名时优先使用 DOMAIN,避免把同一域名下不相关的业务一并纳入。
- 不要将
com这类过宽后缀作为目标,否则大量无关网站也会命中 PROXY。 - IP-CIDR 按 IP 网段匹配,GEOIP 按 IP 地理数据库匹配;它们不能直接代替一份精确的网站域名清单。
若请求直接访问 IP 地址,或者匹配时没有可用的域名信息,域名规则可能无法命中,最终走到 FINAL。不要仅因为同一 IP 承载了目标网站,就把整个地址段加入 PROXY;共享地址可能同时服务其他网站。
五、验证方法:检查目标、对照和资源请求
验证分流需要看新请求的实际去向,而不是只看页面能否打开或系统是否出现连接标识。页面能打开,只能说明这次访问成功;缓存、直连可达与已建立连接,都可能让错误的分流设置看起来正常。
- 目标组:选择你实际加入规则的域名,发起新请求。在应用的请求记录中核对主机名、命中规则与策略,预期目标请求对应 PROXY。
- 对照组:访问一个没有列入目标清单、且当前网络可以直连的网站。预期未命中其他前置规则时,由 FINAL,DIRECT 处理。
- 资源组:若目标页面部分加载失败,查找失败请求的真实主机名。它可能与地址栏域名不同,确认确实需要代理后再单独添加。
- 复测:每修改一处规则,就重新发起目标与对照请求。不要把上一次建立的长连接当作本次修改的验证结果。
如果目标请求已经命中 PROXY 却仍然超时,应先检查 Home 中选择的服务器是否可用,以及已有服务资料中的服务器地址、端口和认证信息是否正确。如果记录显示 DIRECT,才回到规则顺序、实际请求域名与启用配置进行排查。这样能避免把连接故障误认为规则语法问题。
六、常见问题:为什么还是全走代理或全走直连
加了 FINAL,DIRECT,怎么其他网站还走代理?
先检查 Home → Global Routing 是否为 Config,再检查 [Rule] 中 FINAL 之前是否存在范围更大的 PROXY 规则或规则集。规则命中即停,末尾的 DIRECT 不会推翻前面已经作出的匹配决定。
指定网站也走 DIRECT,是域名写错了吗?
先核对 Config 当前选中的文件,再确认目标规则位于 FINAL 之前。随后查看实际请求的主机名:网站可能跳转到了另一个域名。DOMAIN 只覆盖精确主机名,需要根域名和子域名一起匹配时改用 DOMAIN-SUFFIX。
首页能打开,登录或图片却一直失败?
重新触发登录或图片请求,在记录中查找失败的主机名。先确认其当前走的是 DIRECT 还是 PROXY;只有确定是清单遗漏时,才补充对应域名。不要为了一个资源请求直接扩大到整个公共后缀。
更新订阅后,手写规则会不会变化?
服务器订阅与配置文件更新要分开判断。仅更新服务器列表,不等于重写本地 [Rule];如果更新的是包含规则的远程配置,则可能替换手动内容。到 Config 重新打开当前文件核对,并保留独立的本地副本。
需要打开 On Demand 才能只代理几个网站吗?
不需要。Settings → On Demand 管理按需连接,不负责列出哪些域名走 PROXY。先在连接已建立的情况下用 Config 验证规则,再按自己的连接需求单独配置 On Demand,避免同时改变两个变量。
最后保留一份能通过目标与对照测试的配置。以后增加网站时,只增加明确需要的域名,并继续保留末尾的 FINAL,DIRECT;删除目标时,也应复测该域名是否已回到直连。规则清单的维护依据是实际请求,而不是网站显示名称。