mirror of
https://codeberg.org/Amm0ni4/bypass-all-shortlinks-debloated.git
synced 2024-12-27 23:43:02 +05:00
146 lines
6.1 KiB
JavaScript
146 lines
6.1 KiB
JavaScript
// ==UserScript==
|
|
// @name profitsfly reload helper
|
|
// @include /^https:\/\/.*\.(tradeshowrating.com|historyofyesterday.com|playonpc.online|quins.us)\/.*/
|
|
// @run-at document-start
|
|
// ==/UserScript==
|
|
|
|
//---profitsfly reload helper----
|
|
(function() {
|
|
"use strict";
|
|
|
|
const domainRegex = /^https:\/\/.*\.(tradeshowrating.com|historyofyesterday.com|playonpc.online|quins.us)\/.*/;
|
|
if (domainRegex.test(window.location.href)) {
|
|
|
|
// ---RELOAD DEAD-END PAGES---
|
|
if (window.location.href.includes("/ref.php")) {
|
|
// Back up the current ref url
|
|
GM_setValue("profitsflyLocation", window.location.href);
|
|
} else if (document.readyState === "complete") {
|
|
onWindowLoad();
|
|
} else {
|
|
window.addEventListener('load', onWindowLoad);
|
|
}
|
|
|
|
function onWindowLoad() {
|
|
// Click the continue button if a backed up url was loaded in the last 5 seconds
|
|
if (document.body.textContent.includes("You have 2 active sessions.")) {
|
|
if ((Date.now() - GM_getValue("profitsflyGoBackTime", 0)) < 5000) {
|
|
for (const button of document.querySelectorAll("button")) {
|
|
if (button.textContent.trim() === "Continue") {
|
|
button.click();
|
|
break;
|
|
}
|
|
}
|
|
}
|
|
return;
|
|
}
|
|
|
|
// Load the backed up url
|
|
if (GM_getValue("profitsflyLocation")
|
|
&& !document.body.textContent.includes("Less than 18 seconds have passed between actions. Robot verification failed, please try again...")
|
|
&& !document.body.textContent.includes("Please wait...")) {
|
|
const lastLocation = GM_getValue("profitsflyLocation");
|
|
if (lastLocation) {
|
|
GM_setValue("profitsflyGoBackTime", Date.now());
|
|
GM_setValue("profitsflyOverrideLocation", lastLocation);
|
|
window.location.href = lastLocation;
|
|
}
|
|
return;
|
|
}
|
|
|
|
// Function to check for messages like "Click any ad & keep it open for 15 seconds to continue" and reload the page if one exists
|
|
let reloading = false;
|
|
function checkForMessage() {
|
|
const paragraphs = document.getElementsByTagName("p");
|
|
for (let p of paragraphs) {
|
|
if (/.*click.+ad.*to.+continue.*/is.test(p.textContent) && isElementVisibleAndEnabled(p)) {
|
|
if (!reloading) location.reload(); // Reload the page
|
|
reloading = true;
|
|
return; // Exit the function after reloading
|
|
}
|
|
}
|
|
if (document.body.textContent.includes("Less than 18 seconds have passed between actions. Robot verification failed, please try again...")) {
|
|
if (!reloading) location.reload(); // Reload the page
|
|
reloading = true;
|
|
return; // Exit the function after reloading
|
|
}
|
|
}
|
|
|
|
// Helper function to determine if an element is visible and enabled
|
|
function isElementVisibleAndEnabled(el) {
|
|
// Check if the element and all its parents are visible
|
|
let currentElement = el;
|
|
while (currentElement) {
|
|
const style = getComputedStyle(currentElement);
|
|
if (style.display === "none" || style.visibility === "hidden") {
|
|
return false; // Element or parent is not visible
|
|
}
|
|
currentElement = currentElement.parentElement; // Move up the DOM tree
|
|
}
|
|
// Check if the button is enabled
|
|
return !el.disabled;
|
|
}
|
|
|
|
setInterval(checkForMessage, 1000);
|
|
}
|
|
|
|
|
|
// ---SKIP TIMERS---
|
|
document.addEventListener('DOMContentLoaded', function() {
|
|
function setTimer() {
|
|
if (window.wT9882 > 5) {
|
|
window.wT9882 = 1;
|
|
}
|
|
}
|
|
window.wT9882 = 5;
|
|
setInterval(setTimer, 1000);
|
|
|
|
/* ------------ Protect buttons from being removed ------------ */
|
|
// Protect all buttons currently in the DOM
|
|
function protectButtons() {
|
|
const buttons = document.querySelectorAll("button");
|
|
buttons.forEach((button) => protectElement(button));
|
|
}
|
|
|
|
// Protect a specific button by overriding its removal methods
|
|
function protectElement(element) {
|
|
if (element.__protected) return; // Avoid double protection
|
|
|
|
// Override remove()
|
|
const originalRemove = element.remove;
|
|
element.remove = () => {};
|
|
|
|
// Flag element as protected
|
|
element.__protected = true;
|
|
}
|
|
|
|
// Monitor the DOM for dynamically added buttons
|
|
const observer = new MutationObserver((mutationsList) => {
|
|
mutationsList.forEach((mutation) => {
|
|
mutation.addedNodes.forEach((node) => {
|
|
if (node.tagName === "BUTTON") {
|
|
// Protect new button
|
|
protectElement(node);
|
|
}
|
|
});
|
|
|
|
mutation.removedNodes.forEach((node) => {
|
|
if (node.tagName === "BUTTON") {
|
|
// A button was removed. Re-add it:
|
|
mutation.target.appendChild(node); // Re-add the button
|
|
protectElement(node); // Re-protect it
|
|
}
|
|
});
|
|
});
|
|
});
|
|
|
|
// Start observing the document for changes
|
|
observer.observe(document.body, { childList: true, subtree: true });
|
|
|
|
// Protect buttons already in the DOM
|
|
protectButtons();
|
|
});
|
|
|
|
}
|
|
})();
|
|
//-------
|