服务器高并发(二)

2、作弊的常见手段 秒杀和抢购收到了海量的请求,实际上水分是很大的。不少用户为了抢到商品,会使用刷票软件等类型的辅助工具,所以就会发送尽可能多的请求到服务器。还有一部分用户,自己制作强大的自动请求脚本,这些都是属...

 2、作弊的常见手段

002UASMrzy7605pjKJv15&690.jpg

 
秒杀和抢购收到了海量的请求,实际上水分是很大的。不少用户为了抢到商品,会使用刷票软件等类型的辅助工具,所以就会发送尽可能多的请求到服务器。还有一部分用户,自己制作强大的自动请求脚本,这些都是属于“作弊的手段”,不过有“进攻”就有“防守”。
 
2.1 、同一个账号,一次性发出多个请求
 
部分用户通过浏览器的插件或者其他工具,在秒杀开始的时间里,以自己的账号一次发送上百甚至更多的请求。这样的用户破坏了秒杀和抢购的公平性,这种请求在某些没有做数据安全处理的系统里,也可能造成另外一种破坏,导致某些判断条件被绕过。如一个简单的领取逻辑,先判断用户是否有参与记录,如果没有则领取成功,最后写入到参与记录中。这是个非常简单的逻辑,但是在高并发的场景下,存在深深的漏洞,多个并发请求通过负载均衡服务器,分配到内网的多台Web服务器,它们先向存储发送查询请求,然后在某个请求成功写入参与记录的时间差内,其他的请求获查询到的结果都是“没有参与记录”。这就存在逻辑判断被绕过的风险。
 
应对方案:在程序入口处,一个账号只允许接受1个请求,其他请求过滤,不仅解决了同一个账号发送N个请求的问题,还保证了后续的逻辑流程的安全。
 
2.2、多个账号,一次性发送多个请求
 
账号注册功能在发展早期几乎是没有限制的,很容易就可以注册很多个账号。因此也导致了出现了一些特殊的工作室,通过编写自动注册脚本,积累了一大批“僵尸账号”,数量庞大,几万甚至几十万的账号不等,专门做各种刷行为(这就是传说中的“僵尸粉“)。比如有转发抽奖的活动,如果使用几万个“僵尸号”去混进去转发,这样就可以大大提升中奖的概率,使用在秒杀和抢购也是同一个道理,比如iPhone官网的抢购,火车票黄牛党也是如此。
 
应对方案:这种场景可以通过检测指定机器IP请求频率就可以解决,如果发现某个IP请求频率很高,可以给它弹出一个验证码或者直接禁止它的请求:弹出验证码,目的就是分辨出真实用户。网站弹出的验证码,都是随机的样子,有时无法看清,这样做的原因,其实也是为了让验证码的图片不被轻易识别,因为强大的“自动脚本”可以通过图片识别里面的字符,然后让脚本自动填写验证码。现在有一些新方法效果会比较好,如给你一个简单问题让你回答,或者让你完成某些简单操作,这个做法简单高效、效果也很好。
 
2.3、多个账号,不同IP发送不同请求
 
有进攻,就会有防守,这些“工作室”,发现你对单机IP请求频率有控制之后,他们也针对这种场景,想出了他们的“新进攻方案”,就是不断改变IP,这些随机IP服务怎么来的,有一些是某些机构自己占据一批独立IP,然后做成一个随机代理IP的服务,有偿提供给这些“工作室”使用。还有一些就是通过木马黑掉普通用户的电脑,这个木马也不破坏用户电脑的正常运作,只做一件事情,就是转发IP包。通过这种做法黑客就拿到了大量的独立IP,然后搭建为随机IP服务,赚了很多黑心钱。
 
应对方案: 这种情况通常只能通过设置业务门槛高来限制这种请求了,或者通过账号行为的”数据挖掘“来提前清理掉它们。僵尸账号也还是有一些共同特征的,例如账号很可能属于同一个号码段甚至是连号的,活跃度不高,等级低,资料不全等等。根据这些特点,适当设置参与门槛,例如限制参与秒杀的账号等级。通过这些业务手段,也是可以过滤掉一些僵尸号。
 
2.4、火车票的抢购
 
看到这里,你是否明白为什么抢不到火车票,如果你只是老老实实地去抢票,真的很难。通过多账号的方式黄牛将很多车票的名额占据,部分牛逼的黄牛在处理验证码方面更是“技高一筹“,高级的黄牛刷票时,在识别验证码的时候使用真实的人,中间搭建一个展示验证码图片的中转软件服务,真人浏览图片并填写下真实验证码,返回给中转软件。对于这种方式,验证码的保护限制作用被废除了,目前也没有很好的解决方案。因为火车票是根据身份证实名制的,除比之外还有一个火车票的转让操作方式,就是先用买家的身份证开启一个抢票工具,持续发送请求,黄牛账号选择退票,然后黄牛买家成功通过自己的身份证购票成功,因为黄牛们的抢票工具也很强大,即使让我们看见有退票,我们也抢不过他们,最终黄牛顺利将火车票转移到买家的身份证下。
 
什么是服务器的高并发?解决方案:并没有很好的解决方案,唯一可以动心思的也许是对账号数据进行“数据挖掘”,这些黄牛账号也是有一些共同特征的,例如经常抢票和退票,节假日异常活跃等等。将它们分析出来,再做进一步处理和甄别。
 

免责声明:本文内容由互联网用户自发贡献自行上传,本网站不拥有所有权,也不承认相关法律责任。如果您发现本社区中有涉嫌抄袭的内容,请发送邮件至:operations@xinnet.com进行举报,并提供相关证据,一经查实,本站将立刻删除涉嫌侵权内容。

免费咨询获取折扣