跳至主要内容

回應規則

注意

如果您不確定所做的更改,請謹慎操作。錯誤的修改可能會中斷系統。

回應規則(SRR)是一組有序的(從上到下;如果規則適用,則停止評估)JSON 規則,後端會對傳入的訂閱請求進行評估。

Templates menu
提示

回應規則將覆蓋外部小隊設定。

建立自訂回應規則

讓我們建立一個自訂回應規則,為使用 Happ 客戶端應用程式的 Android 使用者提供自訂範本和自訂標頭。

其運作方式如下:

  1. 使用者請求訂閱
  2. Remnawave 識別出他正在 Android 上使用 Happ。
  3. Remnawave 用自訂 Happ Android 範本回應,並新增自訂標頭 HappTheBestAppOnTheWorld

規則可能如下所示:

{
"name": "Happ Android",
"description": "Serve custom JSON for Android",
"enabled": true,
"operator": "AND", // Both "user-agent" and "x-device-os" must be matched
"conditions": [
{
"caseSensitive": false,
"headerName": "user-agent",
"operator": "CONTAINS",
"value": "happ"
},
{
"caseSensitive": false,
"headerName": "x-device-os",
"operator": "EQUALS",
"value": "android"
}
],
"responseType": "XRAY_JSON",
"responseModifications": {
"subscriptionTemplate": "Happ Android", // Serve the custom Template
"headers": [ // Serve the custom headers
{
"key": "x-provider-id",
"value": "HappTheBestAppOnTheWorld"
}
]
}
}

rules

每條規則是一個包含以下欄位的物件:

  • name (string) — 必填;1..50 個字元

    "name": "Block Legacy Clients"
  • description (string) — 選填;最多 250 個字元

    "description": "Blocks requests from legacy clients"
  • enabled (boolean) — 必填
    控制規則是否啟用。當為 false 時,規則在評估期間被跳過。

    "enabled": true
  • operator (enum) — 必填;ANDOR

    "operator": "AND" // Rule matches only if ALL conditions match
    "operator": "OR" // Rule matches if ANY condition matches
  • conditions (array)
    要評估的條件清單。

    "conditions": []  // Empty = match everything (use for fallback rules)
  • responseType (enum) — 必填
    確定規則符合時發送何種回應:

    類型描述
    MIHOMOMihomo YAML 設定
    CLASHClash YAML 設定
    STASHStash YAML 設定
    SINGBOXSing-box JSON 設定
    XRAY_JSONXray JSON 設定
    XRAY_BASE64Base64 編碼的 Xray 設定
    BROWSER瀏覽器 HTML 頁面
    BLOCKHTTP 403 Forbidden
    STATUS_CODE_404HTTP 404 Not Found
    STATUS_CODE_451HTTP 451 Unavailable For Legal Reasons
    SOCKET_DROP斷開 socket 連線
  • responseModifications (array) - 選填
    套用於回應的額外修改。可用於提供自訂範本或標頭。

    • subscriptionTemplate (string) - 選填
      定義規則符合時要提供的特定範本。
    • headers (array) - 選填
      使用自訂標頭回應。
      • key (string) - 選填
        標頭名稱。
      • value (string) - 選填
        標頭值。
    • applyHeadersToEnd (boolean) - 選填
      預設情況下,標頭在形成回應時被新增。在某些情況下,SRR 中設定的標頭可能被系統其他部分(如外部小隊)的標頭覆蓋。如果將此旗標設定為 true,SRR 的標頭將在回應發送前的最後階段新增。在這種情況下,SRR 標頭可能會覆蓋其他部分的標頭。
    • ignoreHostXrayJsonTemplate (boolean) - 選填
      每個主機可以有自己的 Xray Json 範本。如果將此旗標設定為 true,將使用 SRR 定義的 Xray Json 範本。主機的 Xray Json 範本將被忽略。
    • ignoreServeJsonAtBaseSubscription (boolean) - 選填
      在某些情況下,當啟用 Serve JSON at Base Subscription 時,您可能希望向面板識別為能夠接受 XRAY_JSON 的客戶端應用程式提供 XRAY_BASE64
      如果將此旗標設定為 trueServe JSON at Base Subscription 設定將被忽略(設定為 false)。
    • disableHwidCheck (boolean) - 選填
      某些情況下,客戶端應用程式可能需要忽略 HWID 檢查。如果將此旗標設定為 true,將忽略 HWID 支援檢查。
    "responseType": "SINGBOX",
    "responseModifications": {
    "applyHeadersToEnd": true,
    "headers": [
    {
    "key": "X-Custom-Header",
    "value": "CustomValue"
    }
    ],
    "ignoreHostXrayJsonTemplate": true,
    "ignoreServeJsonAtBaseSubscription": true,
    "subscriptionTemplate": "Singbox Legacy"
    }

rules.conditions

  • headerName (string) — 必填
    要檢查的 HTTP 標頭。必須符合 RFC 7230

    "headerName": "user-agent"    // Client app user-agent
  • operator (enum) — 必填
    要執行的比較操作:

    運算子描述
    EQUALS完全符合
    NOT_EQUALS反向完全符合
    CONTAINS子字串存在
    NOT_CONTAINS子字串不存在
    STARTS_WITH前綴符合
    NOT_STARTS_WITH前綴不存在
    ENDS_WITH後綴符合
    NOT_ENDS_WITH後綴不存在
    REGEX正規表示式
    NOT_REGEX反向正規表示式
  • value (string) — 必填;1..255 個字元
    與標頭值進行比較的值。

    "value": "^sfa|sfi|sfm|sft|karing|singbox|rabbithole"
  • caseSensitive (boolean) — 必填

    "caseSensitive": true   // The value is compared as is
    "caseSensitive": false // The value is lowercased before comparison
提供特定作業系統的範本

您可以輕鬆地為不同作業系統回應不同的範本。

在下面的範例中,iOS 使用者將獲得 Happ iOS JSON,Android 使用者將獲得 Happ Android JSON。

{
"name": "Happ Android",
"description": "Serve custom JSON for Android",
"enabled": true,
"operator": "AND",
"conditions": [
{
"caseSensitive": false,
"headerName": "user-agent",
"operator": "CONTAINS",
"value": "happ"
},
{
"caseSensitive": false,
"headerName": "x-device-os",
"operator": "CONTAINS",
"value": "android"
}
],
"responseType": "XRAY_JSON",
"responseModifications": {
"subscriptionTemplate": "Happ Android"
}
},
{
"name": "Happ iOS",
"description": "Serve custom JSON for iOS",
"enabled": true,
"operator": "AND",
"conditions": [
{
"caseSensitive": false,
"headerName": "user-agent",
"operator": "CONTAINS",
"value": "happ"
},
{
"caseSensitive": false,
"headerName": "x-device-os",
"operator": "CONTAINS",
"value": "ios"
}
],
"responseType": "XRAY_JSON",
"responseModifications": {
"subscriptionTemplate": "Happ iOS"
}
}
標頭解析規則
  1. 標頭名稱不區分大小寫
    "user-agent" === "User-Agent" === "USER-AGENT"
  2. 如果標頭有多個值,它們將連接成一個字串,以逗號分隔。
  3. 標頭值缺失會導致規則被跳過。