kw13202 / 自动领取在线经验

// ==UserScript==
// @name            自动领取在线经验
// @name:en         Qidian Auto Exp
// @namespace       kw13202
// @version         1.9
// @include         http://my.qidian.com/level
// @author          kw13202
// @description     保持页面打开状态,脚本会自动触发领取方法,不用手动领取(起点服务器竟然还存着这时间,不怕服务器资源浪费吗)
// @grant           GM_setValue
// @grant           GM_getValue
// @grant           GM_openInTab
// ==/UserScript==
;(function(){
	//因为起点页面已经有JQuery引用,故不用@require     http://code.jquery.com/jquery-1.11.0.js
    'use strict';	//启用严格模式
    
    var cookie = new Object();
    var xmlhttp = null;
    
    console.log("自动领取start");
    var csrfToken = getCookie("_csrfToken")
    console.log("Token:" + csrfToken);
    
    
    var getExp = function(){
        console.log("进入定时器方法")
        let button = window.document.getElementsByClassName("elGetExp")[0];
        if(button){
            console.log("进行ajax请求")
            var num = button.attributes["data-num"].value;
            var url = 'http://my.qidian.com/ajax/Score/Receive?_csrfToken=' + csrfToken + '&referObject=' + num;
            console.log("ajax:" + url)
            var obj = {
                url:url,
                method:"GET",
                async:true,
                success:function(){
                    console.log("ajax请求成功");
                    location.reload(true);
                }
            }
            ajaxSend(obj);
        }else{
            console.log("没找到领取按钮,继续等待1分钟");
        }
    };
    let timeIndex = window.setInterval(getExp, 60000);
    console.log("启动定时器" + timeIndex);
    
    function ajaxCreate(){
        if(!xmlhttp){
            xmlhttp = new XMLHttpRequest();
        }
    }
    
    function ajaxSend(obj){
        console.log("ajax start")
        ajaxCreate();
        xmlhttp.onreadystatechange = function(){
            if(xmlhttp.readyState == 4){
                obj.success(xmlhttp.responseText);
            }
        }
        xmlhttp.open(obj.method, obj.url, obj.async);
        xmlhttp.send(obj.data);
        console.log("ajax send")
    };
    
    function getCookie(name){
        if(cookie[name]){
            return cookie[name];
        } else {
            var reg = new RegExp("(^| )"+name+"=([^;]*)(;|$)")
            var arr = document.cookie.match(reg);
            if(arr){
                cookie[name] = unescape(arr[2]);
                return cookie[name];
            } else {
                return null;
            } 
        }
    };
    
})();