最近很火的京东、天猫超市飞天茅台抢购是怎么回事,从原理流程给你们分析一波
@[TOC]
原文地址:
最近很火的京东、天猫超市飞天茅台抢购是怎么回事,从原理流程给你们分析一波
本文数据都没有证据支撑,皆为作者遐想。如有雷同,均为巧合。
京东茅台介绍
最近茅台抢购突然就火了,莫名其妙。
而最初的京东脚本抢购作者,留下一句,一个被京东警告截图,便销声匿迹。
但是他掀起的波澜还在继续。那7k份在github上fork的代码,将生生不息的fork下去
在一个月前,京东飞天茅台抢购,其实没几个人知道,每天的预约在10来万,那时候用脚本的都是黄牛,普通人基本没有脚本可用。
那么后来呢,大概也就是10天以前吧,脚本火起来了。
然后一直到现在,京东的预约抢购茅台人数一直在暴增。现在一天有百万人+预约抢购。
但我猜哈,放的量估计是不会增多的。
所以这也是为什么,现在很多朋友说越来越难抢购了。毕竟分母增加了10倍。
另外一方面呢,京东铁定是改动了eid和fp的一些规则,普通商品不知道。但是茅台这个商品,正常情况下获取eid和fp已经是不行了。
那么我们分析一下,京东从最近这一个月的预约来看,赚了多少呢
为什么这么说,因为京东还是挺贼的,需要开通京东Plus会员才能抢购,那么现在,开通Plus会员的价格是多少。我现在看了一下,年卡是149一年,保守一点估算,假设这个脚本未京东带来了100万的购买人数,那么这一个月,京东通过Plus新增获利:1亿4900万。我想,这其中,其实有原来作者的一半功劳。
所以还是那句话,你可能血赚,我永远都不会亏。
另外,你不要觉得京东1499卖一瓶茅台,京东补贴了多少。这个还真不一定,这个要看京东到底和茅台是咋合作的了。
天猫茅台介绍
天猫超市可以抢购茅台,我开始是不知道的,也是在后面经过一些粉丝的提醒说天猫超市也可以抢购。
于是就去了解了一下。发现,还是天猫良心,没有门槛,人人都可以抢购。完全拼手速。
什么信用分高的才能抢到,信用分低的直接风控,目前看来,淘宝没有做这种落人话柄的事情。
人人平等,没啥好说的。大家拼手速。
现在呢,我讲讲背后的原理。当然,我是猜测京东和天猫的抢购实现方案。具体怎么实现的,我不知道,但是根据这份方案,可以实现类似的一个功能。
京东抢购流程
简单明了的流程图
首先来说说京东的吧。
画个简单的流程图:
null和90008
在流程图中,充分展示了为什么有的人会返回null,有的人会是90008,有的是90016。当然,这是我的猜测,具体情况如何,还得问京东的开发人员。
虽然这样的抢购挺不公平的。但是对于京东来说,或者说对于服务器压力,还是其他资本原因来说,都是一个很不错的选择。
为啥这么说。
服务器压力部分
首先说一下压力的原因。大家应该知道,当并发越大,对于服务器,对于技术人员的挑战来说,那是更大的。服务器的成本也会越高。
而京东很聪明,返回null,和返回90008,这里会筛选掉很多的并发请求。从而可以释放出多余的服务器压力来处理正常的业务。
而且,我觉得对于现在这个剧增的一个预约和并发,京东服务器能支撑的一个原因,也是因为过滤了很多请求。为什么,因为很多人明显感觉返回null的情况非常多非常多。很有可能是因为服务器无法撑起如此大的并发,直接在前端服务器进行丢弃了一些请求。或者说,没有任何运算,直接判断小白信用分,或者搞一个随机数,直接在后端返回,也是有可能的哈。
通俗易懂的锁
另外说说返回90016的情况。可能有些朋友不理解锁,我在这里就不长篇大论了。就简单的说一下。
可以理解抢购是要进一个门,而这个门内有两瓶茅台,现在好了。门上挂着一个锁,而锁有一个钥匙,有且仅有一个钥匙。本来有100个大汉的,虽然门卫赶走了90个大汉,但是还有10个大汉同时来到了门前,这个时候怎么办,那还能怎么办,谁的手先拿到钥匙,那么谁就拥有了进入门内的资格。
所以呢,另外9个大汉,只能拿着90016的数字进行一个返回。而那一个大汉,恭喜,拿着钥匙进入了大门,扛走了茅台。
其他原因
至于资本原因。
你用我的京东,你的小白信用分高,那么我给你点特权,看着很合理嘛。
至于刚开Plus会员的朋友,小白信用分不会高到哪去。所以基本上属于给京东送钱系列。
京东就想着你开会员,然后后续进行一些消费,努力提高自己的小白信用分。
至于这个点子有没有用,我就不继续说下去了。懂的都懂。
天猫抢购流程
天猫的风控非常牛批,这个我是认的。
无论你是用爬虫脚本还是其他的驱动脚本。大概率都会被天猫给识别出来。
后面我想了种方式,就是自己打开浏览器,然后利用屏幕像素,以及元素定位进行点击屏幕坐标。这种方式确实可行。但是其实不比手点快多少。而且测量麻烦。就暂时没去弄了。
简单明了的流程图
好了,来看看天猫的流程图,这个其实简单很多。
那么,这里的抢购方式,明显比京东简单了很多,而且厚道了很多,但是原理上,在这里我没写锁的方式。而是通过令牌的方式。
当然了,锁也好,令牌也罢,都只是其中的一种实现方式,具体采用哪种,还是只有开发的员工知道了,不扯远了。继续看图。
令牌的方式抢购茅台
那么这个令牌,怎么说呢,想必学过编程的朋友,心理已经有了数。库存固定,那很好办嘛。准备一个桶,把100瓶茅台放进去(假设是100瓶),那么人来了,怎么给了。
那就更简单了嘛,来一个人,那个人就取一瓶,取完就走。然后有人问,同时有几个人伸手拿茅台怎么办,这个嘛,我们准备一个通道,通道旁边放一个桶,茅台在桶里。
那么就不会出现同时来两个人或者多个人伸手到桶里拿茅台的情况了。要说这通道是啥,就说一个就行了,用Redis可以轻轻松松的实现了。另外,加锁也行的嘛。一次只让拿到锁的手伸进桶去。
为什么天猫的要公平一些
当然,具体的实现我是不知道的,我是从表面分析的哈。
天猫没有京东的小白信用分卡点,也没有一些其他概率性null的情况。天猫的朋友都在一个起跑线上,比拼网速,比拼手速。这就是我认为为什么天猫要公平一些。
因为天猫是先到先得。而不是类似京东,你先到了,我看看你的信用分,什么,信用分80,辣鸡,给你返回90008/null,下一个。
最后
也不知道这篇文章我有没有说清楚一些抢购的点,包括这个京东和天猫的大致流程。对于不懂技术的朋友来说,如果你们都能通过我的注释和图解看懂这个流程图了,那么说明我这篇文章是还可以的。
最近10几天,因为脚本,我有很多地方改变了很多。以前我总想着,技术这东西,越深奥越牛批。
但现在,我不这么想,我想的是,懂技术的人终究都是少数,大多数的朋友都是不懂技术。
既然你是分享,你是写文章的,为什么不去考虑这绝大多数的人。我想我现在想明白了,以后的教程文章,我会尽量写的通俗易懂一些。为什么我不用一些例子随着一些技术名词一块讲解呢。
如果您觉得您看懂了这篇文章,希望您能给点支持,我的公众号需要您的关注。感谢关注我的每一个朋友。
另外,下面这两篇文章,想研究学习的朋友可以去看看