Greasy Fork

自动任务

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

目前为 2019-01-06 提交的版本。查看 最新版本

// ==UserScript==
// @name         自动任务
// @namespace    http://tampermonkey.net/
// @version      0.10.1
// @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      /https?:\/\/gamehag.com\/.*?giveaway\/.*/
// @include      *://giveawayhopper.com/giveaway/*
// @include      *://giveaway.su/giveaway/view/*
// @include      *://gleam.io/*
// @include      *://gamehunt.net/distribution/*
// @include      *://www.orlygift.com/giveaway*
// @run-at       document-end
// @grant        GM_addStyle
// @grant        GM_xmlhttpRequest
// @require      https://greasyfork.org/scripts/376085-httpsend/code/httpSend.js?version=658478
// @grant        GM_setClipboard
// ==/UserScript==

(function() {
    'use strict';

    try{

        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://greasyfork.org/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://greasyfork.org/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://greasyfork.org/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://greasyfork.org/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(data){
                            httpSend({mode:"gm",url:data.finalUrl,type:'get',headers:{'x-csrf-token': $('meta[name="csrf-token"]').attr('content')}});
                            a++;
                            if(a==$("button[data-id]").length){
                                //$.ajax({url:'https://gamehag.com/news/voting',type:'get',headers:{'x-csrf-token': $('meta[name="csrf-token"]').attr('content')}});
                                $.ajax({url:'https://gamehag.com/games',type:'get',headers:{'x-csrf-token': $('meta[name="csrf-token"]').attr('content')},complete:function(){
                                    $.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","",`正在做问卷调查任务,如果没有此任务请忽视!`);
                    $.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(){
                document.getElementById("exInfo").style.display="block";
                info("","color:yellow",`只会自动做加愿望单和关注鉴赏家任务(需要<a href="https://greasyfork.org/zh-CN/scripts/34764-giveaway-helper" target="_blank">Giveaway Helper脚本</a>,没有则自动跳过此步骤),其他任务需手动完成!`);
                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(){
                document.getElementById("exInfo").style.display="block";
                info("","color:yellow",`只会循环验证任务,未完成的任务需手动完成!`);
                $('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(){
                document.getElementById("exInfo").style.display="block";
                $('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(){
                document.getElementById("exInfo").style.display="block";
                gleam_do_task($("a.enter-link"),0);
            };

            //gleam做任务+验证任务
            function gleam_do_task(a,i,t=0){
                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,t);
                                }
                            }else{
                                i++;
                                gleam_do_task(a,i,t);
                            }
                        },1000);
                    }else{
                        i++;
                        gleam_do_task(a,i,t);
                    }
                }else{
                    t==0?gleam_do_task($("a.enter-link"),0,1):info("","","任务验证完成,若有未完成任务请手动完成!");
                }
            }
            //gleam做有时间限制任务
            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){
                                    $("a.btn-info[id]").css("background-color","#17a2b8");
                                    $("#"+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 if(data.json.err=="02"){
                                info("","color:red","已经没有key了!");
                            }else{
                                info("","color:red","未知错误码:"+data.json.err);
                                document.getElementById("go_geme").click();
                            }
                        }
                    }
                });
            }
        }

        if(/orlygift/.test(url)){//orlygift
            if(/login/gim.test($(".navbar-right").text())){
                location.href="https://www.orlygift.com/steam_connect";
            }

            btn_class("btn btn-block btn-info");

            //防止广告弹窗
            var expireDate = new Date();
            expireDate.setDate(expireDate.getDate() + 7);
            document.cookie='bounceback-visited-user=1;expires='+expireDate+'path=/';

            //orlygift按钮定义
            document.getElementById("doTask").onclick=function(){
                document.getElementById("exInfo").style.display="block";
                info("","color:yellow","安装app和邀请好友任务不会自动完成!");
                var ogTaskId=og_get_id();
                og_do_task(ogTaskId,0);
            }
            document.getElementById("Verify").onclick=function(){
                document.getElementById("exInfo").style.display="block";
                var ogTaskId=og_get_id();
                og_verify(ogTaskId,0);
            }

            //获取任务id
            function og_get_id(){
                var ogTaskBtn=$("button.btn-block.btn-info[id]").not(".ng-hide").not(".auto-task");
                var ogTaskId=[];
                ogTaskBtn.map(function(i,e){!/(install.*?app)|(Invite your friends)/gim.test($(e).parent().parent().text())&&(ogTaskId.push($(e).attr("id").replace("task-","")))});
                return ogTaskId;
            }
            //做任务
            function og_do_task(ogTaskId,i){
                if(i<ogTaskId.length){
                    var p=info("","",`正在做任务${ogTaskId[i]}...`);
                    ga("send", "pageview", "/task/open/" + ogTaskId[i]);
                    var ogTaskType=$("#task-"+ogTaskId[i]).parent().parent().parent().attr("class").replace("item ","");
                    var handleApiCall = function(url) {httpSend({mode:"gm",type:"get",url:url})};
                    switch (ogTaskType) {
                        case "steam_curator":
                        case "steam_group":
                        case "invite":
                        case "link":
                        case "ad2games":
                        case "offertoro":
                        case "greenlight":
                        case "youtube":
                        case "steam_group_invite":
                        case "orlygift_mobile_app":
                        case "orlydealz":
                        case "orlyaccess":
                        case "newsletter":
                            handleApiCall(window.location.origin + "/api/task/open/" + ogTaskId[i]);
                            break;
                    }
                    setTimeout(function(){
                        p.innerHTML+="finished";
                        i++;
                        og_do_task(ogTaskId,i);
                    },Math.floor(Math.random() * 1000));
                }else{
                    og_verify(ogTaskId,0);
                }
            }
            //验证任务
            function og_verify(ogTaskId,i){
                if(i<ogTaskId.length){
                    var p=info("","",`正在验证任务${$("#task-"+ogTaskId[i]).parent().parent().find("h4[ng-show]").text()}...`);
                    ga("send", "pageview", "/task/check/" + ogTaskId[i]);

                    setTimeout(function(){
                        httpSend({
                            mode:"jq",
                            url:"/api/task/check/" + ogTaskId[i],
                            type:"post",
                            callback:function(data){
                                if(data.json.result=="success"){
                                    p.innerHTML+="<font style='color:green'>success!</font>";
                                }else if(data.json.result=="pending"){
                                    p.innerHTML+="<font style='color:yellow'>"+data.json.message+"</font>";
                                }else{
                                    p.innerHTML+="<font style='color:red'>error!</font>";
                                }
                                i++;
                                setTimeout(function(){og_verify(ogTaskId,i)},Math.floor(Math.random() * 1000));
                            }
                        })
                    },Math.floor(Math.random() * 1000));
                }else{
                    location.reload(true);
                }
            }
        }

        //if(/chubbykeys/.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=/";
        }
    }catch(e){
        console.log("自动任务脚本出错: \n"+e.stack);
        confirm("自动任务脚本出错! \n点击确定复制错误信息,或打开控制台查看错误信息!")&&(GM_setClipboard(e.stack)&&(alert("复制成功!")));
    }
})();