

**引入全新的主机体验 AWS WAF**

现在，您可以使用更新的体验访问控制台中任意位置的 AWS WAF 功能。有关更多详细信息，请参阅[使用控制台](https://docs.aws.amazon.com/waf/latest/developerguide/working-with-console.html)。

本文属于机器翻译版本。若本译文内容与英语原文存在差异，则一律以英文原文为准。

# 机器人控制功能示例：允许特定的被阻止机器人
<a name="waf-bot-control-example-allow-blocked-bot"></a>

机器人可能会被多条机器人控制功能规则阻止。对每条阻止规则执行以下步骤。

如果 AWS WAF 机器人控制规则正在屏蔽您不想屏蔽的机器人，请执行以下操作：

1. 通过查看日志，识别阻止机器人的机器人控制功能规则。将在日志中名称以 `terminatingRule` 开头的字段中指定阻止规则。有关保护包（web ACL）日志的更多信息，请参阅 [记录 AWS WAF 保护包 (Web ACL) 流量](logging.md)。请注意规则添加到请求中的标签。

1. 在您的保护包（web ACL）中，覆盖阻止规则的操作以计数。要在控制台中执行此操作，请编辑保护包（web ACL）中的规则组规则，然后为该规则选择 Count 规则操作覆盖。这样可以确保机器人不会被规则阻止，但规则仍会将其标签应用于匹配的请求。

1. 在保护包（web ACL）中，在机器人控制功能托管规则组后添加标签匹配规则。将规则配置为与被覆盖的规则的标签相匹配，并阻止除您不想阻止的机器人之外的所有匹配请求。

   现在，您的保护包（web ACL）已配置完毕，因此您要允许的机器人不再被通过日志识别的阻止规则所阻止。

再次检查流量和您的日志，确保机器人被允许通过。如果不是，请再次执行上述步骤。

例如，假设您需要阻止除 `pingdom` 以外的所有监控机器人。在这种情况下，您可以将 `CategoryMonitoring` 规则覆盖为计数，然后编写一条规则来阻止除带有机器人名称标签 `pingdom` 的机器人之外的所有监控机器人。

以下规则使用机器人控制功能托管规则组，但会将 `CategoryMonitoring` 规则操作覆盖为计数。类别监控规则像往常一样将其标签应用于匹配的请求，但仅对它们进行计数，而不是执行通常的阻止操作。

```
{
  "Name": "AWS-AWSBotControl-Example",
  "Priority": 5,
  "Statement": {
    "ManagedRuleGroupStatement": {
      "VendorName": "AWS",
      "Name": "AWSManagedRulesBotControlRuleSet",
      "ManagedRuleGroupConfigs": [
        {
          "AWSManagedRulesBotControlRuleSet": {
            "InspectionLevel": "COMMON"
          }
        }
      ],
	  "RuleActionOverrides": [
        {
          "ActionToUse": {
            "Count": {}
          },
          "Name": "CategoryMonitoring"
        }
      ],
      "ExcludedRules": []
    }
  },
  "VisibilityConfig": {
    "SampledRequestsEnabled": true,
    "CloudWatchMetricsEnabled": true,
    "MetricName": "AWS-AWSBotControl-Example"
  }
}
```

以下规则与前面的 `CategoryMonitoring` 规则添加到匹配的 web 请求中的类别监控标签相匹配。在类别监控请求中，该规则会阻止所有请求，除带有机器人名称 `pingdom` 标签的请求外。

以下规则必须在保护包（web ACL）处理顺序中前面的机器人控制功能托管规则组之后运行。

```
{
      "Name": "match_rule",
      "Priority": 10,
      "Statement": {
        "AndStatement": {
          "Statements": [
            {
              "LabelMatchStatement": {
                "Scope": "LABEL",
                "Key": "awswaf:managed:aws:bot-control:bot:category:monitoring"
              }
            },
            {
              "NotStatement": {
                "Statement": {
                  "LabelMatchStatement": {
                    "Scope": "LABEL",
                    "Key": "awswaf:managed:aws:bot-control:bot:name:pingdom"
                  }
                }
              }
            }
          ]
        }
      },
      "Action": {
        "Block": {}
      },
      "VisibilityConfig": {
        "SampledRequestsEnabled": true,
        "CloudWatchMetricsEnabled": true,
        "MetricName": "match_rule"
      }
}
```