跳转至

nla自定义规则

GET 查询条件参数 nlaV1:acl:query

GET /prod-api/waf/nlaV1/custom/rules/describeParameter

请求参数

名称 位置 类型 必选 说明
Authorization header string 无单独说明

返回示例

200 Response

{
  "msg": "成功",
  "code": 200,
  "data": {
    "targets": [
      {
        "valueModelMap": {
          "NOT_IP_IN_LIST": {
            "type": "data_list",
            "values": [
              {
                "options": [
                  {
                    "label": "black",
                    "value": 52
                  }
                ],
                "label": "自定义"
              }
            ]
          },
          "IP_IN_LIST": {
            "type": "data_list",
            "values": [
              {
                "options": [
                  {
                    "label": "black",
                    "value": 52
                  }
                ],
                "label": "自定义"
              }
            ]
          }
        },
        "operators": ["IP_IN_LIST", "NOT_IP_IN_LIST"],
        "name": "IP",
        "remark": "",
        "optionals": [],
        "value": "IP_SRC",
        "target": "IP_SRC"
      },
      {
        "valueModelMap": {
          "IN": {
            "type": "multiple_group",
            "values": [
              {
                "children": [
                  {
                    "label": "阿联酋",
                    "value": "AE"
                  },
                  {
                    "label": "乌兹别克斯坦",
                    "value": "UZ"
                  },
                  {
                    "label": "蒙古国 蒙古",
                    "value": "MN"
                  }
                ],
                "label": "亚洲",
                "value": "亚洲"
              }
            ]
          },
          "NOT_IN": {
            "type": "multiple_group",
            "values": [
              {
                "children": [
                  {
                    "label": "蒙古国 蒙古",
                    "value": "MN"
                  }
                ],
                "label": "亚洲",
                "value": "亚洲"
              }
            ]
          }
        },
        "operators": ["IN", "NOT_IN"],
        "name": "国家/地区",
        "remark": "",
        "groupList": [
          {
            "children": [
              {
                "label": "新西兰",
                "value": "NZ"
              }
            ],
            "label": "大洋洲",
            "value": "大洋洲"
          }
        ],
        "optionals": [],
        "value": "COUNTRY_CODE",
        "target": "COUNTRY_CODE"
      },
      {
        "valueModelMap": {
          "IN": {
            "type": "multiple",
            "values": [
              {
                "label": "北京",
                "value": "Beijing"
              },
              {
                "label": "上海",
                "value": "Shanghai"
              }
            ]
          },
          "NOT_IN": {
            "type": "multiple",
            "values": [
              {
                "label": "香港",
                "value": "Xianggang"
              },
              {
                "label": "澳门",
                "value": "Aomen"
              },
              {
                "label": "台湾",
                "value": "Taiwan"
              }
            ]
          }
        },
        "selectList": [
          {
            "label": "香港",
            "value": "Xianggang"
          },
          {
            "label": "澳门",
            "value": "Aomen"
          },
          {
            "label": "台湾",
            "value": "Taiwan"
          }
        ],
        "operators": ["IN", "NOT_IN"],
        "name": "省份/地区",
        "remark": "",
        "optionals": [],
        "value": "PROVINCE_CODE",
        "target": "PROVINCE_CODE"
      },
      {
        "valueModelMap": {
          "IN_LIST": {
            "type": "data_list",
            "values": [
              {
                "options": [
                  {
                    "label": "zhuji",
                    "value": 79
                  },
                  {
                    "label": "zhuji",
                    "value": 80
                  }
                ],
                "label": "自定义"
              }
            ]
          },
          "NOT_IN_LIST": {
            "type": "data_list",
            "values": [
              {
                "options": [
                  {
                    "label": "zhuji",
                    "value": 79
                  },
                  {
                    "label": "zhuji",
                    "value": 80
                  }
                ],
                "label": "自定义"
              }
            ]
          }
        },
        "operators": [
          "EQ",
          "NOT_EQ",
          "CONTAINS",
          "NOT_CONTAINS",
          "MATCHES",
          "NOT_MATCHES",
          "IN_LIST",
          "NOT_IN_LIST"
        ],
        "name": "主机名",
        "remark": "例如:example.com",
        "optionals": null,
        "value": "HOST",
        "target": "HOST"
      },
      {
        "valueModelMap": {},
        "operators": [
          "EQ",
          "NOT_EQ",
          "CONTAINS",
          "NOT_CONTAINS",
          "MATCHES",
          "NOT_MATCHES"
        ],
        "name": "查询字符串",
        "remark": "例如:page=1234",
        "optionals": null,
        "value": "",
        "target": "ARGS"
      },
      {
        "valueModelMap": {
          "IN_LIST": {
            "type": "data_list",
            "values": [
              {
                "options": [
                  {
                    "label": "uri",
                    "value": 62
                  }
                ],
                "label": "自定义"
              }
            ]
          },
          "NOT_IN_LIST": {
            "type": "data_list",
            "values": [
              {
                "options": [
                  {
                    "label": "uri",
                    "value": 62
                  }
                ],
                "label": "自定义"
              }
            ]
          }
        },
        "operators": [
          "EQ",
          "NOT_EQ",
          "CONTAINS",
          "NOT_CONTAINS",
          "BEGINS_WITH",
          "NOT_BEGINS_WITH",
          "ENDS_WITH",
          "NOT_ENDS_WITH",
          "MATCHES",
          "NOT_MATCHES",
          "IN_LIST",
          "NOT_IN_LIST"
        ],
        "name": "Uri请求",
        "remark": "例如:/contact?page=1234",
        "optionals": null,
        "value": "REQUEST_URI",
        "target": "REQUEST_URI"
      },
      {
        "valueModelMap": null,
        "operators": [
          "EQ",
          "NOT_EQ",
          "CONTAINS",
          "NOT_CONTAINS",
          "BEGINS_WITH",
          "NOT_BEGINS_WITH",
          "ENDS_WITH",
          "NOT_ENDS_WITH",
          "MATCHES",
          "NOT_MATCHES",
          "IN_LIST",
          "NOT_IN_LIST"
        ],
        "name": "路径",
        "remark": "例如:/contact",
        "optionals": null,
        "value": "URI",
        "target": "URI"
      },
      {
        "valueModelMap": {},
        "operators": [
          "EQ",
          "NOT_EQ",
          "CONTAINS",
          "NOT_CONTAINS",
          "MATCHES",
          "NOT_MATCHES"
        ],
        "name": "请求头",
        "remark": "例如:Content-type",
        "optionals": null,
        "value": "",
        "target": "REQUEST_HEADERS"
      },
      {
        "valueModelMap": {},
        "operators": [
          "EQ",
          "NOT_EQ",
          "CONTAINS",
          "NOT_CONTAINS",
          "MATCHES",
          "NOT_MATCHES",
          "IN_LIST",
          "NOT_IN_LIST"
        ],
        "name": "用户代理",
        "remark": "例如:Mozilla/5.0 (Windows NT 10.0; Win64; x64)...",
        "optionals": null,
        "value": "USER_AGENT",
        "target": "USER_AGENT"
      },
      {
        "valueModelMap": {
          "IN": {
            "type": "multiple",
            "values": ["HTTP/1.0", "HTTP/1.1", "HTTP/1.2", "HTTP/2", "HTTP/3"]
          },
          "NOT_IN": {
            "type": "multiple",
            "values": ["HTTP/1.0", "HTTP/1.1", "HTTP/1.2", "HTTP/2", "HTTP/3"]
          }
        },
        "operators": [
          "IN",
          "NOT_IN",
          "EQ",
          "NOT_EQ",
          "CONTAINS",
          "NOT_CONTAINS"
        ],
        "name": "请求协议",
        "remark": "例如:HTTP/1.0",
        "optionals": ["HTTP/1.0", "HTTP/1.1", "HTTP/1.2", "HTTP/2", "HTTP/3"],
        "value": "REQUEST_PROTOCOL",
        "target": "REQUEST_PROTOCOL"
      },
      {
        "valueModelMap": {
          "IN": {
            "type": "multiple",
            "values": [
              "GET",
              "POST",
              "PUT",
              "DELETE",
              "PURGE",
              "HEAD",
              "OPTIONS",
              "PATCH"
            ]
          },
          "NOT_IN": {
            "type": "multiple",
            "values": [
              "GET",
              "POST",
              "PUT",
              "DELETE",
              "PURGE",
              "HEAD",
              "OPTIONS",
              "PATCH"
            ]
          }
        },
        "operators": ["IN", "NOT_IN"],
        "name": "请求方法",
        "remark": "例如:GET",
        "optionals": [
          "GET",
          "POST",
          "PUT",
          "DELETE",
          "PURGE",
          "HEAD",
          "OPTIONS",
          "PATCH"
        ],
        "value": "REQUEST_METHOD",
        "target": "REQUEST_METHOD"
      },
      {
        "valueModelMap": {},
        "operators": [
          "EQ",
          "NOT_EQ",
          "CONTAINS",
          "NOT_CONTAINS",
          "MATCHES",
          "NOT_MATCHES",
          "IN_LIST",
          "NOT_IN_LIST"
        ],
        "name": "Referer",
        "remark": "",
        "optionals": null,
        "value": "REFERER",
        "target": "REFERER"
      },
      {
        "valueModelMap": {
          "IN_LIST": {
            "type": "data_list",
            "values": [
              {
                "options": [
                  {
                    "label": "123",
                    "value": 82
                  }
                ],
                "label": "自定义"
              }
            ]
          },
          "NOT_IN_LIST": {
            "type": "data_list",
            "values": [
              {
                "options": [
                  {
                    "label": "123",
                    "value": 82
                  }
                ],
                "label": "自定义"
              }
            ]
          }
        },
        "operators": [
          "EQ",
          "NOT_EQ",
          "CONTAINS",
          "NOT_CONTAINS",
          "MATCHES",
          "NOT_MATCHES"
        ],
        "name": "X-Forwarded-For",
        "remark": "",
        "optionals": null,
        "value": "X_FORWARDED_FOR",
        "target": "X_FORWARDED_FOR"
      }
    ],
    "actions": [
      {
        "operators": ["nolog", "log"],
        "name": "拦截",
        "value": "DENY",
        "parameters": null
      },
      {
        "operators": ["nolog", "log"],
        "name": "仅记录不拦截",
        "value": "LOG",
        "parameters": null
      },
      {
        "operators": ["nolog", "log"],
        "name": "跳过后续规则",
        "value": "ALLOW",
        "parameters": null
      },
      {
        "operators": ["nolog", "log"],
        "name": "频率限速",
        "value": "LIMIT_RATE",
        "parameters": null
      },
      {
        "operators": ["nolog", "log"],
        "name": "人机验证",
        "value": "CAPTCHA",
        "parameters": null
      },
      {
        "operators": ["nolog", "log"],
        "name": "验证爬虫",
        "value": "DETECTION_ROBOT",
        "parameters": null
      },
      {
        "operators": ["nolog", "log"],
        "name": "重定向",
        "value": "REDIRECT",
        "parameters": {
          "301": "301",
          "302": "302",
          "303": "303",
          "307": "307"
        }
      },
      {
        "operators": ["nolog", "log"],
        "name": "鉴权",
        "value": "AUTHENTICATION",
        "parameters": null
      }
    ]
  }
}

valueModelMap 字段说明(返回示例)

data.targets[] 中每个匹配类型的 valueModelMap 以运算符为键,值为该运算符下可选值的 UI/数据结构模型。返回示例中出现的顶层键如下。

字段名称 字段描述
IP_IN_LIST 源 IP 在指定数据列表内时使用的取值模型;对象内含 type(示例为 data_list)、values(含 labeloptions 等,选项对应列表 ID)。
NOT_IP_IN_LIST 源 IP 不在指定数据列表内时使用的取值模型;结构与 IP_IN_LIST 对称。
IN 匹配值属于给定集合时使用的取值模型;type 可为 multiple_group(分组多选,如国家/地区)、multiple(扁平多选,如省份或 HTTP 方法/协议枚举)。
NOT_IN 匹配值不属于给定集合时使用的取值模型;结构与 IN 对应。
IN_LIST 字段值在自定义数据列表内时使用的取值模型;内含 type(示例为 data_list)、values(列表分组及 options 中的 label/value)。
NOT_IN_LIST 字段值不在自定义数据列表内时使用的取值模型;结构与 IN_LIST 对称。

说明: 部分 targetvalueModelMap{}(如查询字符串、请求头等),表示该类型无上述预设枚举/列表模型,由 operators 中的其他算子(如 EQCONTAINS 等)配合自由输入;URI 在示例中未给出键值内容,含义与「无预设模型」相近。

  • valueModelMap 的键**与 **targets[].operators:同一套条件运算符编码(如 INEQIP_IN_LIST)。
  • log / nolog:多出现在 data.actions[].operators(动作是否记日志),与条件运算符共用同一套标签函数。
  • custodyRules / limitRules / remainRules:规则范围或联动类选项的编码,具体出现在哪些表单以页面为准。
编码(JSON / 代码中的键) 界面中文
EQ 等于
NOT_EQ 不等于
INT_EQ 等于
INT_NOT_EQ 不等于
IN 包含以下各项
NOT_IN 不包含以下各项
CONTAINS 包含
NOT_CONTAINS 不包含
MATCHES 与正则表达式匹配
NOT_MATCHES 与正则表达式不匹配
BEGINS_WITH 开头匹配
NOT_BEGINS_WITH 开头不匹配
ENDS_WITH 末尾匹配
NOT_ENDS_WITH 末尾不匹配
IN_LIST 在数据集合中
NOT_IN_LIST 不在数据集合中
IP_IN_LIST 在数据集合中
NOT_IP_IN_LIST 不在数据集合中
EXIST 存在
NOT_EXIST 不存在
log 记录
nolog 不记录
custodyRules 全部基础防护规则及插件
limitRules 全部限速规则
remainRules 其余自定义规则

data.actions 字段说明(返回示例)

data.actions 为规则命中后可执行动作的元数据列表,供前端渲染动作类型、日志选项及附加参数(如重定向状态码)。以下为返回 JSON 中与 actions 相关的每个字段说明。

1. 顶层:data.actions

字段路径 类型 说明
data.actions array 动作定义列表;顺序由接口返回决定,每一项描述一种可选动作及其 UI 约束。

2. 数组元素:data.actions[](动作项对象字段)

字段路径 类型 说明
data.actions[].operators string[] 该动作下可选的日志/记录策略枚举,用于配置「是否记日志」类子选项;示例中固定为 ["nolog","log"] 两项。
data.actions[].name string 动作的中文展示名(界面文案),与 value 一一对应,不参与业务编码。
data.actions[].value string 动作的编码值(提交/保存自定义规则时使用的动作标识),如 DENYREDIRECT 等。
data.actions[].parameters object 或空 附加参数元数据:未给出具体对象时,表示该动作无需配置结构化子参数;为对象时,键值对描述子选项(见下节「parameters 对象字段」)。

3. data.actions[].operators[] 枚举值(数组元素)

元素取值 说明
nolog 表示可选择「不记录日志」或等价的不落日志策略(具体语义以实现为准)。
log 表示可选择「记录日志」或等价的落日志策略(具体语义以实现为准)。

4. data.actions[].parameters 为对象时(仅 valueREDIRECT 的项)

data.actions[].value === "REDIRECT" 时,parameters 为对象,其每个键表示一种可选的 HTTP 重定向状态码;键名与对应属性值在示例中为相同字符串,供下拉或映射展示。

字段路径 类型 说明
data.actions[].parameters object 重定向动作下可选状态码集合的映射表。
data.actions[].parameters["301"] string 可选重定向码 301(永久重定向);值为字面量 "301"
data.actions[].parameters["302"] string 可选重定向码 302(临时重定向);值为字面量 "302"
data.actions[].parameters["303"] string 可选重定向码 303(See Other);值为字面量 "303"
data.actions[].parameters["307"] string 可选重定向码 307(Temporary Redirect);值为字面量 "307"

5. 返回示例中各动作项:name / value / parameters 对照

value(编码) name(展示名) parameters
DENY 拦截 无附加参数
LOG 仅记录不拦截 无附加参数
ALLOW 跳过后续规则 无附加参数
LIMIT_RATE 频率限速 无附加参数
CAPTCHA 人机验证 无附加参数
DETECTION_ROBOT 验证爬虫 无附加参数
REDIRECT 重定向 非空对象,键为 301302303307(见上表)
AUTHENTICATION 鉴权 无附加参数

返回结果

状态码 状态码含义 说明 数据模型
200 OK OK Inline
401 Unauthorized Unauthorized 无独立数据模型
403 Forbidden Forbidden 无独立数据模型
404 Not Found Not Found 无独立数据模型