第 131 题:接口如何防刷?
去了京东、腾讯、虾皮等厂子都问到了这个问题。我们之前也遇到过,基本就是后端工程师限制用户的接口调用次数,面试官希望可以有更多的答案。
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
去了京东、腾讯、虾皮等厂子都问到了这个问题。我们之前也遇到过,基本就是后端工程师限制用户的接口调用次数,面试官希望可以有更多的答案。
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
接受
或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
发布评论
评论(17)
反爬虫
@impeiran 不限制频率还是没用啊
接口防刷,前端能做的很少吧。
刷接口那肯定不是通过DOM刷,那效率太低了。
我能想到的前端能做的优化无非就是防抖、节流这些
刷是禁止不了的,只能提高刷的成本
前端:
后端:
前端可以使用节流的方式,添加时间戳等
前端如使用axios请求, 是有请求前拦截的, 把最近的一些请求地址加进数组, 请求前拦截器 判断一定时间内这个地址是否再出现 来控制请求频率
例如,公开的投票网站,,如何防止刷票,防止不了。真的没办法。
前端节流对防刷意义不大,刷接口肯定不是通过点页面的按钮这种方式来刷的。
1、校验请求头referer
2、校验请求token;
3、请求频率
1、UA校验
2、IP限制
3、验证码
参考:
https://www.zhihu.com/question/34980963
刷接口直接走脚本,前端限制有一定作用,但不大。
IP
限制调用次数【请求在代理服务器被拦截nginx
,减少后端服务被调用】;token
【后端服务器拦截器,减少业务判断和处理】;是否可以用参数签名?
前端埋点,判断是否用户行为
1:网关控制流量洪峰,对在一个时间段内出现流量异常,可以拒绝请求(参考个人博客文章 https://mp.csdn.net/postedit/81672222)
2:源
ip
请求个数限制。对请求来源的ip
请求个数做限制3:
http
请求头信息校验;(例如host
,User-Agent
,Referer
)4:对用户唯一身份uid进行限制和校验。例如基本的长度,组合方式,甚至有效性进行判断。或者uid具有一定的时效性
5:前后端协议采用二进制方式进行交互或者协议采用签名机制
6:人机验证,验证码,短信验证码,滑动图片形式,12306形式
————————————————
版权声明:本文为CSDN博主「timy07」的原创文章,遵循CC 4.0 by-sa版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/timy07/article/details/86467994
防刷一般分两种:
把某个key加配料,带上时间戳,加密,请求时带上,过期或解密失败则403。