

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

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

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

# 为您的用例选择和配置机器人控制
<a name="waf-bot-control-use-cases"></a>

Bot Control 可防范一系列自动威胁。正确的配置取决于您要保护的内容和面临的威胁。使用本主题为常见的应用场景选择正确的保护级别并配置 Bot Control。

## 将机器人控制与您的应用程序匹配
<a name="waf-bot-control-use-cases-scenarios"></a>

机器人威胁通常分为三类：
+ **欺诈威胁** — 凭证填写、虚假账户和自动购买。
+ **内容威胁** — 抓取定价数据、产品目录和已发布内容。
+ **可用性威胁** — Bot 流量会降低性能或增加基础设施成本。

对于大多数此类威胁，我们建议使用客户端应用程序集成 SDK 的定向保护级别。以下场景描述了如何为每种场景配置机器人控制。

**保护登录和账户页面**  
凭据填充和账户盗用攻击使用自动化工具根据您的登录端点测试被盗的凭证。账户创建欺诈使用机器人大规模创建虚假账户。在整个站点中集成应用程序集成 SDK，并将 Bot Control 与 F AWS WAF raud Control 托管规则组配对，以实现登录和账户创建保护。

**保护产品目录和定价数据**  
如果您的应用程序显示产品信息、定价、库存水平或其他竞争数据，机器人可能会抓取这些内容来提供竞争对手情报、建立比较网站或削弱您的定价。这些抓取器通常模仿真实的浏览器，并在住宅IP地址之间轮换以避免被发现。在您的产品和目录页面上应用 Bot Control，而不仅仅是结账。这样，即使机器人看起来像普通浏览器，Bot Control 也可以检测自动抓取的行为模式。

**保护已发布的内容**  
内容出版商、新闻网站和媒体平台面临着复制文章、图片和其他原创内容的机器人。这种内容盗窃行为会削弱您的搜索排名，减少广告收入，并削弱您的竞争地位。在内容页面上应用机器人控制。使用 Bot Control 控制面板监控哪些机器人正在访问您的内容，并决定如何处理每个类别。有关更多信息，请参阅 [AWS WAF 机器人控制功能组件](waf-bot-control-components.md)。

**降低不想要的爬虫带来的基础设施成本**  
Scraper、Crawler 和自动化工具可以产生高流量，从而在不提供商业价值的情况下增加计算和数据传输成本。Bot Control 按类别识别自我声明的机器人，例如抓取工具、HTTP 库和抓取框架。然后，您可以使用标签单独屏蔽或限制每个类别。为了逃避抓取，有针对性的保护可以检测伪装其身份的机器人，包括那些使用住宅代理和无头浏览器的机器人。

**保护高价值交易**  
结账流程、限量库存购买和门票销售是与合法客户竞争的自动购买机器人的目标。Bot Control 可检测自动浏览器，例如 Selenium 和 Puppeteer，并应用会话级别的速率限制以防止单个客户端垄断库存。在您的交易页面上集成 SDK，以获得最高的检测准确性。

**管理 AI 爬虫和训练数据抓取器**  
AI 机器人从您的应用程序中收集内容，以训练模型或在 AI 应用程序中显示数据。机器人控制对已知的人工智能机器人进行分类。编写自定义规则，允许您想要允许的特定 AI 机器人，例如经过验证的搜索引擎爬虫，并屏蔽或限制其他机器人。对于使用浏览器自动化框架与您的应用程序交互的 AI 代理，Bot Control 会检测并质疑这些自动会话。借助 Web Bot 身份验证 (WBA)，合法的 AI 代理可以通过加密方式证明其身份。这为您提供了一个可靠的信号，可以区分授权代理和未经授权的代理。有关 WBA 的更多信息，请参阅[AI 代理的 Web 机器人身份验证](waf-bot-control.md#waf-bot-ai-agents)。

**保护移动应用程序**  
移动应用程序面临的机器人威胁与 Web 应用程序类似，但它们的流量具有不同的特征。移动客户端使用非浏览器用户代理。来自原生移动应用程序框架的 HTTP 请求被排除在机器人控制`SignalNonBrowserUserAgent`规则之外，但不包括非标准 HTTP 库和应用程序内浏览器。将 AWS WAF 移动 SDK 集成到您的 iOS 或 Android 应用程序中，以提供定向保护用于精确检测的客户端令牌。

## 在普通保护和定向保护之间做出选择
<a name="waf-bot-control-choosing-level"></a>

Bot Control 提供两种保护级别。以下指南可帮助您为应用程序选择正确的级别。

**常用保护级别**  
Common Protection 会检测通过用户代理字符串、IP 地址和其他请求特征来识别自己的机器人。它可以验证声称来自已知组织（例如搜索引擎）的机器人是否确实来自这些组织。Common Protection 可让您了解谁在访问您的应用程序，并允许您独立控制每个机器人类别。它不需要软件开发工具包，并且每个请求的成本更低。当你主要需要管理已知的机器人流量时，例如在允许搜索引擎爬虫的同时屏蔽不需要的抓取工具，那么通用保护是一个不错的起点。

**目标保护级别**  
目标保护级别可以检测普通保护级别检测到的所有内容，并增加了对无法自我识别的机器人的检测。它使用浏览器查询、TLS 指纹识别、行为启发式和机器学习来区分自动客户端和人为客户端。机器学习会分析您特定网站的流量模式，包括时间戳、浏览器特征和导航行为。当您的流量变化和机器人策略变化时，它会更新其检测结果。对于面临凭据填充、高级抓取、自动购买或攻击者主动试图逃避检测的任何机器人活动的应用程序，建议采用有针对性的保护。

对于大多数生产 Web 应用程序，我们建议进行有针对性的保护。有关为特定场景配置定向保护的指导，请参阅[将机器人控制与您的应用程序匹配](#waf-bot-control-use-cases-scenarios)。有关在高流量下管理成本的指导，请参阅[管理 成本](#waf-bot-control-cost-strategies)。


|  | 公用 | Targeted | 
| --- | --- | --- | 
| 检测自我识别的机器人 | 支持 | 是 | 
| 验证合法的机器人（搜索引擎、监控服务） | 支持 | 是 | 
| 检测隐藏身份的机器人 | 否 | 是 | 
| 机器学习适应您的交通 | 否 | 是 | 
| Session-level 速率限制 | 否 | 是 | 
| 检测浏览器自动化工具 | 是（自我识别） | 是（包括回避） | 
| 客户端应用程序集成 SDK | 非必需 | 强烈推荐 | 

**正在检查您的规则组版本**  
Bot Control 托管规则组会随着时间的推移而更新，具有新的检测功能。检查您当前使用的版本以及是否有更新的静态版本可用。较新的版本包括其他检测功能，可以增加您抵御新机器人威胁的覆盖范围。您可以在中查看可用版本及其更改[AWS 托管规则变更日志](aws-managed-rule-groups-changelog.md)。

## 机器人控制检测的工作原理
<a name="waf-bot-control-how-it-protects"></a>

Bot Control 使用精细分类来标记其评估的每个请求：机器人名称、类别、组织和验证状态。您可以编写与这些标签相匹配的规则，以决定对每种类型的机器人采取什么行动。这使您可以完全控制所有机器人流量，而不是一个允许或阻止的决定。

在目标保护级别上，Bot Control 结合了多种检测技术。其中包括签名匹配、浏览器查询、TLS 指纹识别、行为启发式方法和根据网站流量模式调整的机器学习。逃避一种技巧的机器人可能会被另一种技术捕获。机器学习还可以检测协调的机器人活动：多个客户端以单个请求分析可能错过的方式协同工作的模式。有关所有机器人控制组件的详细说明，请参阅[AWS WAF 机器人控制功能组件](waf-bot-control-components.md)。有关Challenge和CAPTCHA交互在客户端和之间的工作原理的演练 AWS WAF，请参阅[CAPTCHA然后Challenge在 AWS WAF](waf-captcha-and-challenge.md)。

## 管理 成本
<a name="waf-bot-control-cost-strategies"></a>

使用 Bot Control 托管规则组的费用会随着使用该规则组 AWS WAF 进行评估的 Web 请求数量的增加而增加。对于大多数应用程序来说，Bot Control提供的保护是合理的。屏蔽机器人流量可以降低您的计算、带宽和数据传输成本，通常比检查本身的成本还要高。如果您需要进一步优化成本，以下策略可以提供帮助。

**排除静态资产**  
最简单的成本优化是`.svg`从 Bot Control 检查中排除`.css`对`.png`、`.jpg`、和等静态文件类型的请求。针对您的应用程序数据和功能的机器人会击中动态端点，而不是您的样式表或图像。这样可以减少被检查的请求，而不会降低检测效率。有关示例，请参阅[机器人控制功能示例：仅对动态内容使用机器人控制功能](waf-bot-control-example-scope-down-dynamic-content.md)。

**提高效率的顺序规则**  
将成本较低的规则放在保护包 (Web ACL) 中的 Bot Control 托管规则组之前。诸如 IP 信誉列表、地理限制和基于速率的规则之类的规则可以在明显不需要的流量到达付费的 Bot Control 检查之前将其阻止。Bot Control 永远不会对被早期规则屏蔽的请求进行评估，因此您无需为此支付额外的每次请求费用。

**在适当时将范围扩大到特定的端点**  
对于某些应用程序，您可能只想将 Bot Control 应用于网站的特定部分。例如，如果您的应用程序的公共信息部分不包含敏感数据或有价值的内容，则可以将其排除在检查范围之外。请注意不要将包含值得保护的内容的页面排除在外，例如产品目录、定价数据或已发布的文章。有关示例，请参阅[机器人控制功能示例：仅对登录页面使用机器人控制功能](waf-bot-control-example-scope-down-login.md)。

## 集成客户端应用程序集成 SDK
<a name="waf-bot-control-sdk-guidance"></a>

使用 JavaScript 和移动 SDK 最大限度地提高定向保护的有效性。这些 SDK 提供浏览器指纹识别、质询令牌管理和行为遥测，目标规则用于会话级检测。此处的会话由 SDK 获取的客户端令牌标识，该令牌代表特定的浏览器或设备。如果没有 SDK，定向保护的上下文要少得多，也无法可靠地将高级机器人与合法用户区分开来。

**从一开始就集成 SDK**  
部署定向保护时，请同时集成 SDK。无论您是部署到生产环境还是在测试环境中评估 Bot Control，这都适用。在不使用 SDK 的情况下评估定向防护并不能准确了解其检测能力，因为许多定向规则依赖于只有 SDK 提供的客户端信号。

**建议广泛集成**  
为了实现最强的检测，请在所有提供动态内容的页面上集成 JavaScript SDK，而不仅仅是登录或结账。Bot Control 根据客户端浏览应用程序的方式来构建行为特征，包括请求时间、页面序列和交互模式。当 SDK 仅出现在单个页面上时，Bot Control 的行为上下文有限，无法将真实用户与学会模仿一个页面加载的机器人区分开来。更广泛的集成让 Bot Control 可以更全面地了解每个客户端会话，从而改善对住宅代理僵尸网络等高级机器人的检测。至少要在最关键的页面上集成 SDK，但要将其视为起点而不是结束状态。

**移动应用程序**  
对于 iOS 和安卓应用程序，请使用 AWS WAF 移动 SDK。移动 SDK 可在您的应用程序中处理令牌获取和续订。有关 SDK 的更多信息，请参阅 [中的客户端应用程序集成 AWS WAF](waf-application-integration.md)。

## 常见配置调整
<a name="waf-bot-control-common-adjustments"></a>

大多数 Bot Control 部署都需要进行一些配置调整，以匹配应用程序流量的特定特征。以下是最常见的调整。

**允许使用监控和运行状况检查工具**  
内部监控工具、正常运行时间检查器和负载均衡器运行状况检查会生成自动流量，Bot Control 可能会将其识别为机器人活动。使用与源 IP 地址范围匹配的范围缩小语句或监控工具包含的自定义标头，将这些请求排除在 Bot Control 检查之外。

**不包括应用程序内浏览器和非标准 HTTP 库**  
如果用户通过应用程序内浏览器（例如从社交媒体应用程序打开的链接）访问您的网站，或者如果您的移动应用程序使用非标准的 HTTP 库，则这些客户端可能会触发`SignalNonBrowserUserAgent`规则。该规则不包括标准原生移动框架，但其他非浏览器用户代理不在此规则之外。在机器人控制规则组中为这些客户端配置用户代理例外。有关示例，请参阅[机器人控制功能示例：为被阻止的用户代理创建例外](waf-bot-control-example-user-agent-exception.md)。

**管理经过验证的机器人爬虫**  
默认情况下，机器人控制允许经过验证的机器人。如果您想对经过验证的爬虫进行速率限制，例如为了减少激进但合法的搜索引擎抓取的负载，请使用机器人标签来编写基于速率的自定义规则，以限制特定经过验证的机器人类别的请求速率。有关示例，请参阅[机器人控制功能示例：明确允许已验证机器人](waf-bot-control-example-allow-verified-bots.md)。

**将机器人信号转发到您的来源**  
您可以将 Bot Control 分类标签作为自定义请求标头传递给您的应用程序。然后，您的来源可以使用标签向可疑抓取者提供简化的内容，在您自己的分析中记录机器人活动，或者在屏蔽页面中包含请求标识符以进行误报举报。使用 AWS WAF 自定义请求标头功能根据标签匹配情况插入标头。有关标题中动态标签值的更多信息，请参阅[自定义的 Web 请求和响应 AWS WAF](waf-custom-request-response.md)。

**触发升级认证**  
您可以将 Bot Control 信号转发到您的应用程序并使用它们来触发额外的验证，而不是直接屏蔽可疑流量。例如，如果 Bot Control 将会话标记为可疑，则您的应用程序可能需要多因素身份验证或在完成敏感操作之前提供额外的验证步骤。 Step-up 身份验证可以减少误报的影响，同时还能抵御自动威胁。使用自定义请求标头将相关的 Bot Control 标签传递给您的源。

**在强制执行之前进行测试**  
务必先在计数模式下部署 Bot Control。在计数模式下，Bot Control 会标记所有请求，但不会阻止任何流量。查看 AWS WAF 日志中的标签以了解 Bot Control 在您的流量中检测到的内容，确认合法流量没有被错误标记，然后在对检测精度有信心后切换到屏蔽模式。有关测试和部署的详细指导，请参阅[测试和部署 AWS WAF 机器人控制](waf-bot-control-deploying.md)。