UAM(JS 挑战)与验证码 —— Dstat 对比
UAM 与验证码都是七层挑战,但在安全性与用户打扰之间的取舍不同。
UAM(JS 挑战)
- 静默 JavaScript 挑战,无需用户操作。
- 可自动拦截多数简单脚本。
- 能运行 JS 的无头浏览器可能绕过。
验证码
- 需要明确的人工交互。
- 对自动化的拦截强于纯 JS 挑战。
- 会给正常用户带来可见的打扰。
两种挑战下绕过曲线的表现
开启 UAM 后,Dstat 显示高位的入站曲线,而绕过曲线在测试开始后数秒内下降。无法执行 JavaScript 的客户端请求不会到达源站,因此计入拦截或挑战,而非绕过。
启用验证码(托管挑战)后,绕过曲线通常更低,因为通过挑战需要脚本客户端无法提供的交互。其代价体现在通过一侧:首次访问的正常用户也只在完成挑战后才会出现。
在 UAM 与验证码之间的选择
UAM 适合需要广覆盖、低打扰防护的站点:对浏览器透明、无需用户操作,并能清除多数脚本流量。其局限在于可执行 JavaScript 的无头浏览器;若开启 UAM Dstat 的绕过曲线仍持续偏高,通常正是此原因。
验证码适合绕过代价高的路径——登录、结账、开销较大的 API 调用——以及用户可接受一次性交互的场景。全站启用会提高放弃率,因此常见做法是以 UAM 为默认,在特定路径或攻击进行期间升级为验证码。
结论
UAM 适合作为透明防护的默认项;当自动化绕过流量持续偏高时,再升级到验证码。
常见问题
UAM 能拦截全部机器人吗?
不能。UAM 拦截的是无法执行 JavaScript 挑战的客户端,这覆盖了多数简单脚本。能运行 JavaScript 的无头浏览器可以通过,因此 UAM 下的绕过曲线偏低但很少为零。
验证码一定比 UAM 更强吗?
对自动化而言是:它要求脚本无法提供的交互。但面对人工辅助的攻击或验证码代解服务,验证码并非绝对可靠,且会给每位正常访客带来打扰。防护强度需与这一代价权衡。
如何在实时 Dstat 上对比两者?
在本站分别打开 Cloudflare UAM Dstat 与 Cloudflare CAPTCHA Dstat,对比各自绕过曲线与入站曲线的关系。在相近入站量下绕过占比更低者,即过滤更强。