Greasy Fork

Greasy Fork is available in English.

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);
    });
})();