简单实用的铁道部12306.cn网站自动化登录( 更新版 )

新代码如下:
?
 
function submitForm() {
     var _ifrMain = document.getElementById( 'main' );
     var userName = _ifrMain.contentWindow.document.getElementById( 'UserName' );
     var password = _ifrMain.contentWindow.document.getElementById( 'password' );
     var randCode = _ifrMain.contentWindow.document.getElementById( 'randCode' );
 
     var submitUrl = url;
     $.ajax({
         type: "POST" ,
         url: submitUrl,
         data: {
             "loginUser.user_name" : userName.value
           , "user.password" : password.value
           , "randCode" : randCode.value
         },
         timeout: 30000,
         success: function (msg) {
             if (msg.indexOf( '请输入正确的验证码' ) > -1) {
                 alert( '请输入正确的验证码!' );
             };
             if (msg.indexOf( '当前访问用户过多' ) > -1) {
                 reLogin( '回调结果:当前访问用户过多' );
             }
             else {
                 location.replace(queryurl);
             };
         },
         error: function (msg) {
             reLogin( '回调结果:错误' );
         },
         beforeSend: function (XHR) {
            ;
         }
     });
}
 
var count = 1;
function reLogin(msg) {
     count++;
     skm_LockScreen( "(" + count + ")次登录中..." + msg);
     setTimeout(submitForm, 500);
}
 
function skm_LockScreen(str) {
     scroll(0, 0);
     var back = document.getElementById( 'skm_LockBackground' );
     var pane = document.getElementById( 'skm_LockPane' );
     var text = document.getElementById( 'skm_LockPaneText' );
 
     var LockBackgroundCssString = "position: absolute;top: 0px;left: 0px;visibility: visible;display: block;width: 105%;height: 105%;background-color: #666;z-index: 999;filter: alpha(opacity=75);opacity:0.75;padding-top: 20%;" ;
 
     var LockPaneCssString = "z-index: 1000;position: absolute;top: 0px;left: 0px;padding-top: 25%;visibility: visible;display: block;text-align: center;width: 100%;" ;
 
     var textCssString = "width: 55%;background-color: #969;color: White;font-size: large;border: dotted 1px White;padding: 9px;margin-left: auto;margin-right: auto;" ;
      
     if (back)
         back.style.cssText = LockBackgroundCssString; 
     if (pane)
         pane.style.cssText = LockPaneCssString; 
     if (text) {
         text.innerHTML = str;
         text.style.cssText = textCssString; 
     }
}
 
var loginoutElement = document.getElementById( 'login_out' );
loginoutElement.innerHTML = "<div id='skm_LockBackground' style='display: none;visibility: hidden;position: absolute;top: -100px;left: -100px;'></div><div id='skm_LockPane' style='display: none;visibility: hidden;position: absolute;top: -100px;left: -100px;'><div id='skm_LockPaneText'> </div></div>"
 
submitForm();

 

增加了友好的锁屏信息 
  •  
多进程登录 
  •  
代码测试能目前还是能正常登录的,请网友放心使用 
  •  
Bug
  • 目前代码自动登录的频率是一秒两次,有一次在登录次数达到3百多次的时候 ,网页出现了拒绝访问的错误,  难道铁道部的后台程序判断了当前用户请求次数频繁, 把请求列入了黑名单?

铁道部网站登录难点分析

  • 必须使用微软IE浏览器 
    • 铁道部网站只支持IE在线付款
  • 网站使用Https协议
    • 客户端不允许跨域访问 

技术解析

  • 使用微软IE开发者工具栏即可破解自动化登录过程

开始步骤

  • 使用IE8及其以上的版本,IE7及以下版本需要另外下载微软官方的IE开发者工具栏,下载链接如下:
  • 在IE地址栏中访问铁道部登录页面 https://dynamic.12306.cn/otsweb/loginAction.do?method=init
  • 需要 且 只需要输入一次自己的用户名,密码,验证码即可 
    •  
  • 按F12快捷键调出IE开发者工具栏 >>> Script(脚本)选项卡 >>> 复制如下图代码到内容文本框中 >>>  点击 Run Script(运行脚本) 按钮
    • ?
       
      function submitForm() {
           var _ifrMain = document.getElementById( 'main' );
           var userName = _ifrMain.contentWindow.document.getElementById( 'UserName' );
           var password = _ifrMain.contentWindow.document.getElementById( 'password' );
           var randCode = _ifrMain.contentWindow.document.getElementById( 'randCode' );
       
           var submitUrl = url;
           $.ajax({
               type: "POST" ,
               url: submitUrl,
               data: {
                   "loginUser.user_name" : userName.value
                 , "user.password" : password.value
                 , "randCode" : randCode.value
               },
               timeout: 30000,
               success: function (msg) {
                   if (msg.indexOf( '请输入正确的验证码' ) > -1) {
                       alert( '请输入正确的验证码!' );
                   };
                   if (msg.indexOf( '当前访问用户过多' ) > -1) {
                       reLogin( '回调结果:当前访问用户过多' );
                   }
                   else {
                       location.replace(queryurl);
                   };
               },
               error: function (msg) {
                   reLogin( '回调结果:错误' );
               },
               beforeSend: function (XHR) {
                  ;
               }
           });
      }
       
      var count = 1;
      function reLogin(msg) {
           count++;
           skm_LockScreen( "(" + count + ")次登录中..." + msg);
           setTimeout(submitForm, 500);
      }
       
      function skm_LockScreen(str) {
           scroll(0, 0);
           var back = document.getElementById( 'skm_LockBackground' );
           var pane = document.getElementById( 'skm_LockPane' );
           var text = document.getElementById( 'skm_LockPaneText' );
       
           var LockBackgroundCssString = "position: absolute;top: 0px;left: 0px;visibility: visible;display: block;width: 105%;height: 105%;background-color: #666;z-index: 999;filter: alpha(opacity=75);opacity:0.75;padding-top: 20%;" ;
       
           var LockPaneCssString = "z-index: 1000;position: absolute;top: 0px;left: 0px;padding-top: 25%;visibility: visible;display: block;text-align: center;width: 100%;" ;
       
           var textCssString = "width: 55%;background-color: #969;color: White;font-size: large;border: dotted 1px White;padding: 9px;margin-left: auto;margin-right: auto;" ;
            
           if (back)
               back.style.cssText = LockBackgroundCssString; 
           if (pane)
               pane.style.cssText = LockPaneCssString; 
           if (text) {
               text.innerHTML = str;
               text.style.cssText = textCssString; 
           }
      }
       
      var loginoutElement = document.getElementById( 'login_out' );
      loginoutElement.innerHTML = "<div id='skm_LockBackground' style='display: none;visibility: hidden;position: absolute;top: -100px;left: -100px;'></div><div id='skm_LockPane' style='display: none;visibility: hidden;position: absolute;top: -100px;left: -100px;'><div id='skm_LockPaneText'> </div></div>"
       
      submitForm();

       

  • 后面执行情况说明
    •   点击了运行脚本按钮后,对客户来说,登录操作是自动化的了,无需其他操作,只待登录成功即可。
  • 执行成功说明 ,如下图,看到自己的用户名后,即登录成功

最后总结

  • 不足 
    • 前些天买票高峰期已过, 此技巧来得太晚 , 我的票别人帮忙订的,我没太注意用技术实现容易登录。
  • 足 
    • 返程票高峰期马上到来!
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
本项目是一个基于SpringBoot开发的华府便利店信息管理系统,使用了Vue和MySQL作为前端框架和数据库。该系统主要针对计算机相关专业的正在做毕设的学生和需要项目实战练习的Java学习者,包含项目源码、数据库脚本、项目说明等,有论文参考,可以直接作为毕设使用。 后台框架采用SpringBoot,数据库使用MySQL,开发环境为JDK、IDEA、Tomcat。项目经过严格调试,确保可以运行。如果基础还行,可以在代码基础之上进行改动以实现更多功能。 该系统的功能主要包括商品管理、订单管理、用户管理等模块。在商品管理模块中,可以添加、修改、删除商品信息;在订单管理模块中,可以查看订单详情、处理订单状态;在用户管理模块中,可以注册、登录、修改个人信息等。此外,系统还提供了数据统计功能,可以对销售数据进行统计和分析。 技术实现方面,前端采用Vue框架进行开发,后端使用SpringBoot框架搭建服务端应用。数据库采用MySQL进行数据存储和管理。整个系统通过前后端分离的方式实现,提高了系统的可维护性和可扩展性。同时,系统还采用了一些流行的技术和工具,如MyBatis、JPA等进行数据访问和操作,以及Maven进行项目管理和构建。 总之,本系统是一个基于SpringBoot开发的华府便利店信息管理系统,使用了Vue和MySQL作为前端框架和数据库。系统经过严格调试,确保可以运行。如果基础还行,可以在代码基础之上进行改动以实现更多功能。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值