2019独角兽企业重金招聘Python工程师标准>>>
一.接口被刷表现方式
接口被刷,一般表现为以下两种:
1、数据含有敏感词 或者 广告;
2、一分钟产生大量类似数据;
二.防刷处理步骤1:网络层拦截
通过access.log查出是否有密集的IP请求应用被刷的接口,如有则封IP 或者 限速【有效】
通过access.log分析,可以分析出如下两个截图结果:
IP1从某时间段总共请求接口6489次,占总应用访问率97.286次。
IP1每分钟请求接口的次数,10几次-20几次,甚至是20次+,这个统计结果很明显是机器刷数据了,普通网友不可能达到如此速度。
有这种情况,可采取以下两种处理方案:
方案1:通过网络层封掉IP,如果用此方案处理,则该IP不能访问该应用或者说是本公司露出的所有应用【处理方式较狠】;
方案2:对同一IP加些限制,一般表现为对IP进行限速
==>对同一IP来源同一URL进行限速
==>对同一IP来源进行限速
对IP做限速相当于是不能让如此速度快(即机器提交的速度)的提交代码,即防止机器刷数据
具体配置参数==》http://my.oschina.net/xsh1208/blog/657342
三.防刷处理步骤2:程序拦截
1、对单个用户/ip限制每分钟最多提交的次数【有效】
实现方式有多种,常用的方式是记录单次提交成功的单个用户/ip放到mc里面,然后给mc设定2分钟的缓存时间。下次该用户/ip提交数据的时候先查mc是否已过期,没过期,则不给提交;
2、对提交数据资格进行加严
例如可以post数据的权限限制为账号必须通过邮箱激活或者手机号已经被激活了等等处理
3、对敏感词/广告词/特殊字符进行过滤
分析数据可知,大部分数据含有特殊字符(例如前面截图中用横线标识出的字符),需要对该类数据进行过滤;
4、数据审核
此处可把数据提交到公司公共的审核平台给机器或者人工审核;
【根据业务需要设置,毕竟审核平台可能会拦截了大部分真实的数据,或者拦截不到需要拦截的数据】
【一般考虑发送审核平台不能实时显示数据,会采取先出后审的方式,即问题提交成功后,即显示,等到审核不通过,则会被关闭数据 ==》这块业务可优化为:特别针对被刷的接口,提交数据后,调整方案为 先审后出,即只有审核通过才能显示】
5、添加访问IP记录
如果有加IP记录,则可直接通过后台统计出批量刷数据的IP,可以在后台优先把IP禁掉了