自动任务

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

Per 08-12-2018. Zie de nieuwste versie.

Voor het installeren van scripts heb je een extensie nodig, zoals Tampermonkey, Greasemonkey of Violentmonkey.

Voor het installeren van scripts heb je een extensie nodig, zoals Tampermonkey of Violentmonkey.

Voor het installeren van scripts heb je een extensie nodig, zoals Tampermonkey of Violentmonkey.

Voor het installeren van scripts heb je een extensie nodig, zoals Tampermonkey of Userscripts.

Voor het installeren van scripts heb je een extensie nodig, zoals {tampermonkey_link:Tampermonkey}.

Voor het installeren van scripts heb je een gebruikersscriptbeheerder nodig.

(Ik heb al een user script manager, laat me het downloaden!)

Voor het installeren van gebruikersstijlen heb je een extensie nodig, zoals {stylus_link:Stylus}.

Voor het installeren van gebruikersstijlen heb je een extensie nodig, zoals {stylus_link:Stylus}.

Voor het installeren van gebruikersstijlen heb je een extensie nodig, zoals {stylus_link:Stylus}.

Voor het installeren van gebruikersstijlen heb je een gebruikersstijlbeheerder nodig.

Voor het installeren van gebruikersstijlen heb je een gebruikersstijlbeheerder nodig.

Voor het installeren van gebruikersstijlen heb je een gebruikersstijlbeheerder nodig.

(Ik heb al een beheerder - laat me doorgaan met de installatie!)

// ==UserScript==
// @name         自动任务
// @namespace    http://tampermonkey.net/
// @version      0.8.9
// @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/*
// @run-at       document-end
// @grant        GM_addStyle
// ==/UserScript==

(function() {
    'use strict';

    //var autoRedeem=1;//1为自动激活;改为0则不自动激活//此功能已不可用
    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}}
#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">FuckTask</button>
<button id="Verify" class="btn btn-round auto-task btn-theme btn-outline-dark btn-min-width mr-1 mb-1">Verify</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(/https?:\/\/(marvelousga|dupedornot|gamezito).com.*/.test(url)){//marvelousga,dupedornot,gamezito领key

        $('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/watched",
                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";
                            /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").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";
                w=0;
                var crsf=token();
                if(crsf===1){
                    var a=document.getElementsByTagName("a");
                    var taskId,text,task;
                    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)){
                            task=/task_webpage_clickedLink_[\d]*/.test(a[i].id);
                            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,task);
                        }
                    }
                    w==0&&(getId());
                }
            };
            document.getElementById("Verify").onclick=function(){
                document.getElementById("exInfo").style.display="block";
                var crsf=token();
                crsf===1&&(getId());
            };
        }

    }

    //gamecode领key
    if(/https?:\/\/gamecode.win\/giveaway\/[\w\W]*/.test(url)){

        banNewBlock();

        //gamecode按钮定义
        document.getElementById("doTask").onclick=function(){
            document.getElementById("exInfo").style.display="block";
            gamecode_task();
        };
        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(/https?:\/\/www.(grabfreegame|bananagiveaway).com\/giveaway\/[\w\W]*/.test(url)){//grabfreegame,bananagiveaway领key

        //自动登录
        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";
            getBtn("d");
        };
        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"&&(doTask(0,verify_btn,do_btn));
            verify_btn.length>0&&e==="v"&&(bananaVerify(0,verify_btn));
        }

        //grabfreegame,bananagiveaway做任务
        function doTask(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?doTask(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(/https?:\/\/whosgamingnow.net\/giveaway\/[\w\W]*/.test(url)){//wgn领key

        //wgn按钮定义
        document.getElementById("doTask").onclick=function(){
            document.getElementById("exInfo").style.display="block";
            wsn_enter();
        };
        document.getElementById("Verify").onclick=function(){
            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);
                }
            });
        }
    }

    //显示信息
    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=/";
    }
})();