跳到主要内容

路由规则

路由规则(Response Rules,SRR)是一组有序规则, 面板据此决定对订阅请求返回什么。判定依据 是请求的 HTTP 头:可以给客户端返回另一种格式、另一个模板 或另一组请求头,也可以直接拒绝。

说明

规则在面板侧工作,不会进入节点。Xray 自身的 路由(routing.rules)在配置配置文件中定义并应用到节点—— 参见配置配置文件。

在哪里配置​

规则以 responseRules 对象的形式保存在订阅设置中, 并在规则管理区域中编辑:

{
"version": "1",
"settings": { "disableSubscriptionAccessByPath": false },
"rules": []
}

disableSubscriptionAccessByPath: true 会关闭通过 附加路径(/json、/mihomo、/stash)访问订阅的权限。

生效顺序​

规则自上而下检查。第一个匹配的规则生效, 检查随即停止。enabled: false 的规则会被跳过。如果 没有任何规则匹配,请求会被阻止——因此最后通常会放一条 无条件的规则,用来返回普通订阅。

操作符与条件​

规则的 operator 决定条件如何组合:

操作符规则何时匹配
AND所有条件都匹配
OR至少一个条件匹配

空的 conditions 数组始终匹配——这就是「默认规则」。 每个条件检查一个请求头:

{
"headerName": "user-agent",
"operator": "CONTAINS",
"value": "happ",
"caseSensitive": false
}
条件操作符检查
EQUALS、NOT_EQUALS精确匹配
CONTAINS、NOT_CONTAINS包含子串
STARTS_WITH、NOT_STARTS_WITH字符串开头
ENDS_WITH、NOT_ENDS_WITH字符串结尾
REGEX、NOT_REGEX正则表达式

请求头名称不区分大小写,同一个请求头的多个值 用逗号拼接,而缺失的请求头意味着 条件不成立。

响应类型​

responseType 决定匹配时客户端会收到什么:

类型响应
XRAY_JSON、XRAY_BASE64、MIHOMO、CLASH、STASH、SINGBOX相应格式的订阅
BROWSER给浏览器的 HTML 页面
BLOCK拒绝,HTTP 403
STATUS_CODE_404、STATUS_CODE_451以 404 或 451 状态码拒绝
SOCKET_DROP断开连接

响应修改​

responseModifications 块用于细化响应:

  • subscriptionTemplate —— 模板名称;优先级高于外部分组的设置;
  • headers 和 applyHeadersToEnd —— 添加请求头,必要时放在 最后,覆盖其他请求头;
  • ignoreHostXrayJsonTemplate —— 不使用主机的 Xray JSON 模板;
  • ignoreServeJsonAtBaseSubscription —— 即使对通常返回 JSON 的客户端 也返回 base64;
  • disableHwidCheck —— 对该规则不检查 HWID;
  • additionalExtendedClientsRegex —— 扩展「扩展客户端」列表;
  • excludeHostsByTags —— 从下发中移除带有指定标签的主机;
  • respondWithRemarks —— 用文本替换响应体。
提示

典型场景:给 Android 客户端返回单独的 JSON 模板,而给 过时的应用返回 BLOCK。面板在编辑时会显示这样一条规则的 示例。

危险

无条件且 responseType: BLOCK 的规则会阻止所有走到 它的请求。请按精确度递减的顺序放置规则,并在每次 修改后检查订阅。

接下来​

  • 模板 —— 响应中会代入什么。
  • 分组 —— 规则优先于外部分组。
  • 主机 —— 用于 excludeHostsByTags 的主机标签。
  • 配置配置文件 —— 节点上的 Xray 路由。