View a markdown version of this page

使用 Web Bot 身份验证减少验证码 - Amazon Bedrock AgentCore

使用 Web Bot 身份验证减少验证码

注意

Amazon B AgentCore rowser Web Browser Web Bot 身份验证(预览版)基于 IETF 网络机器人身份验证协议草案,该协议可能会随着规范接近最终确定而发生变化。

+ 当前实现:

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

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

Amazon Bed AgentCore rock Browser 通过 Web Bot Auth 减少了 CAPTCHA 挑战,Web Bot Auth 是一项 IETF 协议草案,可通过加密方式向网站和机器人控制供应商识别人工智能代理。

概述

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

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

Web Bot Auth 通过实施用于自动流量的 IETF HTTP 消息签名架构草案协议来解决这一难题。该协议使 AI 代理能够对其 HTTP 请求进行加密签名,从而为网站提供代理身份的可验证证明。

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

这种方法为合法的自动化提供了一种标准化的方法,既可以识别自己的身份,又可以保持网站所有者对访问策略的控制。

工作原理

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

  1. 代理注册:亚马逊 Bedrock AgentCore 向机器人控制供应商(Cloudflare、reCaptcha 等)注册,并提供用于验证的公钥

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

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

    • Signature: 加密签名

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

    • Signature-Input: 指定对哪些组件进行了签名

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

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

    • 屏蔽所有流量:无论身份验证如何,均拒绝所有自动请求

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

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

启用 Web 机器人身份验证

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

AWS CLI
  1. 要使用 AWS 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 Bot 身份验证

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

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

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

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

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

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

  8. 在 “权限” 下,指定一个 IAM 执行角色,该角色定义浏览器工具可以访问哪些 AWS 资源。

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

重要

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

支持的机器人控制供应商

Amazon Bedrock AgentCore 目前支持以下机器人控制供应商的 Web 机器人身份验证:

  • Cloudflare

  • 人类安全

  • Akamai 科技

  • DataDome

  • F5

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

注意事项

  • 透明操作:Web Bot 身份验证一旦启用,就会自动运行。无需在代理应用程序中进行其他代码更改。

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

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

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