PixelDrain Bypass URLs Globally

Convert all Original Pixeldrain Links to pd for Bypassing in any Page even Linked Buttons.

Version au 30/11/2024. Voir la dernière version.

// ==UserScript==
// @name         PixelDrain Bypass URLs Globally
// @namespace    SWScripts
// @version      v1.4
// @description  Convert all Original Pixeldrain Links to pd for Bypassing in any Page even Linked Buttons.
// @grant        none
// @license      MIT
// @run-at       document-end
// @match        *://*/*
// ==/UserScript==

(function() {
    'use strict';

    const PIXELDRAIN_URL = /https?:\/\/(www\.)?pixeldrain\.com\/u\/(.*?)/g;
    const REPLACEMENT_URL = 'https://pd.cybar.xyz/';

    function replaceTextInNode(node) {
        if (node.nodeType === Node.TEXT_NODE) {
            if (PIXELDRAIN_URL.test(node.textContent)) {
                node.textContent = node.textContent.replace(PIXELDRAIN_URL, (match, p1, p2) => {
                    return REPLACEMENT_URL + p2;
                });
            }
        } else if (node.nodeType === Node.ELEMENT_NODE) {
            node.childNodes.forEach(replaceTextInNode);

            if (node.tagName === 'A' && node.href && PIXELDRAIN_URL.test(node.href)) {
                node.href = node.href.replace(PIXELDRAIN_URL, (match, p1, p2) => REPLACEMENT_URL + p2);
            }
        }
    }

    function checkAndReplaceText() {
        replaceTextInNode(document.body);
    }

    function handleMutations(mutations) {
        mutations.forEach(mutation => {
            if (mutation.type === 'childList') {
                mutation.addedNodes.forEach(node => {
                    replaceTextInNode(node);
                });
            }
        });
    }

    function observeDOMChanges() {
        const observer = new MutationObserver(handleMutations);
        observer.observe(document.body, {
            childList: true,
            subtree: true
        });
    }

    function checkIfPixeldrainRedirect() {
        const currentUrl = window.location.href;
        if (PIXELDRAIN_URL.test(currentUrl) && /\/u\//.test(currentUrl)) {
            window.location.href = currentUrl.replace(PIXELDRAIN_URL, (match, p1, p2) => REPLACEMENT_URL + p2);
        }
    }

    document.addEventListener('DOMContentLoaded', function() {
        checkIfPixeldrainRedirect();
        checkAndReplaceText();
        observeDOMChanges();
    });

    setInterval(checkAndReplaceText, 1000);
})();