今天水过科目二,=v= 100分~
教练让刷科三网上理论的学时,科二两小时的网上学时也就算了,科三16小时= =还要20分钟点击一次,考个驾照这么麻烦。。难道要挂个按键精灵?那我岂不是4小时不能动电脑= =
太low了,身为CS学生,当然要找直接粗暴一点=v=  伸手党请直接拉到最下方看方法~
分析
直接查看其JS代码,很容易发现stage标示的是科目几,如科三是3,科二为2
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34
   | $("#ChapterMenuDivOne1").click(function () {                    stage = 1;       timer();              $('body').stopTime('C');          })
    $("#ChapterMenuDivOne2").click(function () {                   stage = 2;       timer();        fjTimer();       fj20();                     })
    $("#ChapterMenuDivOne3").click(function () {                 stage = 3;       timer();        fjTimer();       fj20();             })
 
 
  | 
 
可以看到,科二和科三就差了stage - -
我们直接看科三的,调用了如下函数
- timer();
 
- fjTimer();
 
- fj20();
 
 
timer()函数如下:
1 2 3 4 5 6 7 8 9
   | function timer() {         $.get("Timer.aspx?Stage="+stage, function (d) {             $("#OnlineNumberDiv").html(d);         })            .error(function () {                $("#OnlineNumberDiv").html("<b style='color:red'>网络故障,请刷新页面!</b>");                            })     }
  | 
 
可以看出,这是个计算时间的函数,用get向服务器请求,然后 OnlineNumberDiv显示更新学时的时间,如下图
driving licence update time
fjTimer()函数如下:
1 2 3 4 5 6 7 8 9
   | function fjTimer() {        if (isTimer == 0) {            $('body').stopTime('A');            $('body').everyTime('60s', 'A', function () {                timer();            });            isTimer = 1;        }    }
  | 
 
每60S刷新一次timer()
fj20()函数如下:
1 2 3 4 5 6 7 8 9 10 11 12 13
   | function fj20() {         $('body').stopTime('C');                            $('body').oneTime('1810s', 'C', function () {                 $('body').stopTime('C');                                                   fjDialog();             });                          }
  | 
 
就是1810S后调用fjDialog();
fjDialog(); 如下
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24
   |  function fjDialog() {         var html = '<p id="stopTimeTips">计时将在<b style="color:blue" id="remainTime" >加载中</b>后停止,请问是否需要继续学习?</p><br/><br/><br/>';         html += "<input type=button value=' 是(继续学习) ' onclick=\'startTimer()\' />   ";                 html += '<input type=button value=" 否(返回首页) " onclick="gotoIndex()" />';                                bbq = new Dialog(html);             bbq.show();       
 
 
                   SysSecond = 120;          $('body').stopTime('D');         $('body').everyTime('1s', 'D', function () {             SetRemainTime();         });                  
      }
 
 
  | 
 
就是弹出那个学时停止计时确认的对话框,如果120S不点击继续学习,则进行停止计时
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24
   | function SetRemainTime() {       if (SysSecond > 0) {           SysSecond = SysSecond - 1;           var second = Math.floor(SysSecond % 60);                        var minite = Math.floor((SysSecond / 60) % 60);      
            $("#remainTime").html(minite + "分" + second + "秒");       } else {           timer();           $('body').stopTime('D');           $('body').stopTime('A');           isTimer = 0;           $('body').stopTime('C');           if (stage == 2) {               $("#stopTimeTips").html("<b style='color:red'>计时已于" + currentTime() + "停止,若需继续学习请点击“是”</b>");           }           else {               $("#stopTimeTips").html("<b style='color:red'>计时已于" + currentTime() + "停止,请点击上面的选项继续学习。</b>");           }
        }   }
 
 
  | 
 
效果如图
driving licence stop time
从上面的分析中得出结论,timer()函数用于计时,而它是用get方法向/Timer.aspx?Stage=3刷新计时时间的。
那么,如果我们直接向这个发送请求呢?答案是可行的,请看下面的方法
方法
打开chrome浏览器,访问科三的学习页面,按F12,打开控制台,输入如下代码,回车即可。
1 2 3 4 5
   | setInterval(function(){ $.get('http://fj.17qibu.cn:8001/Timer.aspx?Stage=3', function (d) {             $("#OnlineNumberDiv").html(d);         }) }, 6000);
  | 
 
如图
driving-licence-stop-time-chrome-console-js
PS:
- 这个方法并不会阻止弹窗说停止计时,但无视就好=v=,还是会继续计时的。
 
- 如果是科目二,那么把Stage=3改为Stage=2
 
- 每天只能挂4个小时,这是硬性限制= =
 
- 有控制台的能跑JS的浏览器就行,不一定得chrome
 
- 2015.11.05 update code:使得能直接在网页上显示更新的学时
 
driving-licence-stop-time-but-continue-update-time
可以在我的学时中查看详细学时记录,会发现还是计时的。
driving licence my rest time
小结
本来是想要python 直接上模拟登陆和提交- -没想到计时的机制这么简单~