开篇
早上,朋友说淘宝一块钱抢东西来了,一看还有点新鲜,叫“砍价”,就是用户用鼠标一刀刀的砍,价钱就一直减,直到减到一元,感觉还比较新鲜,于是想写个插件还砍他一砍,于是就有了这个插件
本来没什么可说了,上代码就完了,但我还是把过程记录一下吧,分享分享
所用工具:Chrome
砍价地址:http://www.tmall.com
淘宝砍价界面和本插件最终实现的效果
分析实现
首先,找到上图中幕后指使者,也就是脚本
查看源代码,慢慢分析,慢慢看,一个个排除,直到look到这一段
进入上面的js脚本一探究竟
是不是看不懂,这明显经过了压缩,要想容易理解,最好能恢复压缩前的样子,但是我们没办法实现这一点,就只能借助工具将格式化一下了
格式化后的代码片段
是不是要好看多了,接下来对其进行分析,此脚本是基于淘宝的KISSY库写的,多看几遍脚本就可以发现,此脚本注册了如下几个模块
hyp,model,view,ua-helper
hyp主要为模块入口,负责初始化和调度其他模块
model为核心模块
view负责显示
ua-helper为辅助模块
在抢票界面上移动鼠标,然后监听提交地址,再用提交地址去代码中搜索,便会发现此代码
它在model模块内,搜索使用到 i 这个变量的地方便会发现这个函数
分析代码发现,这正是砍价的核心代码,blade就是砍的意思,jsonp就是对ajax的封装,如下:
明白了调用方式,我们只需要调用此函数即可
为了更好的效果,我还发现了
var cx = l.locationToDegree(x1, y1);
o._limitScratch(r, cx);
这两句是挥动刀的动画,于是组装一段代码将其放入初始化代码中便得到了如下代码
写好代码,将其封装成chorme插件
文件:
然后打开chrome设置界面
启用开发者模式,浏览到文件目录,点击确定即可(下载的话,需要先解压)。
使用效果
经过测试,秒杀插件就可以使用了,等待开始后,插件会调用淘宝的脚本自动砍价,砍价间隔默认为250毫秒左边砍一下,再过250毫秒右边砍一下,如此往复。
如果你嫌挥刀太慢,不够劲爆,你可以这样做
打开TbBlade.js,修改图中的数值,然后重新加载插件,刷新网页即可
最新
提示“网络忙”,“商品到别人碗里去了”之类的遮罩层会被隐藏,不会挡住挥刀动画了。