View a markdown version of this page

使用 Web Bot Auth 减少验证码 - 亚马逊基岩 AgentCore

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

使用 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 机器人身份验证,您需要在创建浏览器工具时对其进行配置:

例
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 机器人身份验证

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

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

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

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

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

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

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

  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 请求的延迟降至最低。

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

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