• 浅析中小学教师继续教育网计时功能 - [技巧攻略]

    2009-05-16

    版权声明:转载时请以超链接形式标明文章原始出处和作者信息及本声明
    http://gleisure.blogbus.com/logs/39500962.html

      近日,见友人在“教育部全国中小学教师继续教育网”上“用功学习”(挂时间)。该学习系统每10分钟可以按“更新学习时间”按扭将学习计入服务器,若在20分钟内未更新学时会暂停计时,这样繁琐的功能肯定是防止恶意挂学时。

      打开学习页面的源代码,是个框架页,上部是计时页面“BookShowTiming.aspx”,下部是课程页面。计时页核心源码如下:
    var begintime;
    var timer = null;

    function DoConverseCallTimer() {
     if(document.frmtimer.thzt.value == "")  {
      //alert("请输入倒计时开始的秒数!");
      } else {
     var minute="0";
     var second="0";
    //每1秒begintime值加1
     begintime = parseInt(begintime)+1;
    //计算分钟
     minute = parseInt(begintime/60);
    //计算秒数
     second = begintime%60;
     document.frmtimer.passedtime.value=minute;
     if (minute>="10") {
    //10分钟后允许按“更新学习时间”
      document.frmtimer.update.disabled=false;
     }
     if(minute<"20") {
      document.frmtimer.thzt.innerText =minute+"分"+second+"秒";
     } else {
      document.frmtimer.thzt.innerText =minute+"分"+second+"秒";
    //20分钟后暂停计时
      return;
     }
    //每1秒钟执行一次计时过程
     timer1 = window.setTimeout("DoConverseCallTimer()",1000);
     }
    }

    经试验,注入“begintime”值如700,点击“更新学习时间”,告知不要开启多个窗口学习,看来服务器对计时有验证,猜想:(1)每次“更新学习时间”时服务器记录时间,以便与下次更新时比较;(2)服务器在打开学习页面计入时间,并在“更新学习时间”提交数据给服务器时再比较;……第(1)种方法较好解决,可以在下次学习时弥补中断的时间;第(2)种方法就难了;……

      不管怎样,想个办法以模拟人工操作,这样只要电脑开着就能自动计时,网站又难识别是否作弊:注入代码,在“更新学习时间”铵扭可用时(或读取begintime值大小600时),执行数据提交操作。具体代码如下:
    var eduTimePage = window.frames(0);

    function autoclick() {
     if (eduTimePage.document.frmtimer.update.disabled==false) eduTimePage.__doPostBack("update", "");
     var timer2 = window.setTimeout("autoclick()",2000);
    }

     autoclick();

      以上方法百试百灵。另经测试估计执行“__doPostBack()”函数会在服务器记录执行操作的时间,也就是上面猜想的第2种情况,进入课程时就会执行此函数,但仍可以避免通过执行该函数调用学习页面,只需事先记录学习页面地址(URL)进行直接访问,这样便能很容易通过刷入“begintime”值来挽回最多20分钟的学习时间,虽然不是很多,但没必要浪费嘛。

      后记:搜搜网上是用什么办法的,有修改“begintime”值的,有制作了“学习时间加速专用浏览器”软件的;……未尝试,不晓得有没有用。


    收藏到:Del.icio.us




    评论

  • 不好意思刚才写错邮箱地址啦,谢谢
  • 你好,计时页面的地址栏在哪里
  • 我也要进行网上学习,博主能教教我吗?
    我的QQ是357389044,谢谢!
  • 能做个带截图的说明就好了!
    我们这些菜鸟级的看不懂!!
  • 谢谢你!我按照你的方法做了,但是怎么没反应呢?这个究竟有什么功能能变时间呢
    佳闲回复zhoudad说:
    10分钟时自动更新时间。
    2009-07-05 21:45:03
  • 你讲得太专业了,能否给我们个演示?急切盼望你的回答
    佳闲回复zhoudad说:
    在学习界面的地址栏内输入以下内容并确认(敲回车键或按"转到"按扭,以下内容无换行符):
    javascript:var eduTimePage = window.frames(0);function autoclick() { if (eduTimePage.document.frmtimer.update.disabled==false) eduTimePage.__doPostBack("update", ""); var timer2 = window.setTimeout("autoclick()",2000);} autoclick();
    2009-07-01 20:47:34
  • 怎么注入?还是不会,能不能再教教?
    非常感谢
    佳闲回复ball说:
    详见下层回复,再补充一句,像IE插件“Power Band”一类工具可以更容易注入程序代码修改当前页面。
    2009-06-20 22:01:02
  • 怎么注入代码?具体讲解一下,好吗?
    佳闲回复naonao说:
    比如在当前页面(不在框架内)使用javascript脚本语言,则在地址栏输入以下内容:
    javascript:void(begintime=1200);
    便可修改当前页面的begintime的值。
    2009-06-20 21:58:30
  • 在哪一部分注入代码?
    佳闲回复xingbaisong说:
    当然是计时页面啦,一般可以通过地址栏注入。
    2009-06-13 21:04:42