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