← 中文资源

简体中文版本

对疑似滥用发起挑战而非直接封禁

当流量看似自动化时返回轻量挑战或要求更强证明,而非硬封禁,免得真实用户被误伤。

阅读英文原文

概述

硬封 IP 能挡住攻击,也会连带封掉共享出口下的真实用户,而机器人可轮换地址。分层响应把“一律封禁”换成按可疑度递增的证明要求,让成本落在发起方身上。

关键步骤

  1. 按速率、User-Agent、行为等信号为请求打分。
  2. 中等分数返回真实用户可无感通过的挑战。
  3. 高分数要求认证或对该身份临时限流。
  4. 记录并复核挑战,用数据调整阈值。

验证

  • 合法用户可通过挑战继续访问。
  • 高可疑流量被降速或要求更强证明。
  • 误伤率可度量且在阈值调整前有基线。
  • 不再对整段 IP 做无差别封禁。

注意事项

  • 挑战增加延迟与复杂度,且无法完全抵挡有决心的自动化。
  • 阈值过激时对合法用户的伤害大于能轮换的攻击者。

适用范围

本条目围绕「对疑似滥用发起挑战而非直接封禁」给出可复制的步骤、验证方式与常见问题,适合需要按此流程落地的工程团队。执行时请结合自身上下文调整命令与阈值,并在变更前后留存证据,便于后续复核与回滚。

const score = await scoreRequest(req);
if (score > HARD) return requireAuth(res);
if (score > SOFT) return issueChallenge(res);
return next();