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 提交的版本,檢視 最新版本

您需要先安裝使用者腳本管理器擴展,如 TampermonkeyGreasemonkeyViolentmonkey 之後才能安裝該腳本。

You will need to install an extension such as Tampermonkey to install this script.

您需要先安裝使用者腳本管理器擴充功能,如 TampermonkeyViolentmonkey 後才能安裝該腳本。

您需要先安裝使用者腳本管理器擴充功能,如 TampermonkeyUserscripts 後才能安裝該腳本。

你需要先安裝一款使用者腳本管理器擴展,比如 Tampermonkey,才能安裝此腳本

您需要先安裝使用者腳本管理器擴充功能後才能安裝該腳本。

(我已經安裝了使用者腳本管理器,讓我安裝!)

你需要先安裝一款使用者樣式管理器擴展,比如 Stylus,才能安裝此樣式

你需要先安裝一款使用者樣式管理器擴展,比如 Stylus,才能安裝此樣式

你需要先安裝一款使用者樣式管理器擴展,比如 Stylus,才能安裝此樣式

你需要先安裝一款使用者樣式管理器擴展後才能安裝此樣式

你需要先安裝一款使用者樣式管理器擴展後才能安裝此樣式

你需要先安裝一款使用者樣式管理器擴展後才能安裝此樣式

(我已經安裝了使用者樣式管理器,讓我安裝!)

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