《党的十九大精神学习竞赛》答题竞赛的前端分析

   灯塔-党建在线是中共山东省委组织部主办组织的一个大型的党建网站,2017年12月上线以来,广受党员、群众的好评,可以说是近年来山东省党建工作的集大成者,相信在未来仍然会起到重要的作用。


现状分析

  山东省的党员小伙伴们对这个网站的了解,更多的源于《党的十九大精神学习竞赛》答题竞赛。这次竞赛活动周期长达7个月,线上参与还能获取话费、流量等奖励,对人吸引力很大。目前,活动已经如火如荼的开展了两个月,随着活动的深入发展,有些细心的小伙伴发现不合常理的情况,比如:

《党的十九大精神学习竞赛》答题竞赛的前端分析_第1张图片
image

  前15名平均用时不超过22秒还能满分?前500名平均用时不超过26秒依然全部满分!一共20道题,折合1.1秒答对一道题,这有可能吗?我们淘宝以后发现,确实有可能!
《党的十九大精神学习竞赛》答题竞赛的前端分析_第2张图片
image

  没错,人工不行,机器行啊!那为什么这些人都是20多秒呢?
《党的十九大精神学习竞赛》答题竞赛的前端分析_第3张图片
image

  这下大家都明白了吧, 该程序根本做不到20秒以内答题!
  事实上,本文不会去探讨淘宝上这些定制软件的实现方式,因为这些软件根本没意义探讨的价值和必要:第一,答题竞赛旨在加强党员干部的党性教育,提高党员素养,舞弊行为令人不齿;第二,对题目熟练的党员,人工答题都可以控制在40秒内。相比之下,软件20秒的速度实在令人提不起兴趣。


前端分析

  • 模拟答题

  下面就是大家熟悉的答题页面:

《党的十九大精神学习竞赛》答题竞赛的前端分析_第4张图片
image

  就像大家所熟知的那样,每答完一道题目,需要手动点击“下一题”,才出现下一题的内容。通过开发者工具,分析页面的HTML元素,可以发现所有题目是以 li的形式出现:
《党的十九大精神学习竞赛》答题竞赛的前端分析_第5张图片
image

  只要分析整个页面源码,完全可以得到20道题目的题干,同时找出正确的选项。接下来,进一步分析数据交互行为,按照惯例,使用开发者工具中的 Network,分析网页请求,如下图:
《党的十九大精神学习竞赛》答题竞赛的前端分析_第6张图片
image

  居然没找到——有可能在点击“模拟答题”按钮后,获取到了题目数据,然后页面进行了重定向,而 Network默认并没有保存重定向前的记录。
  现在,如果我们要再打开重定向记录,硬要分析出来相应的网络请求,着实没有必要。因为 灯塔-党建在线使用了HTML5的新特性,其中之一就是 Session Storage。进入开发者工具的 Application标签,查看 StorageSession Storage中的 http://xxjs.dtdjzx.gov.cn,如下图:
《党的十九大精神学习竞赛》答题竞赛的前端分析_第7张图片
image

  有一个名为 allDataKey,其 Value是JSON字符串,具体内容如图:
《党的十九大精神学习竞赛》答题竞赛的前端分析_第8张图片
image

  你没看错,这就是题目和选项,其中有一个为名 optionTypeKey,其 Value值就是正确答案。
  到这里就一目了然了: 编写相应的代码获取每一个optionTypeValue值,在Console中运行后,可以直接选择正确的答案,甚至不需要题目跟选项!

  • 正式答题

  正式答题和模拟答题的页面是一样的,如果你按照上篇文章所讲述的方法来分析Session Storage中的数据,你会发现optionTypeValue是空的。由于牵扯到数据交互,正式答题采用的都是后端校验,前端不显示相应的答案。尽管如此,通过JSON字符串仍然可以得到题目和选项,编写相应的JS代码对题库进行遍历,依旧可以得到正确的答案。
  你以为这样就结束了?Too Young,Too Simple!
  HTML5的Web存储中,还有除了Session Storage还有Local Storage。在正式答题环节,不修改Local Storage中相应的值,是没有办法做到提交答案的。事实上,完善后的前端JS代码可以在1秒钟之内完成答题。由于全部交互过程发生在页面展现后,因此无论前端还是后端,都无法验证答题的是人还是程序!
  到这里,有些熟悉编程的小伙伴会不屑一顾:正式答题环节直接模拟后台请求就好了,哪里需要写前端JS代码这么麻烦!没错,直接将获取到的数据post到对应的网址省时省力。可事实上并不推荐这样的做法:1月中旬的时候,灯塔系统进行了一次强制升级,加入了什么东西目前不得而知,但可以确定的是,这次升级一定是针对日益猖狂的舞弊行为。因此,那些采用技术手段来答题的小伙伴,还请自重。


博文要点
  通过前端JS代码可以自动完成网页信息的填写,包括但不限定于基本信息填写、调查问卷填写、网上投票、网上答题等。


  最后的最后,我必须要吐槽一下灯塔这个答题竞赛的小bug:进入答题页面后,误关浏览器页面就判零分!直接判零分啊有木有!

你可能感兴趣的:(《党的十九大精神学习竞赛》答题竞赛的前端分析)