// ==UserScript==
// @name coinpayu script
// @namespace tron of syria
// @description this script view ads automatic coinpayu script by @Wagner3356
// @version 1.3
// @author @Wagner3356in telegram
// @match https://www.coinpayu.com/*
// @connect www.coinpayu.com
// @noframes
// @grant GM_xmlhttpRequest
// @grant GM_setValue
// @grant GM_getValue
// ==/UserScript==
(function() {
'use strict';
window.alert = function() {};
window.confirm = function() {};
//Do not execute if window is a pop up
if(window.name){
return;
}
var count = 0;
var clicked = false;
var websiteData = [
{url : "https://www.coinpayu.com/dashboard/ads_surf", login: "", password: ""},
];
var websiteMap = [
//(start)
{
website: "coinpayu.com",
defaultButtonSelectors: [".btn.btn-primary.btn-large"],
loginSelectors: ["input[type=email]", "input[type=password]", "body > div:nth-child(1) > div > main > div > button"],
captchaButtonSubmitSelector: [".btn.btn-default", "input[type=submit]"],
allMessageSelectors: ["p.flow-text", "#pre > p"],
additionalFunctions: coinpayu,
messagesToCheckBeforeMovingToNextUrl: ["You have watched", "Links in surfing are over"],
timeoutbeforeMovingToNextUrl: 500000
},
];
//Check if a string is present in Array
String.prototype.includesOneOf = function(arrayOfStrings) {
//If this is not an Array, compare it as a String
if (!Array.isArray(arrayOfStrings)) {
return this.toLowerCase().includes(arrayOfStrings.toLowerCase());
}
for (var i = 0; i < arrayOfStrings.length; i++) {
if (this.toLowerCase().includes(arrayOfStrings[i].toLowerCase())) {
return true;
}
}
return false;
}
var websiteDataValues = {};
for (let value of Object.values(websiteMap)) {
if (window.location.href.includesOneOf(value.website)) {
websiteDataValues.inputTextSelector = value.inputTextSelector;
websiteDataValues.inputTextSelectorButton = value.inputTextSelectorButton;
websiteDataValues.defaultButtonSelectors = value.defaultButtonSelectors;
websiteDataValues.claimButtonSelector = value.claimButtonSelector;
websiteDataValues.captchaButtonSubmitSelector = value.captchaButtonSubmitSelector;
websiteDataValues.loginSelectors = value.loginSelectors;
websiteDataValues.loginCaptcha = value.loginCaptcha;
websiteDataValues.allMessageSelectors = value.allMessageSelectors;
websiteDataValues.messagesToCheckBeforeMovingToNextUrl = value.messagesToCheckBeforeMovingToNextUrl;
websiteDataValues.withdrawPageUrl = value.withdrawPageUrl;
websiteDataValues.withdrawEnabled = value.withdrawEnabled;
websiteDataValues.balanceSelector = value.balanceSelector;
websiteDataValues.withdrawMinAmount = value.withdrawMinAmount;
websiteDataValues.successMessageSelectors = value.successMessageSelectors;
websiteDataValues.additionalFunctions = value.additionalFunctions;
websiteDataValues.timeoutbeforeMovingToNextUrl = value.timeoutbeforeMovingToNextUrl;
break;
}
}
var login = "";
var password = "";
for (let value of Object.values(websiteData)) {
count = count + 1;
if (value.url.includes(window.location.hostname)) {
websiteDataValues.url = value.url;
login = value.login;
password = value.password;
break;
}
}
//Get the next Url from the website data map
async function getNextUrl() {
//Go to the beginning if the end of the array is reached
if (count >= websiteData.length) {
websiteDataValues.nextUrl = websiteData[0].url;
} else {
websiteDataValues.nextUrl = websiteData[count].url;
}
//Use case for overrding next Url
if (websiteDataValues.overrideNextUrl) {
websiteDataValues.nextUrl = websiteDataValues.overrideNextUrl;
}
//Ping Test to check if a website is up before proceeding to next url
pingTest(websiteDataValues.nextUrl);
}
var isNextUrlReachable = false;
//Get the next Url from the website
function pingTest(websiteUrl) {
console.log(websiteUrl);
GM_xmlhttpRequest({
method: "GET",
url: websiteUrl,
headers: {
"Content-Type": "application/x-www-form-urlencoded"
},
timeout: 5000,
onload: function(response) {
//Website is reachable
isNextUrlReachable = true;
},
onerror: function(e) {
count = count + 1;
getNextUrl();
},
ontimeout: function() {
count = count + 1;
getNextUrl();
},
});
}
async function delay(ms) {
return new Promise(resolve => setTimeout(resolve, ms))
}
var movingToNextUrl = false;
async function goToNextUrl() {
if (!movingToNextUrl) {
movingToNextUrl = true;
getNextUrl();
while (!isNextUrlReachable) {
await delay(3000);
}
window.location.href = websiteDataValues.nextUrl;
}
}
//Default Setting: After 180 seconds go to next Url
var delayBeforeMovingToNextUrl = 180000;
if (websiteDataValues.timeoutbeforeMovingToNextUrl) {
delayBeforeMovingToNextUrl = websiteDataValues.timeoutbeforeMovingToNextUrl;
}
setTimeout(function() {
goToNextUrl();
}, delayBeforeMovingToNextUrl);
//Wait for 5 seconds if it's in dashboard,
if ((!window.location.href.includes("coinpayu")) && (window.location.href.includes("dashboard") || window.location.href.includes("page/user-admin"))) {
setTimeout(function() {
if (websiteDataValues.url) {
window.location.href = websiteDataValues.url;
}
}, 5000);
}
//Returns true if message selectors are present
function messageSelectorsPresent() {
if (websiteDataValues.allMessageSelectors) {
for (var j = 0; j < websiteDataValues.allMessageSelectors.length; j++) {
for (var k = 0; k < document.querySelectorAll(websiteDataValues.allMessageSelectors[j]).length; k++) {
if (document.querySelectorAll(websiteDataValues.allMessageSelectors[j])[k] &&
(document.querySelectorAll(websiteDataValues.allMessageSelectors[j])[k].innerText.includesOneOf(websiteDataValues.messagesToCheckBeforeMovingToNextUrl) ||
(document.querySelectorAll(websiteDataValues.allMessageSelectors[j])[k].value &&
document.querySelectorAll(websiteDataValues.allMessageSelectors[j])[k].value.includesOneOf(websiteDataValues.messagesToCheckBeforeMovingToNextUrl)))) {
return true;
}
}
}
}
return false;
}
function closeRepeatingAds() {
//Check if previous Ad is Same as Current Ad and Skip the Ad
if (unsafeWindow.viewurl) {
if (GM_getValue("adUrl") && GM_getValue("adUrl") == unsafeWindow.viewurl) {
//Skip the Ad
document.querySelector(".card > a").click();
movingToNextUrl = true;
} else {
GM_setValue("adUrl", unsafeWindow.viewurl);
}
}
}
function adbtcTop() {
// For adbtc, special use case
if (document.querySelector(".collection-item.hoverable") && document.querySelector(".collection-item.hoverable").innerText.includes("Sign in")) {
document.querySelector(".collection-item.hoverable").click();
}
for(let j=0; j<document.querySelectorAll(".dropdown-content.select-dropdown").length; j++){
for(let i=0; i<document.querySelectorAll(".dropdown-content.select-dropdown")[j].getElementsByTagName("li").length; i++){
if( document.querySelectorAll(".dropdown-content.select-dropdown")[j].getElementsByTagName("li")[i].innerText.includes("hCaptcha") &&
!(document.querySelectorAll(".dropdown-content.select-dropdown")[j].getElementsByTagName("li")[i].getAttribute("class") &&
document.querySelectorAll(".dropdown-content.select-dropdown")[j].getElementsByTagName("li")[i].getAttribute("class").includes("selected"))){
document.querySelectorAll(".dropdown-content.select-dropdown")[j].getElementsByTagName("li")[i].click();
break;
}
}
}
if (document.querySelector("div.col.s4> a") && !document.querySelector("div.col.s4> a").className.includes("hide")) {
document.querySelector("div.col.s4> a").click();
}
setInterval(function() {
//Skip the Ad if the Ad closes on it's own for adbtc due to Adblocker or the script itself
if (document.querySelector("#nenado") && !document.querySelector("#nenado").className.includes("hide") &&
document.querySelector("#nenado").innerText.includes("You closed page")) {
document.querySelector("#nenado > a").click();
}
}, 10000);
}
function faucetpay() {
//Block Pop Ups
unsafeWindow.open = function(){};
if(document.querySelector("body").innerText.includes("This ad does not exist or has expired")){
window.location.href = "https://faucetpay.io/ptc/";
}
}
function everve() {
var oldfunction = unsafeWindow.open;
var windowName = "";
function newFunction(params1, params2) {
console.log(params1 + params2);
if (!params2 || params2 == "_blank") {
windowName = "EvervepopUpWindow";
} else {
windowName = params2;
}
return oldfunction(params1, windowName);
};
unsafeWindow.open = newFunction;
unsafeWindow.onbeforeunload = function() {
unsafeWindow.open('', windowName).close();
};
var clicked = false;
var interval = setInterval(function(){
if(document.querySelectorAll(".table_row[role=row]").length == 0){
clearInterval(interval);
goToNextUrl();
return;
}
if(!clicked){
for(let i=0; i< document.querySelectorAll(".table_row[role=row]").length;i++){
if(document.querySelectorAll(".table_row[role=row]")[i].style.display != "none"){
document.querySelectorAll(".table_row[role=row] .btn-group")[i].querySelector("a").click();
clicked = true;
break;
}
}
}else{
if( document.querySelector("#next_button").style.display != "none"){
document.querySelector("#next_button > button").click();
clicked = false;
}
}
},5000);
}
function coinpayu() {
var oldfunction = unsafeWindow.open;
var windowName = "";
function newFunction(params1, params2) {
console.log(params1 + params2);
if (!params2 || params2 == "_blank") {
windowName = "popUpWindow";
} else {
windowName = params2;
}
if (window.location.href == "https://www.coinpayu.com/dashboard/ads_active") {
// opts = "height=800,width=800";
}
console.log("WindowName is::" + windowName);
return oldfunction(params1, windowName);
};
unsafeWindow.open = newFunction;
unsafeWindow.onbeforeunload = function() {
unsafeWindow.open('', windowName).close();
};
var viewingAd = false;
var i = 0;
setInterval(function() {
//Check if recaptcha or Hcaptcha is selected
if (document.querySelector(".form-group.form-code.captcha-type > div span.recaptcha-checked") &&
(document.querySelector(".form-group.form-code.captcha-type > div span.recaptcha-checked").innerText.includes("Hcaptcha") ||
document.querySelector(".form-group.form-code.captcha-type > div span.recaptcha-checked").innerText.includes("GoogleRecaptcha"))) {
} else {
//Select either of Hcaptcha or Recaptcha
for (let i = 0; i < document.querySelectorAll(".form-group.form-code.captcha-type > div span").length; i++) {
if (document.querySelectorAll(".form-group.form-code.captcha-type > div span")[i].innerText.includes("Hcaptcha") ||
document.querySelectorAll(".form-group.form-code.captcha-type > div span")[i].innerText.includes("GoogleRecaptcha")) {
document.querySelectorAll(".form-group.form-code.captcha-type > div span")[i].click();
break;
}
}
}
let count = document.querySelectorAll("[class='clearfix container-fluid bgwhite'] [title] span").length;
if (i < count && count > 0 && !viewingAd) {
viewingAd = true;
//Click
document.querySelectorAll("[class='clearfix container-fluid bgwhite'] [title] span")[i].click();
setTimeout(function() {
//Wait for completion
var waitForCompletionInterval = setInterval(function() {
// ads has already been clicked
if (document.querySelector(".alert-div.alert-red") && (document.querySelector(".alert-div.alert-red").innerText.includes("advertisement does not") ||
document.querySelector(".alert-div.alert-red").innerText.includes("ads has already been clicked"))) {
var tmp = document.querySelector(".alert-div.alert-red").innerHTML;
document.querySelector(".alert-div.alert-red").innerHTML = tmp.replaceAll("advertisement does not", "")
document.querySelector(".alert-div.alert-red").innerHTML = tmp.replaceAll("ads has already been clicked", "")
i = i + 1;
unsafeWindow.open('', windowName).close();
viewingAd = false;
clearInterval(waitForCompletionInterval);
}
if (document.querySelector("div.warning-ags") &&
(document.querySelector("div.warning-ags").innerText.includes("You closed the advertisement too soon") ||
document.querySelector("div.warning-ags").innerText.includes("The advertisement is not opened correctly"))){
i = i + 1;
unsafeWindow.open('', windowName).close();
viewingAd = false;
clearInterval(waitForCompletionInterval);
}
if (count != document.querySelectorAll("[class='clearfix container-fluid bgwhite'] [title] span").length) {
//Ad viewed
//Close the window
setTimeout(function() {
unsafeWindow.open('', windowName).close();
viewingAd = false;
clearInterval(waitForCompletionInterval);
}, 3000);
}
}, 5000);
}, 7000);
}
if ((count == 0 || count == i) && !viewingAd) {
//Go to next page
i = 0;
var pageCount = document.querySelectorAll("div.coinpayu-pagination > ul > li").length;
if (pageCount >= 1 && document.querySelectorAll("div.coinpayu-pagination > ul > li")[pageCount - 1].className == "active") {
//Stop or go to next url
console.log("Ads End");
goToNextUrl();
} else if (pageCount >= 1) {
//go to next page
document.querySelectorAll("div.coinpayu-pagination > ul > li")[pageCount - 1].click();
}
}
}, 5000);
}
var stopSolvingCaptcha = false;
function checkLoginSelectors() {
if (websiteDataValues.loginSelectors) {
//Check if all login selectors are present
let count = 0;
for (let i = 0; i < websiteDataValues.loginSelectors.length; i++) {
if (document.querySelector(websiteDataValues.loginSelectors[i])) {
count++;
}
}
if (count == websiteDataValues.loginSelectors.length) {
if (login.length > 0 && password.length > 0) {
//Input Login
document.querySelector(websiteDataValues.loginSelectors[0]).value = login;
//Input Password
document.querySelector(websiteDataValues.loginSelectors[1]).value = password;
} else {
stopSolvingCaptcha = true;
}
} else {
stopSolvingCaptcha = true;
}
} else {
stopSolvingCaptcha = true;
}
}
setTimeout(function() {
checkLoginSelectors();
if (websiteDataValues.additionalFunctions) {
websiteDataValues.additionalFunctions();
}
//Look for all the default messages or errors before proceeding to next url
//For other languages difference in the length of the strings can be compared or visibility of the style element
if (!movingToNextUrl && messageSelectorsPresent()) {
goToNextUrl();
}
//Check for all the default button selectors and click
//This will only click the first selector found, so mention the selectors with parent element wherever required
if (!movingToNextUrl && websiteDataValues.defaultButtonSelectors) {
for (var i = 0; i < websiteDataValues.defaultButtonSelectors.length; i++) {
if (document.querySelector(websiteDataValues.defaultButtonSelectors[i])) {
document.querySelector(websiteDataValues.defaultButtonSelectors[i]).click();
break;
}
}
}
//Input the address and click the login button
if (!movingToNextUrl && document.querySelector(websiteDataValues.inputTextSelector)) {
document.querySelector(websiteDataValues.inputTextSelector).value = websiteDataValues.address;
setTimeout(function() {
if (websiteDataValues.inputTextSelectorButton && document.querySelector(websiteDataValues.inputTextSelectorButton)) {
document.querySelector(websiteDataValues.inputTextSelectorButton).click();
}
}, 5000);
}
//Click the form button after solving captcha
//Works for both recaptcha and hcaptcha
var clicked = false;
var captchaInterval = setInterval(function() {
if (!stopSolvingCaptcha || !window.location.href.includes("login")) {
try {
if (!clicked && unsafeWindow.grecaptcha && unsafeWindow.grecaptcha.getResponse().length > 0) {
for (let i = 0; i < websiteDataValues.captchaButtonSubmitSelector.length; i++) {
if (document.querySelector(websiteDataValues.captchaButtonSubmitSelector[i])) {
document.querySelector(websiteDataValues.captchaButtonSubmitSelector[i]).click();
}
}
clicked = true;
clearInterval(captchaInterval);
setTimeout(function() {
if (messageSelectorsPresent()) {
goToNextUrl();
}
}, 5000);
}
} catch (e) {
}
for (var hc = 0; hc < document.querySelectorAll("iframe").length; hc++) {
if (!clicked && document.querySelectorAll("iframe")[hc] &&
document.querySelectorAll("iframe")[hc].getAttribute("data-hcaptcha-response") &&
document.querySelectorAll("iframe")[hc].getAttribute("data-hcaptcha-response").length > 0) {
for (let i = 0; i < websiteDataValues.captchaButtonSubmitSelector.length; i++) {
if (document.querySelector(websiteDataValues.captchaButtonSubmitSelector[i])) {
document.querySelector(websiteDataValues.captchaButtonSubmitSelector[i]).click();
}
}
clicked = true;
clearInterval(captchaInterval);
setTimeout(function() {
if (messageSelectorsPresent()) {
goToNextUrl();
}
}, 5000);
}
}
}
}, 5000);
}, 5000);
window.onbeforeunload = function() {
if (unsafeWindow.myWindow) {
unsafeWindow.myWindow.close();
}
if (unsafeWindow.coinwin) {
var tmp = unsafeWindow.coinwin;
unsafeWindow.coinwin = {};
tmp.close();
}
};
})();