专栏名称: 51CTO技术栈
有趣 | 有料 | 有内涵,为您提供最优质的内容,愿我们一起悦享技术,成就人生。
目录
相关文章推荐
程序员小灰  ·  又一个职业要被AI淘汰了! ·  昨天  
OSC开源社区  ·  「AI 为伍 重启征程」2024 OSC ... ·  3 天前  
OSC开源社区  ·  最强开源终端模拟器Ghostty正式发布1. ... ·  4 天前  
51好读  ›  专栏  ›  51CTO技术栈

自动“抢茅台”脚本,太香了!

51CTO技术栈  · 公众号  · 程序员  · 2021-01-15 18:05

正文

送福利啦

关注鸿蒙技术社区,回复【鸿蒙】价值399元的鸿蒙开发板套件(数量有限,先到先得),还可以免费下载鸿蒙入门资料!回复【茅台】有惊喜哦!


👇扫码立刻关注👇

专注开源技术,共建鸿蒙生态


最近很火的京东、天猫超市飞天茅台抢购是怎么回事,今天我从原理流程给你们分析一波。(PS:本文数据都没有证据支撑,皆为作者遐想。如有雷同,均为巧合)


京东茅台介绍


最近茅台抢购突然就火了,莫名其妙。而最初的京东脚本抢购作者,留下一句,一个被京东警告截图,便销声匿迹。


但是他掀起的波澜还在继续。那 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,下一个。


最后


也不知道这篇文章我有没有说清楚一些抢购的点,包括这个京东和天猫的大致流程。


对于不懂技术的朋友来说,如果你们都能通过我的注释和图解看懂这个流程图了,那么说明我这篇文章是还可以的。


关注下方公众号,回复「茅台」下载脚本

👇👇👇

作者:谙忆1024

编辑:陶家龙

出处:juejin.cn/post/6917615419327004680

精彩文章推荐:

有人靠"抢茅台"月入百万,脚本曝光,开源可用!
转手赚1000,开源抢茅台神器,真香!
飞天茅台超卖事故:Redis分布式锁请慎用!