Greasy Fork

Shortlink Dodger

Quickly bypasses shortlinks to enhance your browsing experience. This script automatically navigates through common URL shorteners, saving you time and hassle with every click.

目前为 2024-10-05 提交的版本。查看 最新版本

// ==UserScript==
// @name         Shortlink Dodger
// @namespace    Shortlink Dodger
// @version      1.0
// @description  Quickly bypasses shortlinks to enhance your browsing experience. This script automatically navigates through common URL shorteners, saving you time and hassle with every click.
// @author       AmineDev
// @license      All Rights Reserved
// @icon         https://i.ibb.co/N3cwK3X/shortlink-dodger.png
// @match        *://*/recaptcha/*
// @match        *://tpi.li/*
// @match        *://blogmystt.com/*
// @match        *://cety.app/*
// @match        *://fc-lc.xyz/*
// @match        *://gamezizo.com/*
// @match        *://forex-trnd.com/*
// @match        *://falpus.com/*
// @match        *://oii.la/*
// @match        *://wp2hostt.com/*
// @match        *://expertvn.com/*
// @match        *://ielts-isa.edu.vn/*
// @match        *://handydecor.com.vn/*
// @match        *://top10cafe.se/*
// @match        *://*.mega*.in/*
// @match        *://mitly.us/*
// @match        *://*.sonjuegosgratis.com/*
// @match        *://autodime.com/*
// @match        *://linx.cc/*
// @match        *://surflink.tech/*
// @match        *://coincroco.com/*
// @match        *://sox.link/*
// @match        *://shrinkme.ink/*
// @match        *://themezon.net/*
// @match        *://en.mrproblogger.com/*
// @match        *://oii.io/*
// @match        *://tmail.io/*
// @match        *://*linksly.co/*
// @match        *://mrproblogger.com/*
// @match        *://m.imagenesderopaparaperros.com/*
// @match        *://fx4ever.com/*
// @match        *://fx-22.com/*
// @match        *://gold-24.net/*
// @match        *://forexrw7.com/*
// @match        *://linkjust.com/*
// @match        *://carewave.xyz/*
// @match        *://insfly.pw/*
// @run-at       document-end
// ==/UserScript==

(function() {
    'use strict';

    const textConfig = {
        'tpi.li': [{ targetText: 'Continue', delay: 2000 }, { targetText: 'Get Link', delay: 4000 }],
        'blogmystt.com': [{ targetText: 'Get link here', delay: 5000 }],
        'shrinkme.ink': [{ targetText: 'Click here to continue', delay: 2000 }],
        'themezon.net': [{ targetText: 'Continue', delay: 2000 }, { targetText: 'Go To Url', delay: 2000 }],
        'en.mrproblogger.com': [{ targetText: 'Get Link', delay: 4000 }],
        'cety.app': [{ targetText: 'Continue', delay: 2000 }, { targetText: 'I am not a robot', delay: 2000 }, { targetText: 'Go ->', delay: 4000 }],
        'fc-lc.xyz': [{ targetText: 'Click here to continue', delay: 2000 }],
        'gamezizo.com': [{ targetText: 'Click To Verify', delay: 2000 }, { targetText: 'Continue...', delay: 2000 }, { targetText: 'Click here to continue', delay: 16000 }, { targetText: 'Get Link', delay: 4000 }],
        'forex-trnd.com': [{ targetText: 'Get Link', delay: 4000 }],
        'oii.la': [{ targetText: 'Continue', delay: 2000 },  { targetText: 'Get Link', delay: 4000 }],
        'wp2hostt.com': [{ targetText: 'Get link here', delay: 5000 }],
        'handydecor.com.vn': [{ targetText: 'Click here to continue', delay: 30000 }, { targetText: 'Click here to Unlock Link', delay: 5000 }, { targetText: 'Getlink', delay: 2000 }],
        'get.megaurl.in': [{ targetText: 'Click here to continue', delay: 3000 }, { targetText: 'Get Link', delay: 4000 }],
        'expertvn.com': [{ targetText: 'Click here to continue', delay: 30000 }, { targetText: 'Click here to Unlock Link', delay: 5000 }, { targetText: 'Getlink', delay: 2000 }],
        'get.megafly.in': [{ targetText: 'Click here to continue', delay: 3000 }, { targetText: 'Get Link', delay: 4000 }],
        'ielts-isa.edu.vn': [{ targetText: 'Click here to continue', delay: 30000 }, { targetText: 'Click here to Unlock Link', delay: 5000 }, { targetText: 'Getlink', delay: 2000 }],
        'mitly.us': [{ targetText: 'Click here to continue', delay: 2000 }, { targetText: 'Get Link', delay: 4000 }],
        'autodime.com': [{ targetText: 'Next - Continue', delay: 10000 }, { targetText: 'Click here to Continue', delay: 5000 }],
        'linx.cc': [{ targetText: 'Get Link', delay: 4000 }],
        'surflink.tech': [{ targetText: 'Show Captcha Verification', delay: 17000 }, { targetText: 'Step', delay: 17000 }],
        'coincroco.com': [{ targetText: 'Step', delay: 12000 }],
        'sox.link': [{ targetText: 'Get Link', delay: 4000 }],
        'oii.io': [{ targetText: 'Click here to continue', delay: 2000 }],
        'linksly.co': [{ targetText: 'Human Verification', delay: 2000 }],
        'go.linksly.co': [{ targetText: 'Get Link', delay: 4000 }],
        'm.imagenesderopaparaperros.com': [{ targetText: 'Get Link', delay: 4000 }, { targetText: 'Ir al enlace', delay: 4000 }],
        'insfly.pw': [{ targetText: 'Get Link', delay: 4000 }],
    };

    const idConfig = {
        'carewave.xyz': [{ targetId: 'ad', delay: 24000 }],
        'tmail.io': [{ targetId: 'next', delay: 2000 }, { targetId: 'glink', delay: 5000 }, { targetId: 'surl', delay: 4000 }],
        'mrproblogger.com': [{ targetId: 'btn2', delay: 5000 }, { targetId: 'tp-snp2', delay: 5000 }],
        'm.imagenesderopaparaperros.com': [{ targetId: 'invisibleCaptchaShortlink', delay: 2000 }],
        'fx4ever.com': [{ targetId: 'next', delay: 5000 }, { targetId: 'nextbutton', delay: 2000 }],
        'fx-22.com': [{ targetId: 'nextbutton', delay: 5000 }],
        'gold-24.net': [{ targetId: 'nextbutton', delay: 5000 }],
        'forexrw7.com': [{ targetId: 'nextbutton', delay: 5000 }],
        'linkjust.com': [{ targetId: 'click', delay: 4000 }],
    };

    const classConfig = {
        'forex-trnd.com': [{ targetClass: 'g-recaptcha btn btn-primary', delay: 5000 }],
    };

    function checkId(element, targetId) {
        return targetId ? element.id === targetId : true;
    }

    function checkClass(element, targetClass) {
        return targetClass ? element.classList.contains(targetClass) : true;
    }

    const currentDomain = window.location.hostname;

    function clickTextTargetElement(targets) {
        targets.forEach(({ targetText, delay }) => {
            setInterval(() => {
                const elements = document.querySelectorAll('*');
                elements.forEach(element => {
                    if (element.textContent.includes(targetText)) {
                        if (element.tagName === 'A' && element.getAttribute('target') === '_blank') {
                            element.setAttribute('target', '');
                        }
                        element.click();
                    }
                });
            }, delay);
        });
    }

    function clickIdTargetElement(targets) {
        targets.forEach(({ targetId, delay }) => {
            setInterval(() => {
                const elements = document.querySelectorAll('*');
                elements.forEach(element => {
                    if (checkId(element, targetId)) {
                        if (element.tagName === 'A' && element.getAttribute('target') === '_blank') {
                            element.setAttribute('target', '');
                        }
                        element.click();
                    }
                });
            }, delay);
        });
    }

    function clickClassTargetElement(targets) {
        targets.forEach(({ targetClass, delay }) => {
            setInterval(() => {
                const elements = document.querySelectorAll('*');
                elements.forEach(element => {
                    if (checkClass(element, targetClass)) {
                        if (element.tagName === 'A' && element.getAttribute('target') === '_blank') {
                            element.setAttribute('target', '');
                        }
                        element.click();
                    }
                });
            }, delay);
        });
    }

    if (textConfig[currentDomain]) {
        clickTextTargetElement(textConfig[currentDomain]);
    }

    if (idConfig[currentDomain]) {
        clickIdTargetElement(idConfig[currentDomain]);
    }

    if (classConfig[currentDomain]) {
        clickClassTargetElement(classConfig[currentDomain]);
    }
})();

(function() {
    'use strict';

    const targetTexts = ["Click here to Continue", "Continue"];

    function clickInput() {
        const inputs = document.querySelectorAll('input[type="button"], input[type="submit"]');

        inputs.forEach(input => {
            if (targetTexts.some(text => input.value.includes(text))) {
                input.click();
            }
        });
    }

    setInterval(clickInput, 2000);
})();

(function() {
    'use strict';

    const hiddenInputIDs = ['shortShort'];

    function useHiddenInputValues() {
        hiddenInputIDs.forEach(id => {
            const hiddenInput = document.getElementById(id);
            if (hiddenInput) {
                const value = hiddenInput.value;

                window.location.href = value;
            }
        });
    }

    setTimeout(useHiddenInputValues, 2000);
})();

(function() {
    'use strict';

    const buttonClasses = ['button.link-button'];

    function clickButtons() {
        buttonClasses.forEach(className => {
            const button = document.querySelector(`.${className}`);
            if (button) {
                button.click();
            }
        });
    }

    setInterval(clickButtons, 2000);
})();

(function() {
    'use strict';

    window.addEventListener('load', function() {
        setTimeout(() => {
            const button = document.querySelector('.recaptcha-checkbox-border');
            if (button) {
                button.click();
            }
        }, 3000);
    });
})();