如何优雅地实现接口防刷

如何优雅地实现接口防刷

背景

最近在学习redis,想到了之前的写的一个案例demo,实现了接口的流量防刷。主要是为了防止爬虫爬取接口,当然可以适用于那些需要进行流控的系统,shigen画了一张草图展示主要的原理和过程:

首先用户请求系统的接口,后端会有一个流控的拦截器,这里边主要是去获得请求的信息,用ip+URI作为redis的key,查询在redis中记录的次数,如果次数大于规定的单位时间的访问次数,就认为这是非法的请求了,就需要拦截了。那具体的代码该怎么设计呢》?下边是一份详细的代码案例。亮点在于:shigen使用了一个注解,支持接口的个性化设置。

代码实现自定义ReteLimit注解其实就是两个核心参数seconds max 规定了单位时间内的最大访问次数。

拦截器rateLimitIntercept注册到拦截器上这一步很重要,不然我们自定义的拦截器会不生效。

测试类测试这里主要是写了一个接口实现测试,访问的时候返回随机生成的UUID字符串。为了测试的效果明显,我在@RateLimit上配置的是10s之内只能允许2次请求。那现在开始测试吧!

测试依旧用到的是ab这个工具。

代码语言:shell复制ab -c 2 -n 10 127.0.0.1:9000/rate/test一起看看效果吧。

可以看到测试的报告,10个请求,8个失败,2个成功,数据库也存储了对应的key和value,很符合预期的效果。

页面的错误是这样的,也很符合预期。

好了,以上就是《如何优雅地实现接口防刷》的全部内容了,觉得不错的话,记得点赞 在看 分享 关注哈,这样就不会错过很多干货了。

与shigen一起,每天不一样!

更多尼泊尔内容

燃气灶电池哪个牌子好
365体育推荐

燃气灶电池哪个牌子好

🗓️ 12-26 👁️ 6783
中国民生银行
365体育亚洲官方登录

中国民生银行

🗓️ 09-13 👁️ 7666
淘宝分期付款是怎么分期?淘宝分期付款是怎么分期一期是多久
醣的解释
365体育亚洲官方登录

醣的解释

🗓️ 08-29 👁️ 5817
描写小草的诗句古诗
38365365.com打不开

描写小草的诗句古诗

🗓️ 01-10 👁️ 8318
淘宝数据魔方有啥用?淘宝数据魔方使用教程
365体育推荐

淘宝数据魔方有啥用?淘宝数据魔方使用教程

🗓️ 09-07 👁️ 1015
在excel表格怎么用除法
365体育亚洲官方登录

在excel表格怎么用除法

🗓️ 09-07 👁️ 2133
iPhone16快充需要多久?苹果16快充充满要多长时间?
365体育亚洲官方登录

iPhone16快充需要多久?苹果16快充充满要多长时间?

🗓️ 07-11 👁️ 7991
太极八法之肘劲——多角度、快速度,实在是太灵活了!
365体育亚洲官方登录

太极八法之肘劲——多角度、快速度,实在是太灵活了!

🗓️ 01-01 👁️ 6001