自动任务

自动完成marvelousga,dupedornot,gamecode等网站访问网页任务,自动验证所有任务

Tính đến 04-01-2019. Xem phiên bản mới nhất.

You will need to install an extension such as Tampermonkey, Greasemonkey or Violentmonkey to install this script.

Bạn sẽ cần cài đặt một tiện ích mở rộng như Tampermonkey hoặc Violentmonkey để cài đặt kịch bản này.

You will need to install an extension such as Tampermonkey or Violentmonkey to install this script.

You will need to install an extension such as Tampermonkey or Userscripts to install this script.

You will need to install an extension such as Tampermonkey to install this script.

You will need to install a user script manager extension to install this script.

(Tôi đã có Trình quản lý tập lệnh người dùng, hãy cài đặt nó!)

You will need to install an extension such as Stylus to install this style.

You will need to install an extension such as Stylus to install this style.

You will need to install an extension such as Stylus to install this style.

You will need to install a user style manager extension to install this style.

You will need to install a user style manager extension to install this style.

You will need to install a user style manager extension to install this style.

(I already have a user style manager, let me install it!)

// ==UserScript==
// @name         自动任务
// @namespace    http://tampermonkey.net/
// @version      0.9.6
// @description  自动完成marvelousga,dupedornot,gamecode等网站访问网页任务,自动验证所有任务
// @author       HCLonely
// @include      *://www.grabfreegame.com/giveaway/*
// @include      *://gamecode.win/giveaway/*
// @include      *://whosgamingnow.net/giveaway/*
// @include      *://marvelousga.com*
// @include      *://dupedornot.com*
// @include      *://gamezito.com*
// @include      *://www.bananagiveaway.com/giveaway/*
// @include      *://gamehag.com/giveaway/*
// @include      *://giveawayhopper.com/giveaway/*
// @include      *://giveaway.su/giveaway/view/*
// @include      *://gleam.io/*
// @include      *://gamehunt.net/distribution/*
// @run-at       document-end
// @grant        GM_addStyle
// @grant        GM_xmlhttpRequest
// @require      https://greatest.deepsurf.us/scripts/376085-httpsend/code/httpSend.js?version=658478
// ==/UserScript==

(function() {
    'use strict';

    var autoOpen=1;//1为自动打开任务页面;改为0则不打开任务页面

    if(/You need to be logged in to perform all tasks|Please login to see the tasks/gim.test(document.getElementsByTagName("body")[0].innerText)){
        window.location.href="/login";
        return 0;
    }
    var url=window.location.href;
    var bg=/bananagiveaway/gim.test(url)?"background-color:#71c61d;":"";
    var height=/grabfreegame/gim.test(url)?96:(/bananagiveaway/gim.test(url)?110:(/gamezito/gim.test(url)?125:(/gamecode/gim.test(url)?30:40)));
    var game=url.replace(/https?:\/\/(www)?(marvelousga|dupedornot|gamezito|gamecode).(com|win)\/giveaway\/|/,"");

    GM_addStyle(`
#doTaskDiv{position:fixed;right:80px;top:${height}px;width:85px;z-index: 99999999999;}
#info{max-height:352px;overflow-y:auto;padding:0 !important}
#exInfo{position:fixed;right:50px;bottom:10px;max-width:600px;max-height:400px;z-index: 99999999999;display:none;background-color:#fff;padding:1.5rem}
.infos{position:absolute;top:0px;left:0px;background-color:#757d81;border-radius: 3px !important;padding: 0px 2px !important;width:20px;height:20px}
#shouqi{font-weight:900;color:#00e5ff}
#doTask{width:145px;height:40px;${bg}}
#Verify{width:145px;height:40px;${bg}}
#Remove{width:145px;height:40px;${bg}}
#fixed-banana,cloudflare-app{display:none !important}
`);

    var div=document.createElement("div");
    div.setAttribute("id", "doTaskDiv");
    div.setAttribute("class", "card-content");
    div.innerHTML=`<button id="doTask" class="btn btn-round auto-task btn-theme btn-outline-dark btn-min-width mr-1 mb-1" title="一键做任务+验证">FuckTask</button>
<button id="Verify" class="btn btn-round auto-task btn-theme btn-outline-dark btn-min-width mr-1 mb-1" title="一键验证">Verify</button>
<button id="Remove" class="btn btn-round auto-task btn-theme btn-outline-dark btn-min-width mr-1 mb-1" title="一键退组,取关">Remove</button>`;
    var div3=document.createElement("div");
    div3.setAttribute("id", "exInfo");
    var div2=document.createElement("div");
    div2.setAttribute("id", "info");
    div2.setAttribute("class", "card-body card");
    //div2.setAttribute("style", "position:fixed;right:50px;bottom:10px;max-width:600px;max-height:400px;overflow-y:auto;z-index: 99999999999;display:none");
    div3.innerHTML=`<span class="infos"><a id="shouqi" class="zhankai" href="javascript:;"" title="收起">↘</a></span>`;
    document.getElementsByTagName("body")[0].appendChild(div);
    div3.appendChild(div2);
    document.getElementsByTagName("body")[0].appendChild(div3);
    document.getElementById("shouqi").onclick=function(e){
        e=document.getElementById("shouqi").className=="zhankai"?["20px","↖","展开","shouqi","none"]:["","↘","收起","zhankai","block"];
        div3.style.width=e[0];
        div3.style.height=e[0];
        document.getElementById("shouqi").innerText=e[1];
        document.getElementById("shouqi").setAttribute("title", e[2]);
        document.getElementById("shouqi").setAttribute("class", e[3]);
        div2.style.display=e[4];
    }

    if(/marvelousga|dupedornot|gamezito/.test(url)){//marvelousga,dupedornot,gamezito领key

        if($("body").text().match(/THIS GIVEAWAY IS CLOSED FOR THE MOMENT/gim)!=null){
            if(confirm("此页面已经没有key了,是否关闭?")){
                window.close();
            }
        }

        $('cloudflare-app[app="welcome-bar"]').remove();
        var w=0;
        banNewBlock();
        marvelousga();

        //防止419
        function token(){
            var btn=document.getElementsByTagName("button");
            for(var j=0;j<btn.length;j++){
                if(/task/gim.test(btn[j].id)&&btn[j].id!="doTask"){
                    btn[j].removeAttribute("disabled");
                    btn[j].click();
                    return 1;
                }
            }
        }

        //marvelousga,dupedornot,gamezito浏览页面任务
        function finTask(taskId,e,text,task){
            var p=info("card-text monospace","",`开始任务${taskId}:${text}...`);
            $.ajax({
                type: "post",
                url: task?"/ajax/verifyTasks/webpage/clickedLink":"/ajax/verifyTasks/video/finished",
                datatype: "json",
                data:{
                    giveaway_slug: game,
                    giveaway_task_id: taskId
                },
                crossDomain:true,
                xhrFields: {
                    withCredentials: true
                },
                success: function (data) {
                    if(data.status==1){
                        document.getElementById((task?"task_webpage_visit_":"task_video_watched_")+taskId).innerText="OK";
                        p.innerHTML+="<font style='color:green'>OK!</font>";
                    }else{
                        var msg=data.message||"ERROR";
                        p.innerHTML+=`<font style='color:red'>${msg}!</font>`;
                    }
                    e===w&&(getId());
                },
                error:function(jqXHR, textStatus, errorThrown){
                    p.innerHTML+=`<font style='color:red'>${textStatus}:${jqXHR.status}-${errorThrown}</font>`;
                    e===w&&(getId());
                }
            });
        }

        //marvelousga,dupedornot,gamezito获取任务id
        function getId(task_id=[],api_id=[],btn_id=[],p_id=[]){
            var btn=document.getElementsByTagName("button");
            for(var i=0;i<btn.length;i++){
                var btnId=btn[i].id;
                if(/task_[\w\W]*[\d]*/i.test(btnId)&&!/verified/i.test(btn[i].innerText)){
                    var tskid=btnId.replace(/task_|_[\d]+/gim,"");
                    tskid=tskid.replace("_","/");
                    api_id.push(tskid);
                    task_id.push(btn[i].id.match(/[\d]+/)[0]);
                    btn_id.push(btnId);
                    /https?:\/\/gamezito.com\/giveaway\/[\w\W]*/.test(url)?p_id.push(btn[i].parentNode.parentNode.getElementsByTagName("h3")[0].innerHTML.replace(/id\=\"[\w\W]*?\"/i,"")):p_id.push(btn[i].parentNode.getElementsByTagName("p")[0].innerHTML.replace(/id\=\"[\w\W]*?\"/i,""));
                }
            }
            if(task_id.length>0&&api_id.length>0&&btn_id.length>0&&p_id.length>0){
                verify(task_id,api_id,btn_id,p_id,0);
            }else if(task_id.length==0&&api_id.length==0&&btn_id.length==0&&p_id.length==0){
                info("card-text monospace","color:green",`所有任务验证完成!`);
                getKey();
            }
        }

        //marvelousga,dupedornot,gamezito验证任务
        function verify(task_id,api_id,btn_id,p_id,e,v=0){
            if(/visit[\w\W]*?webpage/gim.test(p_id[e])&&v==1){
                e++;
                verify(task_id,api_id,btn_id,p_id,e,v);
                return;
            }else{
                if(/visit[\w\W]*?webpage/gim.test(p_id[e])&&v!=1){
                    v=1;
                }
                var p=info("card-text monospace","",`验证任务${task_id[e]}:${p_id[e]}...`);
                if(/Join[\w\W]*?in Steam/i.test(p_id[e].innerText)){
                    document.getElementById(btn_id[e]).removeAttribute("disabled");
                    document.getElementById(btn_id[e]).click();
                }
                $.ajax({
                    type: "post",
                    url: "/ajax/verifyTasks/"+api_id[e],
                    datatype: "json",
                    data:{
                        giveaway_slug: game,
                        giveaway_task_id: task_id[e]
                    },
                    crossDomain:true,
                    xhrFields: {
                        withCredentials: true
                    },
                    success: function (data) {
                        if(data.status==1){
                            document.getElementById(btn_id[e]).innerText="VERIFIED";
                            p.innerHTML+="<font style='color:green'>OK!</font>--<font style='color:blue'>"+data.percentageNanoBar+"%</font>";
                        }else{
                            document.getElementById(btn_id[e]).innerText="ERROR!";
                            document.getElementById(btn_id[e]).style.color="red";
                            autoOpen==1&&(/gamezito/gim.test(url)?document.getElementById(btn_id[e]).parentNode.parentNode.getElementsByTagName("a")[0].click():document.getElementById(btn_id[e]).parentNode.getElementsByTagName("a")[0].click());
                            var msg=data.message||"ERROR";
                            p.innerHTML+=`<font style='color:red'>${msg}!</font>`;
                        }
                        e++;
                        if(data.percentageNanoBar==100||e>=btn_id.length){
                            info("card-text monospace","color:green",`所有任务验证完成!`);
                            getKey();
                        }else{
                            verify(task_id,api_id,btn_id,p_id,e,v);
                        }
                    },
                    error:function(jqXHR, textStatus, errorThrown){
                        document.getElementById(btn_id[e]).innerText="ERROR!";
                        document.getElementById(btn_id[e]).style.color="red";
                        jqXHR.status!=419&&(document.getElementById(btn_id[e]).parentNode.getElementsByTagName("a")[0].click());
                        p.innerHTML+=`<font style='color:red'>${textStatus}:${jqXHR.status}-${errorThrown}</font>`;
                        e++;
                        if(e<btn_id.length){
                            verify(task_id,api_id,btn_id,p_id,e);
                        }else{
                            info("card-text monospace","color:green",`所有任务验证完成!`);
                            getKey();
                        }
                    }
                });
            }
        }

        //marvelousga,dupedornot,gamezito获取steamkey
        function getKey(){
            if(/your[\s]*?key[\w\W]*?[\w\d]{5}(-[\w\d]{5}){2}/gim.test(document.getElementsByTagName("body")[0].innerText)){
                info("card-text monospace","",`你已经领取过key了!`);
                return 0;
            }
            info("card-text monospace","",`请手动完成<a id="google" href="javascript:void(0)">谷歌验证</a>获取key!`);
            document.getElementById("google").onclick=function(){
                document.getElementById("get_key_container").scrollIntoView();
                document.getElementById("get_key_container").getElementsByClassName("card-body")[0].style.backgroundColor="red";
                setTimeout(function(){document.getElementById("get_key_container").getElementsByClassName("card-body")[0].style.backgroundColor=""},600);
            };
            document.getElementById("get_key_container").style.display="block";
            document.getElementById("get_key_container").scrollIntoView();
            document.getElementById("get_key_container").getElementsByClassName("card-body")[0].style.backgroundColor="red";
            setTimeout(function(){document.getElementById("get_key_container").getElementsByClassName("card-body")[0].style.backgroundColor=""},600);
        }

        //marvelousga,dupedornot,gamezito按钮定义
        function marvelousga(){
            document.getElementById("doTask").onclick=function(){
                document.getElementById("exInfo").style.display="block";
                $('button>span:contains("Join ")').click();
                $('button>span:contains("Follow ")').click();
                info("card-text monospace","",`正在做加组、关注等任务(此功能需要<a href="https://greatest.deepsurf.us/zh-CN/scripts/34764-giveaway-helper" target="_blank">Giveaway Helper脚本</a>,没有则自动跳过此步骤),请稍候!`);
                doTask(function(){
                    w=0;
                    var crsf=token();
                    if(crsf===1){
                        if($("video").length>0){
                            var videoDiv=$("video").parent().parent().parent().parent();
                            videoDiv.find("button.btn-dark")[0].id.replace(/task_video_watched_/,"");
                            w++;
                            finTask(videoDiv.find("button.btn-dark")[0].id.replace(/task_video_watched_/,""),"","Watch this video",0);
                        }
                        var a=document.getElementsByTagName("a");
                        var taskId,text;
                        for(var i=0;i<a.length;i++){
                            var parent=a[i].parentNode.parentNode;
                            if(a[i].innerText==="this"&&/task_(webpage_clickedLink|video_watched)_[\d]*/.test(a[i].id)&&!/verified/i.test(parent.getElementsByTagName("button")[0].innerText)){
                                taskId=a[i].id.replace(/task_webpage_clickedLink_|task_video_watched_/,"");
                                text=a[i].parentNode.innerHTML.replace(/id\=\"[\w\W]*?\"/i,"");
                                w++;
                                finTask(taskId,w,text,1);
                            }
                        }
                        w==0&&(getId());
                    }
                },new Date().getTime(),($('button>span:contains("Join ")').length+$('button>span:contains("Follow ")').length)*3);
            };
            document.getElementById("Verify").onclick=function(){
                document.getElementById("exInfo").style.display="block";
                var crsf=token();
                crsf===1&&(getId());
            };
        }

    }

    //gamecode领key
    if(/gamecode/.test(url)){

        if($("body").text().match(/THIS GIVEAWAY IS CLOSED FOR THE MOMENT/gim)!=null){
            if(confirm("此页面已经没有key了,是否关闭?")){
                window.close();
            }
        }

        banNewBlock();

        //gamecode按钮定义
        document.getElementById("doTask").onclick=function(){
            document.getElementById("exInfo").style.display="block";
            $('button>span:contains("Join ")').click();
            $('button>span:contains("Follow ")').click();
            info("card-text monospace","",`正在做加组、关注等任务(此功能需要<a href="https://greatest.deepsurf.us/zh-CN/scripts/34764-giveaway-helper" target="_blank">Giveaway Helper脚本</a>,没有则自动跳过此步骤),请稍候!`);
            doTask(gamecode_task,new Date().getTime(),($('button>span:contains("Join ")').length+$('button>span:contains("Follow ")').length)*3);
        };
        document.getElementById("Verify").onclick=function(){
            document.getElementById("exInfo").style.display="block";
            gamecode_task();
        };

        //gamecode做任务
        function gamecode_task(){
            var gamecode_btn=document.getElementsByClassName("btn btn-theme");
            info("card-title","color: #f38288",`正在自动做任务,任务完成后请手动完成谷歌验证领取key!`);
            for(var i=0;i<gamecode_btn.length;i++){
                if(!/auto-task/gim.test(gamecode_btn[i].className)&&!/verified/gim.test(gamecode_btn[i].innerText)){
                    gamecode_btn[i].removeAttribute("disabled");
                    gamecode_btn[i].click();
                }
            }
        }

    }


    if(/grabfreegame|bananagiveaway/.test(url)){//grabfreegame,bananagiveaway领key

        if($("div.left").text().match(/[\d]+/gim)[0]==0){
            if(confirm("此页面已经没有key了,是否关闭?")){
                window.close();
            }
        }
        //自动登录
        if(/log.*?in/gim.test($(".user").text())){
            location.href=$(".user").children("a.steam")[0].href;
        }

        //grabfreegame,bananagiveaway按钮定义
        document.getElementById("doTask").onclick=function(){
            isBanana();
            document.getElementById("exInfo").style.display="block";
            $('button>span:contains("Join ")').click();
            $('button>span:contains("Follow ")').click();
            info("card-text monospace","",`正在做加组、关注等任务(此功能需要<a href="https://greatest.deepsurf.us/zh-CN/scripts/34764-giveaway-helper" target="_blank">Giveaway Helper脚本</a>),请稍候!`);
            doTask(getBtn("d"),new Date().getTime(),($('button>span:contains("Join ")').length+$('button>span:contains("Follow ")').length)*3);
        };
        document.getElementById("Verify").onclick=function(){
            document.getElementById("exInfo").style.display="block";
            getBtn("v");
        };
        div2.setAttribute("style", `right:50px;bottom:10px;z-index: 99999999999;font-family: Menlo,Monaco,Consolas,"Courier New",monospace;font-size: 20px;background: #fff;color: #f05f00;border: 3px solid #ababab;order-radius: 8px;display: inline-block;`);

        //grabfreegame,bananagiveaway检测是否需要香蕉
        function isBanana(){
            var p=document.getElementsByTagName("p");
            for (var i=0;i<p.length;i++){
                if(/Collect.*?[\d]+? banana/gim.test(p[i].innerText)){
                    alert("此key需要收集"+p[i].innerText.match(/[\d]+/gim)[0]+"个香蕉!");
                    return 0;
                }
            }
        }

        //grabfreegame,bananagiveaway获取任务id
        function getBtn(e,verify_btn=[],do_btn=[]){
            var btn=document.getElementsByTagName("button");
            for(var i=0;i<btn.length;i++){
                /verify/i.test(btn[i].innerHTML)&&btn[i].id!="Verify"&&(verify_btn.push(btn[i].onclick.toString().match(/\/\/www.(grabfreegame|bananagiveaway).com\/giveaway\/[\w\W]*?\?verify\=[\d]+/)[0]));
                /to[\w\W]*?do[\w\W]*/i.test(btn[i].innerHTML)&&btn[i].onclick&&(do_btn.push(btn[i].onclick.toString().match(/\/\/www.(grabfreegame|bananagiveaway).com\/giveaway\/[\w\W]*?\?q\=[\d]+/)[0]));
            }
            do_btn.length>0&&e==="d"&&(gbDoTask(0,verify_btn,do_btn));
            verify_btn.length>0&&e==="v"&&(bananaVerify(0,verify_btn));
        }

        //grabfreegame,bananagiveaway做任务
        function gbDoTask(e,verify_btn,do_btn){
            var taskId=do_btn[e].match(/\?q\=[\d]+/)[0];
            taskId=taskId.replace("?q=","");
            var p=info("code","",`执行任务:${taskId}...`);
            $.ajax({
                type: "get",
                url: do_btn[e],
                timeout:"10000",
                datatype: "json",
                crossDomain:true,
                xhrFields: {
                    withCredentials: true
                },
                complete: function (data) {
                    p.innerHTML+="<font style='color:green'>OK!</font>";
                    e++;
                    e<do_btn.length?gbDoTask(e,verify_btn,do_btn):(verify_btn.length>0&&(bananaVerify(0,verify_btn)));
                }
            });
        }

        //grabfreegame,bananagiveaway验证任务
        function bananaVerify(e,verify_btn){
            var taskId=verify_btn[e].match(/\?verify\=[\d]+/)[0];
            taskId=taskId.replace("?verify=","");
            var p=info("code","",`验证任务:${taskId}...`);
            $.ajax({
                type: "get",
                url: verify_btn[e],
                timeout:"10000",
                datatype: "json",
                crossDomain:true,
                xhrFields: {
                    withCredentials: true
                },
                complete: function (data) {
                    p.innerHTML+="<font style='color:green'>OK!</font>";
                    e++;
                    e<verify_btn.length?bananaVerify(e,verify_btn):bananaRe();
                }
            });
        }

        //grabfreegame,bananagiveaway刷新网页
        function bananaRe(){
            var button;
            var li=document.getElementsByClassName("tasks")[0].getElementsByTagName("li");
            for(var i=0;i<li.length;i++){
                if(/Subscribe.*?our.*?channel/gim.test(li[i].innerText)&&!/Completed/gim.test(li[i].innerText)){
                    button=li[i].getElementsByTagName("button");
                    button[1].removeAttribute("disabled");
                    button[1].click();
                    return 0;
                }else if(/Share.*?this.*?giveaway.*?on.*?Twitter/gim.test(li[i].innerText)&&!/Completed/gim.test(li[i].innerText)){
                    button=li[i].getElementsByTagName("button");
                    button[0].click();
                    button[1].removeAttribute("disabled");
                    button[1].click();
                    return 0;
                }
            }
            window.location.href=url;
        }
    }


    if(/whosgamingnow/.test(url)){//wgn领key

        if($("body").text().match(/out of keys/gim)!=null){
            if(confirm("此页面已经没有key了,是否关闭?")){
                window.close();
            }
        }

        $("div.text-center").map(function(i,e){/Please login to enter/gim.test($(e).text())&&(location.href="?login")});

        //wgn按钮定义
        document.getElementById("doTask").onclick=function(){
            $('button>span:contains("Join ")').click();
            $('button>span:contains("Follow ")').click();
            doTask(wsn_enter,new Date().getTime(),($('button>span:contains("Join ")').length+$('button>span:contains("Follow ")').length)*3);
        };
        document.getElementById("Verify").onclick=function(){
            alert("请手动完成加组任务!");
            document.getElementById("exInfo").style.display="block";
            wsn_enter();
        };
        btn_class("btn btn-primary");

        //wgn获取key
        function wsn_enter(){
            $.ajax({
                type: "post",
                url: url,
                datatype: "json",
                data:{
                    submit: "Enter",
                },
                crossDomain:true,
                xhrFields: {
                    withCredentials: true
                },
                success: function (data) {
                    if(/<h3>Steam key:<\/h3><p><strong class=\"SteamKey\">[\w\d]{5}(-[\w\W]{5}){2}<\/strong><\/p>/i.test(data)){
                        var key=data.match(/<h3>Steam key:<\/h3><p><strong class=\"SteamKey\">[\w\d]{5}(-[\w\W]{5}){2}<\/strong><\/p>/i)[0];
                        key=key.replace(/(<h3>Steam key:<\/h3><p><strong class="SteamKey">)|(<\/strong><\/p>)/gi,"");
                        data=data.replace(key,`<a href=https://store.steampowered.com/account/registerkey?key=${key} title="点击激活">${key}</a>`);
                    }
                    document.write(data);
                },
                error:function(jqXHR, textStatus, errorThrown){
                    alert(textStatus+":"+jqXHR.status+"-"+errorThrown);
                }
            });
        }
    }

    if(/gamehag/.test(url)){//gamehag领key

        if($("div.strong").eq(0).text()==0){
            $("div.strong").eq(0).parent()[0].style.backgroundColor="red";
            if(confirm("此页面已经没有key了,是否关闭?")){
                window.close();
            }
        }else if($("div.strong").eq(1).text()==0){
            $("div.strong").eq(1).parent()[0].style.backgroundColor="red";
            if(confirm("此领key页面已过期,是否关闭?")){
                window.close();
            }
        }

        var success,error,a,survey=0;;
        btn_class("btn btn-primary btn-sm box-collapse-verify");
        $("#doTaskDiv").css({"right": "340px","top": "100px"});
        $("#doTask").width("105px");
        $("#Verify").width("105px");
        $("#Remove").width("105px");
        GM_addStyle(`.misty-notification{display:none !important}`);

        //gamehag按钮定义
        document.getElementById("doTask").onclick=function(){
            document.getElementById("exInfo").style.display="block";
            $('button>span:contains("Join ")').click();
            $('button>span:contains("Follow ")').click();
            info("card-text monospace","",`正在做加组、关注等任务(此功能需要<a href="https://greatest.deepsurf.us/zh-CN/scripts/34764-giveaway-helper" target="_blank">Giveaway Helper脚本</a>,没有则自动跳过此步骤),请稍候!`);
            doTask(function(){
                success=0;
                error=0;
                survey=$("a.giveaway-survey").length>0&&(/\+1/gim.test($("a.giveaway-survey").parent().parent().next().text()))?1:0;
                a=0;
                var p=info("card-text monospace","",`正在做任务...`);
                $("button[data-id]").length>0?gamehag_task(p):gamehag_suryey(0,p);
            },new Date().getTime(),($('button>span:contains("Join ")').length+$('button>span:contains("Follow ")').length)*3);
        };
        document.getElementById("Verify").onclick=function(){
            document.getElementById("exInfo").style.display="block";
            success=0;
            error=0;
            survey=$("a.giveaway-survey").length>0&&(/\+1/gim.test($("a.giveaway-survey").parent().parent().next().text()))?1:0;
            $("button[data-id]").length>0&&($("button[data-id]").map(function(i,e){gamehag_verify(e)}));
            survey==1&&(gamehag_verify($("a.giveaway-survey")[0],"data-task_id"));
        };
        document.getElementById("getkey").onclick=function(){
            GM_addStyle(`.misty-notification{display:block !important}`);
        };

        //开始执行
        function gamehag_task(p){
            $("button[data-id]").map(function(i,e){
                httpSend({
                    mode:"gm",
                    url:'https://gamehag.com/giveaway/click/'+$(e).attr("data-id"),
                    type:'get',
                    headers:{'x-csrf-token': $('meta[name="csrf-token"]').attr('content')},
                    callback:function(){
                        a++;
                        a==$("button[data-id]").length&&($.ajax({url:'https://gamehag.com/games/war-thunder/play',type:'get',headers:{'x-csrf-token': $('meta[name="csrf-token"]').attr('content')},complete:function(){gamehag_start(p)}}));
                    }
                });
            });
        }

        //开始执行
        function gamehag_start(p){
            p.innerHTML+=`<font style='color:green'>OK!</font>`;
            gamehag_suryey();
            $("button[data-id]").map(function(i,e){gamehag_verify(e)});
        }

        //gamehag问卷调查任务
        function gamehag_suryey(e=1,p=0){
            p!=0&&(p.innerHTML+=`<font style='color:green'>OK!</font>`);
            if(survey==1){
                info("card-text monospace","",`正在做问卷调查任务,如果没有此任务请忽视!`);
                jQuery.ajax({url:'https://gamehag.com/giveaway/click/'+$("a.giveaway-survey").attr("data-task_id"),type:'get',headers:{'x-csrf-token': $('meta[name="csrf-token"]').attr('content')}});
                gamehag_verify($("a.giveaway-survey")[0],"data-task_id");
            }else if(e==0){
                info("","color:green",`所有任务验证完成,请手动完成验证领取key!`);
            }
        }

        //gamehag验证任务
        function gamehag_verify(e,s="data-id"){
            if(/\+1/gim.test($(e).parent().parent().next().text())){
                var p=info("card-text monospace","",`验证任务:${$(e).parent().parent().find("a.tooltip-trigger").clone().html()}...`);
                $.ajax({
                    url:'https://gamehag.com/api/v1/giveaway/sendtask',
                    type:'post',
                    data:'task_id='+$(e).attr(s),
                    headers:{'x-csrf-token': $('meta[name="csrf-token"]').attr('content')},
                    complete:function(XMLHttpRequest, textStatus){
                        if(XMLHttpRequest.status==429||/timeout/gim.test(textStatus)){
                            $(p).remove();
                            gamehag_verify(e);
                        }else{
                            var data=eval('('+XMLHttpRequest.responseText+')');
                            data.status=="success"?success++:error++;
                            var color=data.status=="success"?"green":"red";
                            p.innerHTML+=`<font style='color:${color}'>${data.message}!</font>`;
                            data.status=="success"&&($(e).parent().parent().parent().find("div.task-reward.tooltip-trigger").html(`<svg class="nc-icon nc-align-to-text grid-24 glyph"><use xlink:href="/icons/nci-fill.svg#nc-icon-check-simple"></use></svg>`));
                            if(/The task has not been completed/gim.test(data.message)&&autoOpen==1){
                                window.open('https://gamehag.com/giveaway/click/'+$(e).attr("data-id"),"_blank");
                            }
                        }
                        if(success+error==$("button[data-id]").length+survey){
                            if(error>0){
                                info("","color:red",`所有任务验证完成,${error}个任务验证失败!`);
                            }else{
                                info("","color:green",`所有任务验证完成,请手动完成验证领取key!`);
                            }
                            btn_class("btn btn-primary btn-sm box-collapse-verify");
                        }
                    }
                });
            }else{
                success++;
                if(success+error==$("button[data-id]").length+$("a.giveaway-survey").length){
                    if(error>0){
                        info("","color:red",`所有任务验证完成,${error}个任务验证失败!`);
                    }else{
                        info("","color:green",`所有任务验证完成,请手动完成验证领取key!`);
                    }
                    btn_class("btn btn-primary btn-sm box-collapse-verify");
                }
            }
        }


    }

    if(/giveawayhopper/.test(url)){//giveawayhopper领key

        btn_class("btn btn-outline-primary");

        //giveawayhopper按钮定义
        document.getElementById("doTask").onclick=function(){
            alert("点击确定后页面可能会卡一段时间,属于正常现象!");
            $('button>span:contains("Join ")').click();
            $('button>span:contains("Follow ")').click();
            doTask(function(){
                var ghBtn=$(".task-item-btn-verify");
                for(var i=0;i<ghBtn.length;i++){
                    ghBtn.eq(i).text("DOING");
                    eval(ghBtn.eq(i).attr("onclick"));
                }
            },new Date().getTime(),($('button>span:contains("Join ")').length+$('button>span:contains("Follow ")').length)*3);
        };
        document.getElementById("Verify").onclick=function(){
            alert("点击确定后页面可能会卡一段时间,属于正常现象!");
            var ghBtn=$(".task-item-btn-verify");
            for(var i=0;i<ghBtn.length;i++){
                ghBtn.eq(i).text("DOING");
                eval(ghBtn.eq(i).attr("onclick"));
            }
        };
    }

    if(/giveaway.su/.test(url)){//giveaway.su领key

        if($(".giveaway-ended").length>0){
            if(confirm("此页面已经没有key了,是否关闭?")){
                window.close();
            }
        }

        btn_class("btn btn-success btn-sm");

        //giveaway.su按钮定义
        document.getElementById("doTask").onclick=function(){
            if($("a.pull-right").length>0&&$("a.pull-right").parent().parent()[0].className!="hidden"){
                $("a.pull-right")[0].click();
                return false;
            }
            $('tr[data-action-id="adjs"]').remove();
            $('a[data-type="link"]').attr("href","javascript:void(0)");
            $('a[data-type="link"]').find("i").click();
            $("a.btn-success").removeClass("disabled");
            $('button>span:contains("Join ")').click();
            $('button>span:contains("Follow ")').click();
            doTask(function(){giveaway_su_verify($("i.glyphicon-refresh"),0)},new Date().getTime(),($('button>span:contains("Join ")').length+$('button>span:contains("Follow ")').length)*3);
        };
        document.getElementById("Verify").onclick=function(){
            $('tr[data-action-id="adjs"]').remove();
            $('a[data-type="link"]').attr("href","javascript:void(0)");
            $('a[data-type="link"]').find("i").click();
            $("a.btn-success").removeClass("disabled");
            giveaway_su_verify($("i.glyphicon-refresh"),0);
        };

        function giveaway_su_verify(vBtn,i){
            if(vBtn.length==0){
                $("a.btn-success").click();
            }else{
                if(!/glyphicon-ok/gim.test(vBtn[i].className)){
                    vBtn.eq(i).parent().attr("disabled");
                    vBtn.eq(i).parent().removeAttr("disabled");
                    vBtn.eq(i).parent().click();
                }
                i++;
                setTimeout(function(){i<vBtn.length?giveaway_su_verify(vBtn,i):giveaway_su_verify($("i.glyphicon-refresh"),0)},2000);
            }
        }
    }


    if(/gleam/.test(url)){//gleam领key

        btn_class("btn btn-primary")

        //gleam按钮定义
        document.getElementById("doTask").onclick=function(){
            $('button>span:contains("Join ")').click();
            $('button>span:contains("Follow ")').click();
            doTask(function(){
                gleam_do_task($("a.enter-link"),0);
            },new Date().getTime(),($('button>span:contains("Join ")').length+$('button>span:contains("Follow ")').length)*3);
        };
        document.getElementById("Verify").onclick=function(){
            gleam_do_task($("a.enter-link"),0);
        };

        function gleam_do_task(a,i){
            if(i<a.length){
                if(!/check/gim.test($("a.enter-link").eq(i).children(".tally").find("i.fa")[0].className)){
                    a[i].click();
                    setTimeout(function(){
                        if(!/default/.test(a[i].className)){
                            var btn=a.eq(i).next().find(".btn-primary");
                            var link=a.eq(i).next().find("a.btn-info.btn-embossed");
                            var href=link.attr("href");
                            link.attr("href","javascript:void(0)");
                            link[0]!=undefined&&(link[0].click());
                            link.attr("href",href);
                            if(/[\d]/i.test(btn.text())){
                                gleam_time(a,btn.text(),i,btn);
                            }else{
                                btn[0].click();
                                i++;
                                gleam_do_task(a,i);
                            }
                        }else{
                            i++;
                            gleam_do_task(a,i);
                        }
                    },1000);
                }else{
                    i++;
                    gleam_do_task(a,i);
                }
            }
        }
        function gleam_time(a,t,i,b){
            var time=t.match(/\-?[\d]+/gim)[0];
            if(time>0){
                window.open("https://www.hclonely.cn/time.html?time="+time,"_blank");
                var hidden=setInterval(function(){
                    if(!document.hidden){
                        clearInterval(hidden);
                        setTimeout(function(){
                            b[0].click();
                            i++;
                            gleam_do_task(a,i);
                        },1000);
                    }
                },1000);
            }else{
                b[0].click();
                i++;
                gleam_do_task(a,i);
            }
        }
    }

    if(/gamehunt/.test(url)){//gamehunt领key
        if($("a.nav-link.btn-outline-secondary").length>0){
            location.href="/auth/vkontakte";
        }

        btn_class("btn btn-outline-secondary btn-sm")

        //gamehunt按钮定义
        document.getElementById("doTask").onclick=gamehunt;
        document.getElementById("Verify").onclick=gamehunt;
        function gamehunt(){
            document.getElementById("exInfo").style.display="block";
            info("","","若关闭自动打开任务页面功能则此功能与点击get key按钮相同!");
            httpSend({
                mode:"jq",
                url:"https://gamehunt.net/end/distribution",
                type:"post",
                timeout:15000,
                data:{id:location.href.match(/[\d]+/gim)[0]},
                callback:function(data){
                    if(data.status==200){
                        if(data.json.err=="err"&&data.json.res.length>0){
                            data.json.res.map(function(e){
                                $("#"+e).css("background-color","red");
                                autoOpen=1&&(window.open($("#"+e).attr("href"),"_blank"));
                            });
                        }else if(data.json.err=="err01"){
                            info("","color:red","I thought about it and I will not give you a key, since you already received it!");
                        }else if(data.json.err=="0"){
                            info("","color:green","Steam Key:"+data.json.res);
                        }else{
                            info("","color:red","未知错误码:"+data.json.err);
                            document.getElementById("go_geme").click();
                        }
                    }
                }
            });
        }
    }

    //if(/https?:\/\/www.chubbykeys.com\/[\w\W]*/.test(url)){//chubbykeys领key
    /*
        if($("button.btn-lg.hvr-grow-rotate").length>0){
            location.href="?login";
           }

        btn_class("btn btn-outline-primary")

        //chubbykeys按钮定义
        document.getElementById("doTask").onclick=function(){
            $('button>span:contains("Join ")').click();
            $('button>span:contains("Follow ")').click();
            doTask(function(){
            },new Date().getTime(),($('button>span:contains("Join ")').length+$('button>span:contains("Follow ")').length)*3);
        };
        document.getElementById("Verify").onclick=function(){
        };
    }
    */

    //做加组、关注等任务
    function doTask(callback,time,limitTime){
        $('button>span:contains("Join ")').length+$('button>span:contains("Follow ")').length==0||new Date().getTime()-time>limitTime*1000?callback():setTimeout(function(){doTask(callback,time,limitTime)},300);
    }

    //做退组、取关等任务
    document.getElementById("Remove").onclick=function(){
        document.getElementById("exInfo").style.display="block";
        info("","",`正在退组、取关,请稍候!`);
        $('button>span:contains("Leave ")').click();
        $('button>span:contains("Unfollow ")').click();
    };

    //显示信息
    function info(cText,sText,iText){
        var p=document.createElement("p");
        p.setAttribute("class", cText);
        p.setAttribute("style", sText);
        p.innerHTML=iText;
        div2.appendChild(p);
        p.scrollIntoView();
        return p;
    }

    //button样式
    function btn_class(e){
        var task_btn=document.getElementsByClassName("auto-task");
        for(var tb=0;tb<task_btn.length;tb++){
            task_btn[tb].setAttribute("class", e+" auto-task");
        }
    }

    //防止弹出新窗口
    function banNewBlock(){
        var d=new Date();
        var cookiename = "haveVisited1";
        //document.cookie = "haveVisited=1; path=/";
        //document.cookie = "lastVisit=" + (d.getUTCMonth()+1) +"/"+ d.getUTCDate() + "/" + d.getUTCFullYear() + "; path=/";
        document.cookie = cookiename + "=1; path=/";
        document.cookie = cookiename + "=" + (d.getUTCMonth()+1) + "/" + d.getUTCDate() + "/" + d.getUTCFullYear() + "; path=/";
    }
})();