// ==UserScript==
// @name 自动任务
// @namespace http://tampermonkey.net/
// @version 0.7.4
// @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.grabfreegame.com/login*
// @include *://www.bananagiveaway.com/login*
// @include *://www.bananagiveaway.com/giveaway/*
// @include *://gamecode.win/login*
// @include *://whosgamingnow.net/login*
// @run-at document-end
// @grant GM_addStyle
// ==/UserScript==
(function() {
'use strict';
var autoRedeem=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 t=0;
var height=/grabfreegame/gim.test(url)?66:(/bananagiveaway/gim.test(url)?110:10);
var game=url.replace(/https?:\/\/(www)?(marvelousga|dupedornot|gamezito|gamecode).(com|win)\/giveaway\/|/,"");
var div=document.createElement("div");
div.setAttribute("id", "doTaskDiv");
GM_addStyle(`#doTaskDiv{position:fixed;right:80px;top:${height}px;width:85px;z-index: 99999999999;}`);
//div.setAttribute("style", `position:fixed;right:80px;top:10px;width:85px;z-index: 99999999999;`);
div.innerHTML=`<button id="doTask" class="btn btn-round auto-task btn-theme" style="width:145px;height:40px;background-color:blue">FuckTask</button>
<button id="Verify" class="btn btn-round auto-task btn-theme" style="width:145px;height:40px;background-color:blue">Verify</button>`;
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;");
document.getElementsByTagName("body")[0].appendChild(div);
document.getElementsByTagName("body")[0].appendChild(div2);
//防止弹出新窗口
window.onload=function(){
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=/";
}
//防止419
function token(){
var a=document.getElementsByTagName("a");
for(var j=0;j<a.length;j++){
if(a[j].parentNode.className==="card-text monospace"){
var href=a[j].href;
a[j].href="javascript:void(0)";
a[j].click();
a[j].href=href;
return 1;
}
}
}
//显示信息
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;
}
//浏览页面任务
function webpage(taskId,e,text){
var p=info("card-text monospace","",`开始任务${taskId}:${text}...`);
$.ajax({
type: "post",
url: "/ajax/verifyTasks/webpage/clickedLink",
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_webpage_visit_"+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===t&&(getId());
},
error:function(jqXHR, textStatus, errorThrown){
p.innerHTML+=`<font style='color:red'>${textStatus}:${jqXHR.status}-${errorThrown}</font>`;
e===t&&(getId());
}
});
}
var task_id=[];
var api_id=[];
var btn_id=[];
var p_id=[];
//获取任务id
function getId(){
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(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();
}
}
//验证任务
function verify(e,v=0){
if(/visit[\w\W]*?webpage/gim.test(p_id[e])&&v==1){
e++;
verify(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();
}
if(/visit[\w\W]*?webpage/.test(p_id[e])&&v==1){
}else{
$.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";
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(e,v);
}
},
error:function(jqXHR, textStatus, errorThrown){
document.getElementById(btn_id[e]).innerText="ERROR!";
document.getElementById(btn_id[e]).style.color="red";
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(e);
}else{
info("card-text monospace","color:green",`所有任务验证完成!`);
getKey();
}
}
});
}
}
//获取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;
}
if(/https?:\/\/gamezito.com\/giveaway\/[\w\W]*/.test(url)){
info("card-text monospace","",`请手动完成谷歌验证获取key!`);
document.getElementById("get_key_container").style.display="block";
document.getElementById("get_key_container").scrollIntoView();
}else{
var p=info("card-text monospace","",`获取key...`);
$.ajax({
type: "post",
url: "/ajax/keys/get/key",
datatype: "json",
data:{
giveaway_slug: game,
},
crossDomain:true,
xhrFields: {
withCredentials: true
},
success: function (data) {
var key=data.key||"";
if(data.status==1&&/[\d\w]{5}(\-[\d\w]{5}){2}/.test(data.key)){
p.innerHTML+="<font style='color:green'>OK!</font>";
info("card-text monospace","",`YOUR KEY : <a href="https://store.steampowered.com/account/registerkey?key=${data.key}" target="_blank">${data.key}</a>`);
autoRedeem==1&&(window.open("https://store.steampowered.com/account/registerkey?key="+data.key,"_blank"));
}else{
var msg=data.message||"ERROR";
p.innerHTML+=`<font style='color:red'>${msg}!</font>`;
}
},
error:function(jqXHR, textStatus, errorThrown){
p.innerHTML+=`<font style='color:red'>${textStatus}:${jqXHR.status}-${errorThrown}</font>`;
}
});
}
}
if(/https?:\/\/(marvelousga|dupedornot|gamezito).com\/giveaway\/[\w\W]*/.test(url)){
document.getElementById("doTask").onclick=function(){
t=0;
var crsf=token();
if(crsf===1){
var a=document.getElementsByTagName("a");
for(var i=0;i<a.length;i++){
var parent=a[i].parentNode.parentNode;
if(a[i].innerText==="this"&&/task_webpage_clickedLink_[\d]*/.test(a[i].id)&&!/verified/i.test(parent.getElementsByTagName("button")[0].innerText)){
var taskId=a[i].id.replace("task_webpage_clickedLink_","");
var text=a[i].parentNode.innerHTML.replace(/id\=\"[\w\W]*?\"/i,"");
t++;
webpage(taskId,t,text);
}
}
t==0&&(getId());
}
};
document.getElementById("Verify").onclick=function(){
task_id=[];
api_id=[];
btn_id=[];
p_id=[];
var crsf=token();
crsf===1&&(getId());
};
}
var verify_btn=[];
var do_btn=[];
//获取任务id
function getBtn(e){
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.length>0&&e==="v"&&(verify_1(0));
}
//做任务
function doTask(e){
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.length>0&&(verify_1(0)));
}
});
}
//验证任务
function verify_1(e){
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?verify_1(e):window.location.href=url;
}
});
}
if(/https?:\/\/www.(grabfreegame|bananagiveaway).com\/giveaway\/[\w\W]*/.test(url)){
document.getElementById("doTask").onclick=function(){
verify_btn=[];
do_btn=[];
getBtn("d");
};
document.getElementById("Verify").onclick=function(){
verify_btn=[];
do_btn=[];
getBtn("v");
};
div2.setAttribute("style", `position:fixed;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;`);
var g_task_url=[];
var g_task_id=[];
var g_task_ok=[];
//做&验证任务
function g_do_task(e){
var p=info("code","",`验证任务:${g_task_id[e]}...`);
$.ajax({
type: "post",
url: g_task_url[e],
datatype: "json",
data:{
giveawayID: game,
taskID: g_task_id[e]
},
crossDomain:true,
xhrFields: {
withCredentials: true
},
complete: function (data) {
var msg,task,zz;
var status=data.status==200?(data.responseJSON==undefined?0:(data.responseJSON.status==1?1:0)):0;
console.log(data);
if(status==1){
p.innerHTML+="<font style='color:green'>OK!</font>";
if(e==g_task_id.length-1){
g_task_ok[e].getElementsByTagName("button")[1].click();
}
g_task_ok[e].innerHTML=`<i class="fa fa-check checkMarkAfterCompleteTask"></i>`;
}else{
msg=data.message||"ERROR";
task=g_task_ok[e].getElementsByTagName("a")[0];
zz=document.createElement("div");
zz.appendChild(task);
task=zz.innerHTML;
p.innerHTML+=`<font style='color:red'>${msg}!</font>${task}`;
}
p.scrollIntoView();
e++;
e<g_task_id.length?g_do_task(e):(div2.getElementsByTagName("button").length>0?info("card-text monospace","color:red",`有任务未完成或验证失败,请手动完成任务之后在验证!`):info("card-text monospace","color:green",`所有任务验证完成,请手动完成谷歌验证获取key!`));
}
});
}
}
//wgn领key
if(/https?:\/\/whosgamingnow.net\/giveaway\/[\w\W]*/.test(url)){
btn_class("btn btn-primary");
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);
}
});
}
document.getElementById("doTask").onclick=function(){
wsn_enter();
};
document.getElementById("Verify").onclick=function(){
wsn_enter();
};
}
//gamecode领key
if(/https?:\/\/gamecode.win\/giveaway\/[\w\W]*/.test(url)){
document.getElementById("doTask").onclick=function(){
gamecode_task();
};
document.getElementById("Verify").onclick=function(){
gamecode_task();
};
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();
}
}
}
}
//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");
}
}
})();