成都IT培训学校

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

2016-09-19 15:58 作者:RichardBillion 来源:简书 浏览: 我要评论(条) 字号:

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

  这两天大家的朋友圈应该都有被阿里巴巴安全部门开除几名抢月饼的员工这条新闻刷屏吧?这是知乎的传送门:如何看待阿里巴巴安全部门的月饼事件? 看了看评论,感觉这个可以上娱乐快报了。当然作为看官,或同情事主或支持公司这些观点咱就不讨论了啊,要是三观都能一致,世界早就和平了。
 
  作为一名入门不久的前端,当我看到文中说他们用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的方法去揣测他们的实现方法,所以有什么出入,那真的是再正常不过的事情。写下这些只是为自己记录下顺便为不懂技术的朋友们提供一点或许可以提升效率的方法。
 
 

顶一下
(0)
0%
踩一下
(0)
0%
标签:
版权所有: 非特殊声明均为本站原创文章,转载请注明出处: 成都学前端开发网-web.ixueyun.com
订阅更新: 您可以通过RSS订阅我们的内容更新

当前栏目分类