防滥用机制

那天创建量暴增 10 倍

一个普通的周二上午,我打开监控面板,差点从椅子上跳起来。

⚠️ 异常告警
- 当前 QPS:3,500(正常约 300)
- 今日新建链接:52,317 条(日均约 5,000 条)
- 服务器 CPU:89%

我查了一下创建日志——一个用户,过去 1 小时内,创建了 50,000 条短链接。全部指向同一个垃圾营销网站。

“这不是正常使用,这是在薅我的资源。“


行为分析

正常用户 vs 滥用者

我花了半天时间,对比了正常用户和滥用者的行为模式。

落地思路

  • 这里省略具体语法,只保留设计层面的职责边界。
  • 读这段时重点看:输入是什么、系统做哪些判断、状态如何变化、失败时如何兜底。

分析结果

指标正常用户滥用者
24h 创建量5-50 条50,000 条
域名集中度< 30%> 95%
创建间隔10-300 秒< 0.1 秒(脚本)
活跃时段工作时间凌晨 2-5 点
账户年龄30+ 天当天注册

“特征很明显:量大、集中、速度快、凌晨活跃。“


风控规则

“分析清楚后,我设计了多层风控规则。“

第一层:注册门槛

落地思路

  • 这里省略具体语法,只保留设计层面的职责边界。
  • 读这段时重点看:输入是什么、系统做哪些判断、状态如何变化、失败时如何兜底。

第二层:频率限制

落地思路

  • 这里省略具体语法,只保留设计层面的职责边界。
  • 读这段时重点看:输入是什么、系统做哪些判断、状态如何变化、失败时如何兜底。

第三层:异常检测

落地思路

  • 这里省略具体语法,只保留设计层面的职责边界。
  • 读这段时重点看:输入是什么、系统做哪些判断、状态如何变化、失败时如何兜底。

验证码系统

“对于可疑操作,我不直接拒绝,而是触发验证码。这样既防滥用,又不误伤正常用户。”

落地思路

  • 这里省略具体语法,只保留设计层面的职责边界。
  • 读这段时重点看:输入是什么、系统做哪些判断、状态如何变化、失败时如何兜底。

黑名单与封禁

三层防线

落地思路

  • 这里省略具体语法,只保留设计层面的职责边界。
  • 读这段时重点看:输入是什么、系统做哪些判断、状态如何变化、失败时如何兜底。

综合风控入口

落地思路

  • 这里省略具体语法,只保留设计层面的职责边界。
  • 读这段时重点看:输入是什么、系统做哪些判断、状态如何变化、失败时如何兜底。

在 API 中使用

落地思路

  • 这里省略具体语法,只保留设计层面的职责边界。
  • 读这段时重点看:输入是什么、系统做哪些判断、状态如何变化、失败时如何兜底。

效果

上线一周后的数据:

指标数值
总创建请求85,000
频率限制拦截12,000(14%)
验证码触发3,200(3.8%)
异常检测拦截156
账户封禁23
误判申诉2(均已解封)

“50,000 条/小时的垃圾链接降到了 0。风控系统起作用了。“


持续对抗

“风控不是一次性工程。黑产在不断进化,我也在持续优化规则。”

每周我会做一次风控复盘:

  1. 检查新出现的滥用模式
  2. 调整检测阈值
  3. 更新黑名单
  4. 评估误判率

“这是一场持续的猫鼠游戏。但至少现在,我不再是被动挨打的那一方了。”

“安全体系建立起来了。回头看这段旅程——从一台服务器到完整的系统……”