2、访问频率概念:频率定义、正常访问模式、突发流量与恶意爬取的区别
2.1 频率到底是个什么东西?
我经常跟团队里刚入行的同学说,频率这个词听起来高大上,说白了就是“单位时间内发生了多少次”。放在Secrets访问场景里,就是每秒/每分钟/每小时,你的密钥被拉了多少回。
举个例子。你有个,用来调用内部支付接口。正常情况下,每秒钟调用一两次,顶多三五次。突然有一天,你发现它每秒被调了2000次——那肯定出事了。
但这里有个坑——时间窗口选多长?我踩过雷。选太短(比如1秒),稍微一次抖动就报警,值班同学半夜爬起来发现只是重试。选太长(比如1小时),攻击者早就把密钥薅光了。我个人习惯:短窗口用于检测突增,长窗口用于识别慢速爬取。后面会细说。
2.2 正常访问模式长什么样?
要检测异常,你先得知道什么是正常。每个系统的访问模式都不一样,但有几个共性的特征。
- 周期性:比如每天上午10点业务高峰期,调用量会自然上涨;凌晨四五点跌到谷底。这是业务规律。
- 稳定性:同一个密钥,在相同时间窗口内,调用量波动通常不会超过±20%。除非搞了大促。
- 关联性:Secrets的调用往往跟业务请求绑定。如果某个密钥只处理订单查询,那它就不会突然跑去调用数据删除接口。
我记得有个电商客户,他们有个Secrets专门给物流查询用。正常模式是每分钟50~80次,周末稍低。某天突然飙到每分钟3000次,查日志发现是他们自己的运维脚本写死了循环——还好不是攻击。这就说明,光看频率还不够,得结合上下文。
2.3 突发流量很正常,别见风就是雨
什么叫突发流量?就是短期内请求量快速拉升,但很快又回落,而且源头是可信的。比如秒杀活动刚刚开始,或者支付回调集中到达。
突发流量和恶意爬取最大的区别在于行为模式,不是单纯看数字。给你看个表,这是我做攻防演练时整理的对比。
| 对比维度 | 突发流量 | 恶意爬取 |
|---|---|---|
| 发起源头 | 有限的业务IP/服务,通常是内网或固定白名单 | 大量分散IP,常来自住宅代理或云节点 |
| 请求模式 | 集中在同一类接口,参数有业务含义 | 遍历式请求,尝试各种路径或枚举参数 |
| 时间特征 | 与业务事件强相关(如开售、出报表) | 随机或均匀,有时特意选择凌晨静默期 |
| 频率变化 | 陡升陡降,持续几分钟到几十分钟 | 缓慢爬坡,尝试绕过频率阈值 |
| Secrets使用 | 使用正确的Secrets,调用合法 | 可能盗用或猜测Secrets,调用非法接口 |
你看,光把“请求量高”当成恶意,你会被业务方骂死。2019年我帮一个视频平台做检测,他们有个热门综艺开播,瞬间Secrets调用暴涨30倍。幸亏我们提前知道排期,直接把阈值抬高了——不然那个夜没人能睡。
2.4 恶意爬取的典型特征
恶意爬取,说白了就是想白嫖你的数据。它不是单纯的频率高,而是有“坏心眼”。
有哪些特征?我给你列几条实战中见得最多的。
- 频率呈周期波动但逐渐升高:攻击者会试探你的限流阈值,比如先跑100次/分钟,没被封就提到200,再提到500。这种“爬楼梯”式增长,人工业务很少出现。
- 请求间隔极其均匀:正常人的操作总有停顿,爬虫的间隔可以精确到毫秒级。我见过一个爬虫,每0.5秒发一次请求,简直像节拍器。
- Secrets轮换行为异常:如果多个密钥在短时间内被交替使用,而且来源IP不同,大概率是在轮换密钥绕检测。
- 低频慢爬更难搞:有些攻击者很聪明,把频率降到每小时几十次,比正常用户还低。他们可能只盯着你最新的几个Secrets反复试。这时候单纯看频率没用,得结合Secrets的使用周期和上下文。
2.5 一张图理清知识框架
下面的SVG图我把这一章的核心概念串了一遍。你看一眼应该就能记住:频率定义、正常模式、突发流量、恶意爬取,以及它们之间的判断路径。
2.6 判断频率异常的几个实战技巧
说了这么多理论,讲讲实在的。怎么快速判断一个频率波动是正常还是恶意?我一般走这个步骤。
- 先看来源IP:是不是已知的内部服务?是不是CDN回源?如果是,大概率是正常的。
- 再看请求参数:参数里有没有明显的遍历特征?比如Secrets ID从1到9999挨个试?有的话,直接拉黑。
- 然后看频率曲线:是不是平滑上升又平滑下降?还是像锯齿一样忽高忽低?后者更像爬虫在试探。
- 最后看Secrets本身:这个密钥之前的使用记录怎么样?有没有在多地同时被调用?我见过一个密钥同时在美东和美西被调用,时差都不考虑——明显是盗用的。