

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

# 使用 Web Bot Auth 减少验证码
<a name="browser-web-bot-auth"></a>

**注意**  
亚马逊 Bed AgentCore rock Browser 网络机器人身份验证（预览版）基于 IETF Web Bot Auth 协议草案，随着规范的临近定稿，该协议可能会发生变化。

\+ ** 当前的实现：**

\+ \* 随着我们与最终协议规范保持一致，实施细节、API 参数和签名机制可能会发生变化 \* WAF 提供商的支持和政策各不相同。并非所有网站都能识别或允许签名代理流量 \* 域名所有者保留对其机器人政策的完全控制权，无论加密签名如何，都可以阻止、监控或限制代理流量

\+ 有关最新的协议规范，请参阅 [ IETF 草案](https://datatracker.ietf.org/doc/html/draft-meunier-web-bot-auth-architecture)。

亚马逊基岩 AgentCore 浏览器通过网络机器人身份验证减少了验证码挑战。网络机器人身份验证是一项IETF协议草案，旨在通过加密方式向网站和机器人控制供应商识别人工智能代理。

## 概述
<a name="browser-web-bot-auth-overview"></a>

AI 代理在浏览网站时经常遇到反机器人机制，包括验证码挑战、速率限制和请求阻止。这些安全措施旨在防止恶意的自动流量，但通常也会阻止合法的 AI 代理。

网站之所以实施这些防御，是因为它们无法可靠地区分合法代理和恶意机器人。诸如 IP 地址或 User-Agent 字符串之类的传统识别方法很容易被伪造，并且无法提供可验证的身份。

Web Bot Auth 通过实现 [ IETF 自动流量的 HTTP 消息签名架构](https://datatracker.ietf.org/doc/html/draft-meunier-web-bot-auth-architecture)草案协议来应对这一挑战。该协议允许 AI 代理对其 HTTP 请求进行加密签名，为网站提供可验证的代理身份证明。

启用 Web 机器人身份验证后，亚马逊 Bedrock AgentCore 浏览器会自动使用私钥对每个 HTTP 请求进行签名，并包含验证标头。机器人控制供应商（例如 Cloudflare、Akamai Technologies 和 HUMAN Security）可以根据公钥目录验证这些签名，并应用网站所有者配置的适当策略。

这种方法为合法的自动化提供了一种标准化的方法，可以在保持网站所有者对访问策略的控制权的同时进行自我识别。

## 工作原理
<a name="browser-web-bot-auth-how-it-works"></a>

Web Bot Auth 使用 IETF HTTP 消息签名标准对 HTTP 请求进行加密签名：

1.  **代理注册**：Amazon Bedrock AgentCore 向机器人控制供应商（Cloudflare、reCAPTCHA 等）注册并提供公钥进行验证

1.  **请求签名**：启用后，浏览器工具会自动使用私钥对每个 HTTP 请求进行签名

1.  **签名标头**：向每个请求添加三个标头：
   +  `Signature`: 加密签名
   +  `Signature-Agent`: 指向公钥目录进行验证
   +  `Signature-Input`: 指定哪些组件已签名

1.  **验证**：网站的机器人控制系统获取公钥并验证签名以确认请求来自亚马逊 Bedrock AgentCore

1.  **政策应用**：根据经过验证的身份，网站可以应用适当的政策。域名所有者可以将其机器人控制系统配置为：
   +  **阻止所有流量**：无论身份验证如何，都拒绝所有自动请求
   +  **仅允许签名机器人**：仅接受来自具有有效 Web Bot Auth 签名的经过验证的代理的请求
   +  **允许来自特定目录的签名机器人**：允许经过身份验证的代理仅访问网站上的特定路径或资源

## 启用 Web 机器人身份验证
<a name="browser-web-bot-auth-enable"></a>

要启用 Web 机器人身份验证，您需要在创建浏览器工具时对其进行配置：

**Example**  

1. 要使用 Amazon CLI 创建启用了 Web 机器人身份验证的浏览器工具，请执行以下操作：

   ```
   aws bedrock-agentcore-control create-browser \
     --region <Region> \
     --name "my-browser-with-auth" \
     --description "Browser with Web Bot Auth enabled" \
     --network-configuration '{"networkMode": "PUBLIC"}' \
     --execution-role-arn "arn:aws:iam::<account-id>:role/<execution-role>" \
     --browser-signing '{"enabled": true}'
   ```

1. 要使用 Boto3 创建启用了 Web 机器人身份验证的浏览器工具，请执行以下操作：

   ```
   import boto3
   
   client = boto3.client('bedrock-agentcore-control', region_name='us-west-2')
   
   response = client.create_browser(
       name='my-browser-with-auth',
       description='Browser with Web Bot Auth enabled',
       networkConfiguration={
           'networkMode': 'PUBLIC'
       },
       executionRoleArn='arn:aws:iam::<account-id>:role/<execution-role>',
       browserSigning={
           'enabled': True
       }
   )
   ```

1. ===== 在控制台中启用 Web 机器人身份验证

1. 在 [ https://console.aws.amazon.com/bedrock-agentcore/home \# 处打开 AgentCore 控制台](https://console.amazonaws.cn/bedrock-agentcore/home#)。

1. 在导航窗格中，选择**Built-in 工具**。

1. 选择 “**创建浏览器工具” **。

1. 提供唯一的**工具名称**和可选**描述**。

1. 在 “**网络设置” 下**，选择 “**公共网络” **。

1. 在 ** Web 机器人身份验证配置**部分中，选中 “**使用 Web 机器人身份验证” ** 复选框。

1. 在 “**权限” 下**，指定 IAM 执行角色以定义浏览器工具可以访问的 Amazon 资源。

1. 根据需要配置其他浏览器设置，然后选择**创建**。

**重要**  
Web Bot Auth 需要具有信任策略的执行角色，但不需要任何托管或内联策略。默认情况下，该功能处于禁用状态，必须在浏览器创建期间明确启用。你应该在执行角色中添加以下信任策略：[来源，json，subs= “verbatim，属性”]----{“版本”: “2012-10-17”，“声明”：[{“Sid”: “，“效果”：“允许”，“主体”：{“服务”：“bedrock-agentcore.amazonaws.com”}，“操作”：“stsBedrockAgentCoreBuiltInTools:”，“条件”：{” “: {“aws: “: “: “111122223333”}，”: {“awsStringEquals: “: “arn: aws: AssumeRole bedrock-agentcore: us-east-1:111122223333: \*”}}}----SourceAccount ArnLike SourceArn

## 支持的机器人控制供应商
<a name="browser-web-bot-auth-supported-vendors"></a>

亚马逊 Bedrock AgentCore 目前支持以下机器人控制供应商的网络机器人身份验证：
+  **Cloudflare** 
+  **人类安全 ** 
+  **Akamai 科技 ** 
+  **DataDome** 
+  **F5 ** 

随着合作伙伴关系的建立，将为其他机器人控制供应商提供支持。身份验证是透明的-启用后，您的代理可以减少摩擦地浏览受这些服务保护的网站。

## 注意事项
<a name="browser-web-bot-auth-considerations"></a>
+  **透明操作**：启用 Web 机器人身份验证后会自动运行。无需在代理应用程序中进行其他代码更改。
+  **性能影响**：对请求进行签名将 HTTP 请求的延迟降至最低。
+  **供应商覆盖范围**：该功能仅适用于使用支持的机器人控制供应商的网站。使用其他反机器人解决方案的网站可能仍会带来挑战。
+  **取决于政策**：即使使用身份验证，网站所有者也可以控制他们的机器人政策。某些站点仍可能根据其特定要求限制或监控代理流量。