小米手机抢购经验之排队算法深度探析

 时间:2020-09-12  贡献者:shoujiok.com

导读:[小米抢购软件]小米手机抢购经验之排队算法深度探析,《小米手机抢购经验之排队算法深度探析》小米手机凭着傲人的性价比,供不应求。每一次开放购买,都引 得百万人抢购。粥少僧多,大部分米粉都抱着希望而来,失望懊恼而 去。

[小米抢购软件]小米手机抢购经验之排队算法深度探析
[小米抢购软件]小米手机抢购经验之排队算法深度探析

《小米手机抢购经验之排队算法深度探析》小米手机凭着傲人的性价比,供不应求。

每一次开放购买,都引 得百万人抢购。

粥少僧多,大部分米粉都抱着希望而来,失望懊恼而 去。

由于小米公司并没有公布过实际的抢购规则, 采取这种黑盒方式, 筷子哥只能就多次的抢购经历,结合相关数据,凭着多年的网络编程 的经验来分析一下小米手机抢购的算法。

一、 抢购方式 通常的抢购方式有秒杀、抢楼、抽奖等方式。

很显然,小米并没有采取抢楼的方式(小米论坛中倒经常采取抢 楼的方式发放 F 码) 。

也不是秒杀方式 (秒杀会在活动起几秒钟内 结束所有抢购,大家抢过天猫的都知道) ,那么,小米的抢购方式 是不是抽奖呢?我们先摆出下列基于经验的事实来慢慢分析。

1、 小米的抢购并不决定于点击 抢购手机的时间。

小米 3 的第 二次抢购中,有一个朋友在 12:26 抢到了米 3。

似乎他“注 定”要得到这部米 3。

相信大家不会认为这 26 分钟内没人 比他早点击进入抢购吧。

2、 小米的 3 点剩余专场, 并不是所有人都可以进入抢购。

而是 有一部分没抢到手机的预约号会收到一个手机短信, 没收到 短信的人根本看不到抢购页面。

3、 开始抢购后,有些人几秒钟能看到选择机型 有些人需要数 分钟甚至更长时间。

而有些人根本从头到尾就在排队, 点击 着进入活动(19 号开始不需要点击进入活动) 。

4、每个入场的 URL 都是一致的 (每次活动不同) 红米的第二 。

次抢购,这个 URL 甚至可以直接请求入场(选择机型) ,但 之后就再也不行了,这个改动直接导致一大批基于 post 的 抢米软件失效。

5、有过传闻一个神秘的 URL 可以看到你的小米账号是否已经 内定了抢购成功的权限。

具体地址我就不说了。

但根据我的 实际测试, 这个 url 的记录显然是已结束的一季抢购的数据。

但下季这个 url 获得的值会不会早于抢购开始的时间开始刷 新,目前不得而知。

即使真的稍早一点出现,由于时间过于 紧迫,来不及做账号的筛选操作,实际意义也不是很大。

但 这个信息对于我们的分析有很大帮助。

6、小米论坛的 VIP 验证中有关于 VIP 账户优先抢购的信息说 明。

但实际抢购中常常有非 VIP 用户抢到手机,VIP 账户空 手而归的经验。

7、同样的,被官方吹捧为“传说中的抢机神器” (软件封面) 的小米商城 APP, 虽然大部分人都认同更容易抢到, 但也同 样并不是一抢一个准。

根据上面的资料,我们提出如下猜想: 1、 每个账户能不能抢到手机的确事先已经确定了的。

就是所谓 的入场权限事先确定。

2、 入场权限分配的数目大于手机总台数,但远远小于预约数。

所以大部分人是从头到尾看着排队结束的。

3、服务端已经做了识别和限制,直接 post 数据是无法改变你 的入场权限的, 确定了你不能进选择机型的页面, 你复制了 链接递交也没用。

用这个原理的抢机软件全部歇菜, 不要想 了。

除了小米公司内部流出的软件单 (内部员工留的后门) , 其他的宣称利用 http 协议刷单的软件都是假的。

4、VIP 认证和小米商城 APP 对提高入场几率有帮助,但并不 是百分百一定抢到。

5、有了入场资格并不一定就一定看到机型选择, 看到机型选择 未必一定抢购, 但没有入场资格一定看不到机型选择, 更别 谈抢到手机了。

6、拥有入场资格后, 什么时候显示选择机型给你, 是一个随机 值,此值可能和账号与访问客户端的信息有关系。

举个例子帮大家加深理解: 假设一共有 10 台手机发放购买,1000 人预约。

事实上从抢购开始(12:00)前,小米服务器内部已经分配好了 50 个入场权限。

也就是说 剩下的 1000-50=950 人 都只是陪练。

他 们根本不可能进入选择机型输入验证码的页面。

接受这个事实吧, 小米公司就是这么干的。

也就是说,无论如何,能抢到这 10 台小米的只会在这 50 个小米 账号中产生。

换句话来说此 50 人拥有“入场资格” 。

到了抢购时间,这 50 人会陆续入场,选择机型、填写验证码。

早 看到的早输入,就更容易抢到。

前 10 个输入正确验证码的抢到手

机。

如何从 1000 个帐号中挑选 50 个赋予其“入场资格”呢,仍然以 例子为假设: 首先是服务器算法从小米账户方面产生一个参数,比如普通账户 (未验证 VIP) 随机从 1~50 中随机取值。

Vip0 账户随机从 10~60 中随机取数。

Vip1 账户随机从 20~70 中随机取数„以此类推。

赋值给参数 A。

然后从抢购前最后的登录时用的客户端方面产生一个参数,比如 普通浏览器从 1~60 中随机取数,小米商城 app 从 40~100 中取 数。

赋值给参数 B。

然后让 A,B 两个值相加或经过某个公式计算得出结果 C。

然后按 C 值的大小排序,前 50 个账号获得入场资格。

获得入场资格的 50 个账号,在通过 A、B 两值(可能还有其他未 知的值参与)运算得出结果 D。

这个 D 就是从开始抢购到你入场 的延时值。

就这么简单。

有些朋友要问了,那为什么我们经常遇到普通账户获得了入场资 格,而 VIP 却没有,用电脑浏览器获得了入场资格,而手机 APP 却没有呢? 答案也很简单,因为运气。

虽然是普通帐号,从 1-50 中随机取值,也可能抽到 39、42、48 这样的相对大数值。

 
 

微信扫一扫 送福利