VB.net 2010 视频教程 VB.net 2010 视频教程 python基础视频教程
SQL Server 2008 视频教程 c#入门经典教程 Visual Basic从门到精通视频教程
当前位置:
首页 > 网站开发 > JavaScript >
  • JavaScript教程之一个基于chrome扩展的自动答题器(5)

逻辑很简单,

复制代码
 1 遍历所有题目标签
 2 {
 3     找到题干;
 4     在题库中匹配题干;
 5     如果未匹配到
 6     {
 7         就用alert弹出提示
 8         错题标记+1    
 9     }
10     如果匹配到
11     {
12         获取所有选项并进行遍历
13         {
14             如果是单选并且选项等于该题目的答案
15             {
16                 选中该选项;
17                 continu;
18             }
19             如果是多选并且选项在该题目的答案中
20             {
21                 选中该选项;                
22             }
23         }
24     }
25 }
26 如果没有错误标记则自动交卷;
复制代码

以上,就是整个答题器中最重要的popup,content 和 inject 中的js代码。

5、几个功能迭代。

从4月份期,为增加作弊难度,考试系统在每天都会增加几道新题。根据观察,是20道题中,在基础题库中抽取18道,在当日新题中抽取2道。

当时的对策是每天更新一次答题器,为了便于答题,答题器的所有用户每天都需要重新下载更新答题器。(群成员数暴涨)

5月13日,我重写了自定义新题的功能,可以批量添加多个新题。这样每天我只需要更新新题字符串,答题器用户将新题字符串导入答题器即可。

5月14日,在重新学了了小茗同学教程之后,实现了在线更新的功能。自定义新题字符串仅仅使用了两天便被淘汰。

服务器端代码:

复制代码
 1 <?php
 2 
 3 //当前版本号
 4 $_v='060303';
 5 
 6 //当前新题字符串
 7 $date='
 8 十九大报告指出,要建立全面规范透明、标准科学、约束有力的预算制度,全面实施()。
 9 绩效管理
10 党组的设立,一般应当由()或者本级党的地方委员会审批。党组不得审批设立党组。
11 党的中央委员会
12 ';
13 
14 //客户端版本号
15 $v=$_GET['v'];
16 
17 //版本号不一致的话,就反馈更新数据
18 if($v<>$_v)
19     //echo '{"date_varsion":"'.$_v.'","update":"'.$date.'"}';
20 {
21     echo '//'.$_v;
22     echo $date;
23     
24 }
25 ?>
复制代码

服务器端代码很简单,答题器将当前版本号发送至服务器,如果版本号一致则服务器返回空白页,如果不一致则返回新题数据。

数据的第一行是当前数据版本,后面则是题目/答案。依托于重写的自定义新题功能,自动更新非常顺利的实现了。

4月20日,经确认,考试系统加入了防作弊功能,原理是当鼠标点击“上一题”“下一题”或者题号时执行函数ClickButton,保存当前鼠标坐标,在交卷时同时传给服务器。

一开始我考虑的伪造回传数据,但数据经过了一点简单的计算,实在懒得跟他算计,

然后考虑的伪造下一题按钮的点击事件,但通过脚本触发的点击事件没有鼠标坐标信息,

最后忽然发现,我只要每次题目切换时,伪造一个事件(Event)作为参数传给反作弊的模块即可

  var posx=Math.floor(800+Math.random()*200);

  var posy=Math.floor(400+Math.random()*140);

ClickButton({'button':0,'clientX':Math.floor(posx+Math.random()*50),'clientY':Math.floor(posy+Math.random()*15)});

 6、写在最后

这个答题器功能实用,逻辑清晰,难度不算大,非常适合chrome扩展的学习和练手。

当前,本次竞赛的线上部分已经结束,经历了几个月的学习和使用,我也收获的4个微信群,所有群内用户近2000人。最高安装量6000,最高惠及党员80000余人(一人一块钱我就发了!)

最后,还是感谢小茗同学的教程。

以上!


相关教程