View a markdown version of this page

使用 Web Bot Auth 减少验证码 - Amazon Bedrock AgentCore
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)。

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

使用 Web Bot Auth 减少验证码

注意

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

+ 当前的实现:

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

+ 有关最新的协议规范,请参阅 IETF 草案。

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

概述

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

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

Web Bot Auth 通过实现 IETF 自动流量的 HTTP 消息签名架构草案协议来应对这一挑战。该协议允许 AI 代理对其 HTTP 请求进行加密签名,为网站提供可验证的代理身份证明。

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

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

工作原理

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

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

  2. 请求签名:启用后,浏览器工具会自动使用私钥对每个 HTTP 请求进行签名

  3. 签名标头:向每个请求添加三个标头:

    • Signature: 加密签名

    • Signature-Agent: 指向公钥目录进行验证

    • Signature-Input: 指定哪些组件已签名

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

  5. 政策应用:根据经过验证的身份,网站可以应用适当的政策。域名所有者可以将其机器人控制系统配置为:

    • 阻止所有流量:无论身份验证如何,都拒绝所有自动请求

    • 仅允许签名机器人:仅接受来自具有有效 Web Bot Auth 签名的经过验证的代理的请求

    • 允许来自特定目录的签名机器人:允许经过身份验证的代理仅访问网站上的特定路径或资源

启用 Web 机器人身份验证

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

例
Amazon CLI
  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}'
Boto3
  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 } )
Console
  1. ===== 在控制台中启用 Web 机器人身份验证

  2. 在 https://console.aws.amazon.com/bedrock-agentcore/home # 处打开 AgentCore 控制台。

  3. 在导航窗格中,选择Built-in 工具。

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

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

  6. 在 “网络设置” 下,选择 “公共网络” 。

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

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

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

重要

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

支持的机器人控制供应商

亚马逊 Bedrock AgentCore 目前支持以下机器人控制供应商的网络机器人身份验证:

  • Cloudflare

  • 人类安全

  • Akamai 科技

  • DataDome

  • F5

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

注意事项

  • 透明操作:启用 Web 机器人身份验证后会自动运行。无需在代理应用程序中进行其他代码更改。

  • 性能影响:对请求进行签名将 HTTP 请求的延迟降至最低。

  • 供应商覆盖范围:该功能仅适用于使用支持的机器人控制供应商的网站。使用其他反机器人解决方案的网站可能仍会带来挑战。

  • 取决于政策:即使使用身份验证,网站所有者也可以控制他们的机器人政策。某些站点仍可能根据其特定要求限制或监控代理流量。