Tobitool Script

public
7 days ago 41 views javascript
// ==UserScript==
// @name        (Tobitool) Redirect Bypass Stealth
// @namespace   Tool
// @version     1.0
// @description Redirect only valid redirect links (ignore honeypots)
// @match       *://*/*
// @run-at     document-start
// ==/UserScript==

(function () {
    try {
        if (window.top !== window.self) return;

        function init() {
            try {
                var url = new URL(window.location.href);
                if (!url.searchParams.has("tobitool")) return;

                var target = url.searchParams.get("tobitool");
                if (!target) return;

                // Safe decode loop
                try {
                    var prev;
                    do {
                        prev = target;
                        target = decodeURIComponent(target);
                    } while (prev !== target);
                } catch (e) {}

                if (!/^https?:\/\//i.test(target)) return;
                document.referrerPolicy = "no-referrer-when-downgrade";

                // Create overlay
                var overlay = document.createElement("div");
                overlay.innerHTML = `
                <div style="
                    position:fixed;
                    inset:0;
                    background:#000;
                    display:flex;
                    align-items:center;
                    justify-content:center;
                    z-index:999999;
                    font-family:sans-serif;
                ">
                    <div style="
                        background:#111;
                        padding:30px;
                        border-radius:12px;
                        text-align:center;
                        color:#fff;
                        width:220px;
                    ">
                        <svg width="120" height="120">
                            <circle cx="60" cy="60" r="45" stroke="#222" stroke-width="8" fill="none"/>
                            <circle id="progress" cx="60" cy="60" r="45" stroke="#00c853" stroke-width="8" fill="none" stroke-linecap="round" transform="rotate(-90 60 60)"/>
                        </svg>

                        <div id="countdown" style="margin-top:10px;font-size:20px;">1s</div>

                        <a id="get-link-btn"
                           style="
                             display:block;
                             margin-top:15px;
                             padding:10px;
                             background:#00c853;
                             border-radius:8px;
                             color:white;
                             text-decoration:none;
                             pointer-events:none;
                             opacity:0.6;
                           ">
                           Get Link
                        </a>
                    </div>
                </div>
                `;

                document.body.appendChild(overlay);

                var countdownEl = document.getElementById("countdown");
                var progressRing = document.getElementById("progress");
                var getLinkBtn = document.getElementById("get-link-btn");

                if (!countdownEl || !progressRing || !getLinkBtn) return;

                var counter = 1;
                var radius = 45;
                var circumference = 2 * Math.PI * radius;

                progressRing.style.strokeDasharray = circumference;
                progressRing.style.strokeDashoffset = 0;

                var total = counter;

                var interval = setInterval(function () {
                    counter--;
                    countdownEl.textContent = counter + "s";

                    var offset = circumference - (counter / total) * circumference;
                    progressRing.style.strokeDashoffset = offset;

                    if (counter <= 0) {
                        clearInterval(interval);

                        countdownEl.textContent = "Ready";
                        progressRing.style.strokeDashoffset = circumference;

                        getLinkBtn.style.pointerEvents = "auto";
                        getLinkBtn.style.opacity = "1";

                        getLinkBtn.setAttribute("href", target);
                        getLinkBtn.setAttribute("target", "_self");
                        getLinkBtn.setAttribute("rel", "noopener");
                        getLinkBtn.setAttribute("referrerpolicy", "origin");
                    }
                }, 1000);

            } catch (e) {
                console.error(e);
            }
        }

        // Ensure body exists (important for all browsers)
        if (document.body) {
            init();
        } else {
            document.addEventListener("DOMContentLoaded", init);
        }

    } catch (e) {
        console.error(e);
    }
})();
Raw