美文网首页H5让前端飞Web 前端开发
为你科普:如何用js抢月饼

为你科普:如何用js抢月饼

作者: RichardBillion | 来源:发表于2016-09-14 16:21 被阅读1906次

这两天大家的朋友圈应该都有被阿里巴巴安全部门开除几名抢月饼的员工这条新闻刷屏吧?这是知乎的传送门:如何看待阿里巴巴安全部门的月饼事件? 看了看评论,感觉这个可以上娱乐快报了。当然作为看官,或同情事主或支持公司这些观点咱就不讨论了啊,要是三观都能一致,世界早就和平了。

作为一名入门不久的前端,当我看到文中说他们用js脚本来写了定时器抢月饼时,我的好奇心被大大地激发了,心想折腾的东西也不少了,但还从来没做过这么能够提升自己效率的事儿,吓得我赶紧看了看抢票这些事儿的原理。如果不考虑后续事宜,只是想着点击抢购按钮那一下可以快人一步,事情倒是真的不复杂。

然而这两天看到了好多不管是媒体还是自媒体站出来用“世人皆浊我独清”的态度、使用骇人听闻的标题如“开除TA不是因为月饼”、开始大肆宣扬开除他们是因为他们漠视规则破坏规矩、利用漏洞实施攻击、监守自盗知法犯法云云。对于他们我只想弱弱问一句:你们知道用js抢月饼是怎么一回事么?

上菜

以qiang.taobao.com为例子,用我薄弱的基础和拙劣的语言尽力描述。

等待抢购界面 正常购买界面

在开始抢购之前,显示的是即将开始的倒计时代码,正常购买代码被隐藏,可以和正常购买的代码对比下,该部分div.tb-action.tm-clear是完全一样的,那么也就意味着我们可以提前选好要点击的dom元素,当然了,他这个禁止购买绝不仅仅是前端页面的将其功能隐藏,后端也是有很多限制啦。

那么我们可以每隔一段时间比如5s去看一下是否快到抢购时间了,如果快了,就改用高速的循环去点击抢购按钮,当然开始之前点击按钮的请求会是失败了,但是抢购开始的时候我们可以很快的点中,将代码写到开发者工具的console中回车即可。代码如下:

function panicCakes(){
    console.log("panic mooncakes");
    document.getElementById('J_LinkBuy').click();
}
//以抢下午5点的为例,很多情况就没有再考虑
var deadline=new Date(2016,8,14,17,0);
var panic=null,diffs=null;
var t=setInterval(function(){
    var now=new Date();
    console.log(deadline)
    console.log(now)
    var diffms=deadline.getTime()-now.getTime();
    console.log(diffms)
    if(diffms<5001){
        console.log("开始加速...")
        panic=setInterval(panicCakes,50)
    }else{
        diffs=diffms/1000;
        console.log("剩余"+parseInt(diffs/60)+"分"+parseInt(diffs%60)+"秒")
    }
},5000)

我们上边主要做的事情其实就一件,就是利用代码自动触发click()事件,省了人工去手动点击抢购按钮这件事,针对淘宝来说,点击购买之后只要成功就跳转到了提交订单页面,所以不仅不用考虑什么时候清除定时器,我们的所有代码都没用了,到目前为止这对任何人不会有什么风险或者威胁。当然了想要一个完整的直到成功提交订单的刷票代码就没那么简单了,可能需要解决:突破层层验证(现在我没有考虑)、如何在页面跳转之后仍然可以自动执行代码,这个我继续努力吧。

鉴于我这个菜鸟和阿里员工之间的差距肯定不止十万八千里,而我又恰好不惮以最low的方法去揣测他们的实现方法,所以有什么出入,那真的是再正常不过的事情,况且我这儿只是抢的第一步,后边的各种验证都没有考虑,所以这个题目可能是耸人听闻了一些。。。写下这些只是为自己记录下、顺便为不懂技术的朋友们提供一点或许可以提升效率的方法。

写在最后

本来还想写一些攻击的主要表现形式,但是发现说清楚还挺难。基本的前端攻击涉及XSS,csrf,网络劫持等,这些留着后边几天再写吧。

相关文章

  • 为你科普:如何用js抢月饼

    这两天大家的朋友圈应该都有被阿里巴巴安全部门开除几名抢月饼的员工这条新闻刷屏吧?这是知乎的传送门:如何看待阿里巴巴...

  • js抢月饼程序

    1.编写循环点击程序 2.把它放入chrome中

  • 谈谈阿里的月饼惨案

    这两天忽然被月饼引起的逗比事件刷屏了。 了解了一下经过:阿里巴巴内部有几个员工写了个js脚本用来抢月饼,抢的比较多...

  • chrome插件开发(模拟抢月饼)

    今天看到阿里的抢月饼事件,心血来潮写了个非常简单的chrome插件,项目地址 效果 代码 抢月饼页 chrome插...

  • 阿里是铁了心保护蒋凡吗?

    对的 还记得之前阿里抢月饼事件吗?当年抢月饼的阿里小伙伴们,发现不小心抢多了,还主动找HR要求退,并没有真的抱着1...

  • 2020-03-13

    —出生时自己一人,死如土时你又不陪我, 要你何用? —给你过生日,为你办丧礼。

  • 分块加载技术——nodejs-bigpipe-demo

    科普Node.js Bigpipe

  • 阿里政委,来,咱俩唠唠月饼

    今天下午有四位阿里员工因为抢购月饼被阿里开除了!是的,你没看错,不是打砸抢的抢,是真金白银抢购的抢。 事情是这样的...

  • 抢月饼也有错?

    后知后觉的我今天才知道阿里月饼的事。仔细看了整个过程,情节也真是搞笑。扣帽子自古以来是中国的传统了,发生这种事倒也...

  • 元认知能力的一次打磨 ——不要用公平去约束不公平

    前几天看了一篇吴军老师的标题为《有小聪明没有智慧的人》的文章,其中里面引用了阿里员工因为写程序抢月饼(其实是抢月饼...

网友评论

  • Dragon_Boat:页面刷新需要考虑吗?
    RichardBillion:@Dragon_Boat 我这方法刷新页面当然就无效了,毕竟放在console 面板里的

本文标题:为你科普:如何用js抢月饼

本文链接:https://www.haomeiwen.com/subject/ixpvettx.html