更新时间:2025-09-19 GMT+08:00
分享

查询BotM所有规则

功能介绍

查询BotM所有规则

调用方法

请参见如何调用API

URI

GET /v1/{project_id}/waf/policy/{policy_id}/bot-manager

表1 路径参数

参数

是否必选

参数类型

描述

project_id

String

参数解释:

租户项目id,对应控制台用户名->我的凭证->项目列表->项目ID,用于标识租户所属项目。

约束限制:

不涉及

取值范围:

不涉及

默认取值:

不涉及

policy_id

String

参数解释:

policyid,防护策略的唯一标识,从查询防护策略列表接口获取。

约束限制:

不涉及

取值范围:

不涉及

默认取值:

不涉及

请求参数

表2 请求Header参数

参数

是否必选

参数类型

描述

X-Auth-Token

String

参数解释:

auth token,即租户token,用于身份验证,通过调用IAM服务获取(响应消息头中X-Subject-Token的值)。

约束限制:

不涉及

取值范围:

不涉及

默认取值:

不涉及

响应参数

状态码:200

表3 响应Body参数

参数

参数类型

描述

policy_id

String

参数解释:

策略Id,关联BotM规则的防护策略唯一标识。

约束限制:

不涉及

取值范围:

不涉及

默认取值:

不涉及

tenant_id

String

参数解释:

租户Id,当前BotM规则所属的租户唯一标识。

约束限制:

不涉及

取值范围:

不涉及

默认取值:

不涉及

known_bot_detection

Array of BotMRule objects

参数解释:

已知Bot相关的所有规则,包含针对已知Bot的检测与防护规则。

约束限制:

不涉及

取值范围:

不涉及

默认取值:

不涉及

transparent_detection

Array of BotMRule objects

参数解释:

透明检测相关的所有规则,包含无感知的Bot透明检测规则。

约束限制:

不涉及

取值范围:

不涉及

默认取值:

不涉及

behavior_detection

BotMBehaviorDetectionRule object

参数解释:

行为检测的规则,包含基于行为分析的Bot检测规则及防护策略。

约束限制:

不涉及

取值范围:

不涉及

默认取值:

不涉及

traffic_detection_conditions

Array of TrafficDetectionConditionDTO objects

参数解释:

需要BOT检测的流量检测条件,定义触发Bot检测的流量筛选规则。

约束限制:

不涉及

取值范围:

不涉及

默认取值:

不涉及

interactive_detection

Array of BotMRule objects

参数解释:

主动特征检测规则列表,包含需要主动交互验证的Bot检测规则。

约束限制:

不涉及

取值范围:

不涉及

默认取值:

不涉及

表4 BotMBehaviorDetectionRule

参数

参数类型

描述

rule

BotMRule object

参数解释:

行为检测规则对应的规则信息,定义行为检测的基础配置(如规则名称、状态等)。

约束限制:

不涉及

取值范围:

不涉及

默认取值:

不涉及

strategy

BotMDefenseStrategy object

参数解释:

行为检测规则对应的防护策略,定义不同风险等级的防护动作。

约束限制:

不涉及

取值范围:

不涉及

默认取值:

不涉及

表5 BotMRule

参数

参数类型

描述

id

Integer

参数解释:

规则ID,唯一标识当前BotM规则。

约束限制:

不涉及

取值范围:

不涉及

默认取值:

不涉及

name

String

参数解释:

规则名称,用于标识当前BotM规则的名称。

约束限制:

不涉及

取值范围:

不涉及

默认取值:

不涉及

description

String

参数解释:

规则描述,对当前BotM规则的功能说明。

约束限制:

不涉及

取值范围:

不涉及

默认取值:

不涉及

features

Array of strings

参数解释:

规则列表,当前BotM规则包含的具体检测特征。

约束限制:

不涉及

取值范围:

不涉及

默认取值:

不涉及

category

Integer

参数解释:

规则所属类别,标识规则的一级分类(如0表示基础检测类)。

约束限制:

不涉及

取值范围:

不涉及

默认取值:

不涉及

sub_category

Integer

参数解释:

规则所属子类别,标识规则的二级分类(如0表示已知Bot子类)。

约束限制:

不涉及

取值范围:

不涉及

默认取值:

不涉及

defense_action

Integer

参数解释:

规则对应的防护动作,标识触发规则后执行的动作(如0表示放行)。

约束限制:

不涉及

取值范围:

不涉及

默认取值:

不涉及

created_time

Long

参数解释:

规则创建的时间,时间戳(毫秒级)。

约束限制:

不涉及

取值范围:

不涉及

默认取值:

不涉及

modified_time

Long

参数解释:

规则更新的时间,时间戳(毫秒级)。

约束限制:

不涉及

取值范围:

不涉及

默认取值:

不涉及

status

Boolean

参数解释:

规则目前是否被启用(true表示启用,false表示禁用)。

约束限制:

不涉及

取值范围:

仅支持true、false两个布尔值

默认取值:

true

interaction_confidence

Integer

参数解释:

交互置信度,标识主动交互检测的置信度阈值。

约束限制:

不涉及

取值范围:

不涉及

默认取值:

不涉及

表6 BotMDefenseStrategy

参数

参数类型

描述

low

BotMDefenseLevel object

参数解释:

防护等级low,低风险等级对应的防护配置。

约束限制:

不涉及

取值范围:

不涉及

默认取值:

不涉及

medium

BotMDefenseLevel object

参数解释:

防护等级medium,中风险等级对应的防护配置。

约束限制:

不涉及

取值范围:

不涉及

默认取值:

不涉及

high

BotMDefenseLevel object

参数解释:

防护等级high,高风险等级对应的防护配置。

约束限制:

不涉及

取值范围:

不涉及

默认取值:

不涉及

表7 BotMDefenseLevel

参数

参数类型

描述

threshold

Integer

参数解释:

该防护等级对应的分数门限,达到该分数则触发对应防护动作。

约束限制:

不涉及

取值范围:

不涉及

默认取值:

不涉及

defense_action

Integer

参数解释:

该防护等级对应的防护动作ID,标识触发后执行的动作(如101表示验证码)。

约束限制:

不涉及

取值范围:

不涉及

默认取值:

不涉及

表8 TrafficDetectionConditionDTO

参数

参数类型

描述

id

String

参数解释:

Id,唯一标识当前流量检测条件。

约束限制:

不涉及

取值范围:

不涉及

默认取值:

不涉及

match_field

String

参数解释:

匹配字段(类别),标识流量筛选的字段类型(如url表示URL路径)。

约束限制:

不涉及

取值范围:

不涉及

默认取值:

不涉及

match_field_index

String

参数解释:

子字段,匹配字段的细分维度(如无则不填)。

约束限制:

不涉及

取值范围:

不涉及

默认取值:

不涉及

logical_operator

String

参数解释:

逻辑运算符,标识匹配条件的逻辑关系(如contain表示包含)。

约束限制:

不涉及

取值范围:

不涉及

默认取值:

不涉及

match_contents

Array of strings

参数解释:

匹配内容,符合筛选条件的具体值列表(如特定URL路径)。

约束限制:

不涉及

取值范围:

不涉及

默认取值:

不涉及

value_list_ref

String

参数解释:

引用表Id,关联预设的匹配内容列表ID(如无则不填)。

约束限制:

不涉及

取值范围:

不涉及

默认取值:

不涉及

状态码:400

表9 响应Body参数

参数

参数类型

描述

error_code

String

错误码

error_msg

String

错误信息

encoded_authorization_message

String

编码 (加密) 后的详细拒绝原因,用户可以自行调用 STS 服务的decode-authorization-message接口进行解码,可参考STS5联调自验证。IAM5鉴权错误时才会返回此字段。

details

Array of IAM5ErrorDetails objects

调用下游服务的报错信息集合,IAM5鉴权错误时才会返回此字段。

表10 IAM5ErrorDetails

参数

参数类型

描述

error_code

String

下游服务错误码

error_msg

String

下游服务报错信息

状态码:401

表11 响应Body参数

参数

参数类型

描述

error_code

String

错误码

error_msg

String

错误信息

encoded_authorization_message

String

编码 (加密) 后的详细拒绝原因,用户可以自行调用 STS 服务的decode-authorization-message接口进行解码,可参考STS5联调自验证。IAM5鉴权错误时才会返回此字段。

details

Array of IAM5ErrorDetails objects

调用下游服务的报错信息集合,IAM5鉴权错误时才会返回此字段。

表12 IAM5ErrorDetails

参数

参数类型

描述

error_code

String

下游服务错误码

error_msg

String

下游服务报错信息

状态码:500

表13 响应Body参数

参数

参数类型

描述

error_code

String

错误码

error_msg

String

错误信息

encoded_authorization_message

String

编码 (加密) 后的详细拒绝原因,用户可以自行调用 STS 服务的decode-authorization-message接口进行解码,可参考STS5联调自验证。IAM5鉴权错误时才会返回此字段。

details

Array of IAM5ErrorDetails objects

调用下游服务的报错信息集合,IAM5鉴权错误时才会返回此字段。

表14 IAM5ErrorDetails

参数

参数类型

描述

error_code

String

下游服务错误码

error_msg

String

下游服务报错信息

请求示例

响应示例

状态码:200

OK

{
  "policy_id" : "string",
  "tenant_id" : "string",
  "known_bot_detection" : [ {
    "id" : 0,
    "name" : "string",
    "description" : "string",
    "category" : 0,
    "sub_category" : 0,
    "defense_action" : 0,
    "created_time" : 0,
    "modified_time" : 0,
    "status" : true
  } ],
  "transparent_detection" : [ {
    "id" : 0,
    "name" : "string",
    "description" : "string",
    "category" : 0,
    "sub_category" : 0,
    "defense_action" : 0,
    "created_time" : 0,
    "modified_time" : 0,
    "status" : true
  } ],
  "behavior_detection" : {
    "rule" : {
      "id" : 0,
      "name" : "string",
      "description" : "string",
      "category" : 0,
      "sub_category" : 0,
      "defense_action" : 0,
      "created_time" : 0,
      "modified_time" : 0,
      "status" : true
    },
    "defense_strategy" : {
      "low" : {
        "threshold" : 60,
        "defense_action" : 101
      },
      "medium" : {
        "threshold" : 90,
        "defense_action" : 101
      },
      "high" : {
        "threshold" : 100,
        "defense_action" : 101
      }
    }
  },
  "traffic_detection_conditions" : [ {
    "id" : 0,
    "match_field" : "user-agent",
    "match_field_index" : "aaa",
    "logical_operator" : "contain",
    "match_contents" : [ "das" ],
    "value_list_res" : "aaaa"
  } ],
  "interactive_detection" : [ {
    "id" : 0,
    "name" : "string",
    "description" : "string",
    "category" : 0,
    "sub_category" : 0,
    "defense_action" : 0,
    "created_time" : 0,
    "modified_time" : 0,
    "status" : true,
    "interaction_confidence" : 0
  } ]
}

SDK代码示例

SDK代码示例如下。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
package com.huaweicloud.sdk.test;

import com.huaweicloud.sdk.core.auth.ICredential;
import com.huaweicloud.sdk.core.auth.BasicCredentials;
import com.huaweicloud.sdk.core.exception.ConnectionException;
import com.huaweicloud.sdk.core.exception.RequestTimeoutException;
import com.huaweicloud.sdk.core.exception.ServiceResponseException;
import com.huaweicloud.sdk.waf.v1.region.WafRegion;
import com.huaweicloud.sdk.waf.v1.*;
import com.huaweicloud.sdk.waf.v1.model.*;


public class ListBotMRulesSolution {

    public static void main(String[] args) {
        // The AK and SK used for authentication are hard-coded or stored in plaintext, which has great security risks. It is recommended that the AK and SK be stored in ciphertext in configuration files or environment variables and decrypted during use to ensure security.
        // In this example, AK and SK are stored in environment variables for authentication. Before running this example, set environment variables CLOUD_SDK_AK and CLOUD_SDK_SK in the local environment
        String ak = System.getenv("CLOUD_SDK_AK");
        String sk = System.getenv("CLOUD_SDK_SK");
        String projectId = "{project_id}";

        ICredential auth = new BasicCredentials()
                .withProjectId(projectId)
                .withAk(ak)
                .withSk(sk);

        WafClient client = WafClient.newBuilder()
                .withCredential(auth)
                .withRegion(WafRegion.valueOf("<YOUR REGION>"))
                .build();
        ListBotMRulesRequest request = new ListBotMRulesRequest();
        request.withPolicyId("{policy_id}");
        try {
            ListBotMRulesResponse response = client.listBotMRules(request);
            System.out.println(response.toString());
        } catch (ConnectionException e) {
            e.printStackTrace();
        } catch (RequestTimeoutException e) {
            e.printStackTrace();
        } catch (ServiceResponseException e) {
            e.printStackTrace();
            System.out.println(e.getHttpStatusCode());
            System.out.println(e.getRequestId());
            System.out.println(e.getErrorCode());
            System.out.println(e.getErrorMsg());
        }
    }
}
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
# coding: utf-8

import os
from huaweicloudsdkcore.auth.credentials import BasicCredentials
from huaweicloudsdkwaf.v1.region.waf_region import WafRegion
from huaweicloudsdkcore.exceptions import exceptions
from huaweicloudsdkwaf.v1 import *

if __name__ == "__main__":
    # The AK and SK used for authentication are hard-coded or stored in plaintext, which has great security risks. It is recommended that the AK and SK be stored in ciphertext in configuration files or environment variables and decrypted during use to ensure security.
    # In this example, AK and SK are stored in environment variables for authentication. Before running this example, set environment variables CLOUD_SDK_AK and CLOUD_SDK_SK in the local environment
    ak = os.environ["CLOUD_SDK_AK"]
    sk = os.environ["CLOUD_SDK_SK"]
    projectId = "{project_id}"

    credentials = BasicCredentials(ak, sk, projectId)

    client = WafClient.new_builder() \
        .with_credentials(credentials) \
        .with_region(WafRegion.value_of("<YOUR REGION>")) \
        .build()

    try:
        request = ListBotMRulesRequest()
        request.policy_id = "{policy_id}"
        response = client.list_bot_m_rules(request)
        print(response)
    except exceptions.ClientRequestException as e:
        print(e.status_code)
        print(e.request_id)
        print(e.error_code)
        print(e.error_msg)
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
package main

import (
	"fmt"
	"github.com/huaweicloud/huaweicloud-sdk-go-v3/core/auth/basic"
    waf "github.com/huaweicloud/huaweicloud-sdk-go-v3/services/waf/v1"
	"github.com/huaweicloud/huaweicloud-sdk-go-v3/services/waf/v1/model"
    region "github.com/huaweicloud/huaweicloud-sdk-go-v3/services/waf/v1/region"
)

func main() {
    // The AK and SK used for authentication are hard-coded or stored in plaintext, which has great security risks. It is recommended that the AK and SK be stored in ciphertext in configuration files or environment variables and decrypted during use to ensure security.
    // In this example, AK and SK are stored in environment variables for authentication. Before running this example, set environment variables CLOUD_SDK_AK and CLOUD_SDK_SK in the local environment
    ak := os.Getenv("CLOUD_SDK_AK")
    sk := os.Getenv("CLOUD_SDK_SK")
    projectId := "{project_id}"

    auth := basic.NewCredentialsBuilder().
        WithAk(ak).
        WithSk(sk).
        WithProjectId(projectId).
        Build()

    client := waf.NewWafClient(
        waf.WafClientBuilder().
            WithRegion(region.ValueOf("<YOUR REGION>")).
            WithCredential(auth).
            Build())

    request := &model.ListBotMRulesRequest{}
	request.PolicyId = "{policy_id}"
	response, err := client.ListBotMRules(request)
	if err == nil {
        fmt.Printf("%+v\n", response)
    } else {
        fmt.Println(err)
    }
}

更多编程语言的SDK代码示例,请参见API Explorer的代码示例页签,可生成自动对应的SDK代码示例。

状态码

状态码

描述

200

OK

400

请求失败

401

token权限不足

500

服务器内部错误

错误码

请参见错误码

相关文档