码农凑热闹!小米抢购手机页面前端代码分析
2013-12-09 13:35
633 查看
今天来个比较潮的,分析一下小米前端js排队代码;! 走过路过不要错过了!
话说小米手机不错,主要是miui不错。买个手机天天要抢。其实我是比讨厌这种营销。把手机价格搞的低低的,吸引注意。好长一段时间,你很难抢的到手机。 相比小米,我更喜欢魅族,虽然我用的是小米1s.以后有点闲钱,换手机买一部魅族。
下面来享受这段代码。 你想做抢购软件?抢购机器人?先看懂这代码吧!
10.15号的抢购js代码,都写到一个js文件中.里面的代码是mini版本的,查个工具把他格式化一下就可以了。
http://p.www.xiaomi.com/open/131009/mi3/buy/process.min.js
小米为了增加代码阅读的复杂性(也可能为了转义字符),把一些变量定义成一个数组,而且这个数组用16进制表示。
做过白帽子的,应该很熟悉。用16进制表示字符找出很多xss漏洞,sql注入漏洞吧。可以自己写(其实alert或console.info
16进制就可以得到字符串)或找个工具转成字符串,增加代码的可读写性。
好了,下面就来分析代码了。
以10.15的抢购代码为例
为了阅读性我们两成两段,一个是他的数组变量_$,另一段是就是其它代码
_$ 变量太长了,我贴一点点,不完整!
View Code
这段代码只是抢购js的前端排队代码,真正的排除代码当然是放在后台的服务器上了。也就是说,你完全知道这段代码,对你抢购也没太大的帮助。如果排队没成功(json.status.allow=false),直接访问购买的页面,服务端会让你跳转到排队页面。
那服务端的排列规则,只小米自己知道。有时可能公平,也可能不公平(也人说他是直接标志的,我觉得这个可能性比较低)。
以10.15这次抢购为例子,可以肯定小米给每个帐号的概率肯定是不一样的。我想这样做的目的只防止黄牛,减少不满。但很多时候也会误伤。如果黄牛的特点跟普通用户一样,或者普通用户也当小黄牛。这时误伤的概率就比较大了。这个要靠小米的后台分析能力了。他们最好的办法就是增加供给。
扯远了,又跑题了。这段代码,进入页面ready
后就执行miphoneBuy.init方法,方法里面里的checkCookie,如果第一次登录,调用就取一下miphoneBuy.jsonInter()服务器的时间。然后启动定时器,每秒钟执行一次,查看现在的状态,根据服务器的时间与开始抢的时间(如果已经开始抢购了,还要根据cookie中手机和盒子是否已经saleout
,这个cookie是由调用miphoneBuy.jsonInter()后,服务器的返回值
json.status.miphone.hdstart,json.status.miphone.hdstop,
json.status.mibox.hdstart, json.status.mibox.hdstop;决定写入的,判断出展示
stepHtml的哪一步的方法。共6步,代表意思见代码注解。
当倒计时完成,开始抢购时,展示第三步(展示购买按钮),点击购买手机,或盒子(TV),发现页面没用直接调用服务端排列。
而是var randomCount
= parseInt(Math.random() * (0xa - 0x5 + 0x1) + 0x5), //随机取5 到 11
中的整数。随机取5-11秒,让页面再次等待5-11秒,才提交服务端排队。如果没排上又是等第一次取的randomCount秒。
那了解这段代码,我们能做些什么。可以在控制台上输入。
isPhone = true;
//或者isBox=true;
isRollStatus = true;
miphoneBuy.jsonInter(); //提交服务端排队
跳过页面等待,直接提交服务端排队
或者把等待进入活动的等待时间修改成更小的值如
count=0;CONFIG.count=0;
或者写个程序,登录后,保持sesion,直接访问排除url,返回成功直接进入购买页面。
那这样我们这样有没有作用呢?
这取决于服务端的规则。
1,如果服务端完全公平,都不考虑黄牛,不考虑你调用次数,这个代码很有作用。这以现在情况我觉得不太可能
2,如果服务端,有做防止黄牛情况,而且根据不同的帐号给不同的概率,而且还做了防频繁提交。
那我们的代码只能设计成count=5;CONFIG.count=5;但作用有只有一点点点。
如果我是开发者,这种情况比可能性最大
3,如果服务端,是直接分配好了,打标志。那我们代码根据没作用。我觉得这个不太可能。
以上纯属理论分析。
话说小米手机不错,主要是miui不错。买个手机天天要抢。其实我是比讨厌这种营销。把手机价格搞的低低的,吸引注意。好长一段时间,你很难抢的到手机。 相比小米,我更喜欢魅族,虽然我用的是小米1s.以后有点闲钱,换手机买一部魅族。
下面来享受这段代码。 你想做抢购软件?抢购机器人?先看懂这代码吧!
10.15号的抢购js代码,都写到一个js文件中.里面的代码是mini版本的,查个工具把他格式化一下就可以了。
http://p.www.xiaomi.com/open/131009/mi3/buy/process.min.js
小米为了增加代码阅读的复杂性(也可能为了转义字符),把一些变量定义成一个数组,而且这个数组用16进制表示。
做过白帽子的,应该很熟悉。用16进制表示字符找出很多xss漏洞,sql注入漏洞吧。可以自己写(其实alert或console.info
16进制就可以得到字符串)或找个工具转成字符串,增加代码的可读写性。
好了,下面就来分析代码了。
以10.15的抢购代码为例
为了阅读性我们两成两段,一个是他的数组变量_$,另一段是就是其它代码
_$ 变量太长了,我贴一点点,不完整!
hdcontrol({"stime":1382068631,"status":{"allow":false,"miphone":{"hdstart":false,"hdstop":false,"hdurl":"","duration":null},"mibox":{"hdstart":false,"hdstop":false,"hdurl":"","duration":null}}})
View Code
这段代码只是抢购js的前端排队代码,真正的排除代码当然是放在后台的服务器上了。也就是说,你完全知道这段代码,对你抢购也没太大的帮助。如果排队没成功(json.status.allow=false),直接访问购买的页面,服务端会让你跳转到排队页面。
那服务端的排列规则,只小米自己知道。有时可能公平,也可能不公平(也人说他是直接标志的,我觉得这个可能性比较低)。
以10.15这次抢购为例子,可以肯定小米给每个帐号的概率肯定是不一样的。我想这样做的目的只防止黄牛,减少不满。但很多时候也会误伤。如果黄牛的特点跟普通用户一样,或者普通用户也当小黄牛。这时误伤的概率就比较大了。这个要靠小米的后台分析能力了。他们最好的办法就是增加供给。
扯远了,又跑题了。这段代码,进入页面ready
后就执行miphoneBuy.init方法,方法里面里的checkCookie,如果第一次登录,调用就取一下miphoneBuy.jsonInter()服务器的时间。然后启动定时器,每秒钟执行一次,查看现在的状态,根据服务器的时间与开始抢的时间(如果已经开始抢购了,还要根据cookie中手机和盒子是否已经saleout
,这个cookie是由调用miphoneBuy.jsonInter()后,服务器的返回值
json.status.miphone.hdstart,json.status.miphone.hdstop,
json.status.mibox.hdstart, json.status.mibox.hdstop;决定写入的,判断出展示
stepHtml的哪一步的方法。共6步,代表意思见代码注解。
当倒计时完成,开始抢购时,展示第三步(展示购买按钮),点击购买手机,或盒子(TV),发现页面没用直接调用服务端排列。
而是var randomCount
= parseInt(Math.random() * (0xa - 0x5 + 0x1) + 0x5), //随机取5 到 11
中的整数。随机取5-11秒,让页面再次等待5-11秒,才提交服务端排队。如果没排上又是等第一次取的randomCount秒。
那了解这段代码,我们能做些什么。可以在控制台上输入。
isPhone = true;
//或者isBox=true;
isRollStatus = true;
miphoneBuy.jsonInter(); //提交服务端排队
跳过页面等待,直接提交服务端排队
或者把等待进入活动的等待时间修改成更小的值如
count=0;CONFIG.count=0;
或者写个程序,登录后,保持sesion,直接访问排除url,返回成功直接进入购买页面。
那这样我们这样有没有作用呢?
这取决于服务端的规则。
1,如果服务端完全公平,都不考虑黄牛,不考虑你调用次数,这个代码很有作用。这以现在情况我觉得不太可能
2,如果服务端,有做防止黄牛情况,而且根据不同的帐号给不同的概率,而且还做了防频繁提交。
那我们的代码只能设计成count=5;CONFIG.count=5;但作用有只有一点点点。
如果我是开发者,这种情况比可能性最大
3,如果服务端,是直接分配好了,打标志。那我们代码根据没作用。我觉得这个不太可能。
以上纯属理论分析。
相关文章推荐
- 凑热闹!小米抢购手机页面前端代码分析
- 小米抢购页面源码分析2014年03月04号
- 小米抢购页面源码分析2014年03月11号
- 小米的抢购骗局+小米的抢购页面的源代码分析(三)工具类分析
- 小米抢购页面源码分析2014年03月18号
- horizon创建网络前端代码分析
- 前端页面响应时间长简单定位分析
- 手机自动化测试:Appium源码分析之跟踪代码分析一 1
- 手机开发之二:Boot代码深入分析
- APP的HTML5页面经过运营商网络被植入手机管家问题及分析
- 如何打开小米,oppo,华为等手机的系统应用的指定页面
- 用.net实现远程获取其他网站页面内容!(核心代码分析)
- 如何通过代码实现进入到手机的设置页面(比如开启gps设置的页面)
- 常用的jquery触屏手机页面特效代码下载
- 手机自动化测试:Appium源码分析之跟踪代码分析一 2
- 【全新视频】前端页面性能分析精要
- 前端页面数据埋点、分析和参考
- WordPress代码和分析-页面模板是从哪里来的
- [前端] 手机HTML页面制作经验
- 前端页面代码规范总结