简单实用的铁道部12306.cn网站自动化登录(转http://www.cnblogs.com/cnshangsha/archive/2012/01/12/12306cnautologin.html)

来源:互联网 发布:买家加入淘宝联盟 编辑:程序博客网 时间:2024/06/05 03:40
 
 

铁道部网站登录难点分析

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

技术解析

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

开始步骤

  • 使用IE8及其以上的版本,IE7及以下版本需要另外下载微软官方的IE开发者工具栏,下载链接如下:
    • Internet Explorer Developer Toolbar:  http://www.microsoft.com/download/en/details.aspx?id=18359
  • 在IE地址栏中访问铁道部登录页面 https://dynamic.12306.cn/otsweb/loginAction.do?method=init
  • 需要 且 只需要输入一次自己的用户名,密码,验证码即可 
    •  
  • 按F12快捷键调出IE开发者工具栏 >>> Script(脚本)选项卡 >>> 复制如下图代码到内容文本框中 >>>  点击 Run Script(运行脚本) 按钮
    •         var page = "https://dynamic.12306.cn/otsweb/loginAction.do?method=init";        var url = "https://dynamic.12306.cn/otsweb/loginAction.do?method=login";        var queryurl = "https://dynamic.12306.cn/otsweb/order/querySingleAction.do?method=init";        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 subLink = _ifrMain.contentWindow.document.getElementById('subLink');            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(msg);                    }                    else {                        location.replace(queryurl);                    };                },                error: function (msg) {                    reLogin(msg);                },                beforeSend: function (XHR) {                    ;                }            });        }        var count = 1;        function reLogin(msg) {            count++;            subLink.innerHTML = "(" + count + ")次登录中..." + msg;            setTimeout(submitForm, 500);        }        submitForm();
  • 后面执行情况说明
    •   点击了运行脚本按钮后,对客户来说,登录操作是自动化的了,无需其他操作,只待登录成功即可。
  • 执行成功说明 ,如下图,看到自己的用户名后,即登录成功

最后总结

  • 不足 
    • 前些天买票高峰期已过, 此技巧来得太晚 , 我的票别人帮忙订的,我没太注意用技术实现容易登录。
  • 足 
    • 返程票高峰期马上到来!
原创粉丝点击