保护免受机器人攻击需要深入分析客户端环境,而不仅仅依赖于请求的网络级特征,如 TCP 或 HTTP 负载签名。AWS WAF 利用 CAPTCHA 和 Challenge 动作,与客户端进行互动,以了解其环境,从而决定是否允许该请求进入。Challenge动作要求客户端(浏览器或移动设备)在继续之前解决一个问题,而 CAPTCHA 则在用户的浏览器上呈现需要人类解决的难题。
这些动作补充了允许、计数和阻止的功能,提供了请求客户端环境的额外可见性,从而便于识别和管理机器人流量,同时最小化对合法用户的影响。
本文将介绍 Challenge 和 CAPTCHA 动作的工作原理,以及如何使用它们减轻特定的机器人威胁。
Challenge 和 CAPTCHA 动作涉及浏览器或移动设备的互动过程,包括三个阶段:
此互动可以通过以下两种方式进行处理:
接下来,我们将说明 Challenge 和 CAPTCHA 动作如何与最终用户和客户端进行互动。
Challenge动作在客户端环境中执行一个静默挑战,不需要用户交互,对用户体验没有明显影响。挑战要求客户端完成一个计算密集型任务(工作证明)。此方法旨在为合法用户提供一种顺畅的机制,以验证他们的环境,同时增加机器人运营者与您的应用程序交互的成本。
Challenge 动作默认以 JavaScript 挑战负载响应 HTML 请求( Accept: text/html ),无声地完成挑战。然后,用户将自动重定向回原始页面,并带有允许他们的请求通过后续需要 Challenge 的规则的 Token。下面的图 1说明了该互动的工作流程。

Jess Izen 是 AWS WAF 的高级软件开发工程师,负责构建 Bot Control 和 Fraud Control等产品。她喜欢处理对性能敏感的,高度并发的 Rust 服务,以及涉及 Kafka 和 Redis/Valkey等技术的分布式系统。在业余时间,她骑自行车并参加业余泰拳比赛。您可以在 [LinkedIn](https://
Leave a Reply