TELEGRAM: @RAMA_MODZ

AUTO-BYPASS SHORTENER LINKS (ENCURTARAPIDO). SKIP WAITING TIME, AUTO-CLICK BUTTONS, AND GET YOUR LINK FASTER. BY @RAMA_MODZ

スクリプトをインストールするには、Tampermonkey, GreasemonkeyViolentmonkey のような拡張機能のインストールが必要です。

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

スクリプトをインストールするには、TampermonkeyViolentmonkey のような拡張機能のインストールが必要です。

スクリプトをインストールするには、TampermonkeyUserscripts のような拡張機能のインストールが必要です。

このスクリプトをインストールするには、Tampermonkeyなどの拡張機能をインストールする必要があります。

このスクリプトをインストールするには、ユーザースクリプト管理ツールの拡張機能をインストールする必要があります。

(ユーザースクリプト管理ツールは設定済みなのでインストール!)

このスタイルをインストールするには、Stylusなどの拡張機能をインストールする必要があります。

このスタイルをインストールするには、Stylus などの拡張機能をインストールする必要があります。

このスタイルをインストールするには、Stylus tなどの拡張機能をインストールする必要があります。

このスタイルをインストールするには、ユーザースタイル管理用の拡張機能をインストールする必要があります。

このスタイルをインストールするには、ユーザースタイル管理用の拡張機能をインストールする必要があります。

このスタイルをインストールするには、ユーザースタイル管理用の拡張機能をインストールする必要があります。

(ユーザースタイル管理ツールは設定済みなのでインストール!)

作者のサイトでサポートを受ける。または、このスクリプトの質問や評価の投稿はこちら通報はこちらへお寄せください
// ==UserScript==
// @name        TELEGRAM: @RAMA_MODZ
// @namespace    https://t.me/RAMA_MODZ
// @version      1.5
// @description  AUTO-BYPASS SHORTENER LINKS (ENCURTARAPIDO). SKIP WAITING TIME, AUTO-CLICK BUTTONS, AND GET YOUR LINK FASTER. BY @RAMA_MODZ
// @author       RAMA_MODZ
// @match        https://aincrad.decryptvpn.xyz/*
// @match        https://precisosaberinvestir.com.br/*
// @match        https://encurtarapido.com/*
// @match        *://*encurtarapido.com/*
// @grant        none
// @run-at       document-start
// @license      CC BY-NC-ND 4.0
// @homepageURL  https://t.me/RAMA_MODZ
// @supportURL   https://t.me/RAMA_MODZ

// ==/UserScript==

(function() {
    'use strict';

    const CONFIG = {
        TOKEN: '3TMdueEaUw',
        BASE_URL: 'https://encurtarapido.com/',
        CLICK_COOLDOWN: 5000,
        TIMER_WAIT_SECONDS: 80 
    };

    const CLICK_KEYWORDS = ["Clique aqui para prosseguir", "clique aqui para prosseguir"];
    const FINAL_BUTTON_KEYWORDS = ["Obter link", "obter link", "Obter Link"];
    
    
    const TIMER_INDICATORS = [
        '#tp-count', '.timer', '.countdown', 
        'Seu link está quase pronto', 'aguarde', 'wait'
    ];

    let timerPhaseActive = false;
    let lastClickTime = 0;

    
    function injectBranding() {
        // watermark disabled
    }

    
    function showCentralToast() {
        if (document.getElementById('xenox-toast-lock')) return;

        // Inject keyframe animations
        const style = document.createElement('style');
        style.id = 'xenox-styles';
        style.textContent = `
            @keyframes xenox-fadeIn {
                from { opacity: 0; transform: translate(-50%, -48%) scale(0.95); }
                to   { opacity: 1; transform: translate(-50%, -50%) scale(1); }
            }
            @keyframes xenox-pulse-ring {
                0%   { box-shadow: 0 0 0 0 rgba(0,242,255,0.4), 0 0 30px rgba(0,242,255,0.3); }
                70%  { box-shadow: 0 0 0 12px rgba(0,242,255,0), 0 0 30px rgba(0,242,255,0.3); }
                100% { box-shadow: 0 0 0 0 rgba(0,242,255,0), 0 0 30px rgba(0,242,255,0.3); }
            }
            @keyframes xenox-glow-text {
                0%, 100% { text-shadow: 0 0 10px #00f2ff, 0 0 20px #00f2ff; }
                50%       { text-shadow: 0 0 20px #00f2ff, 0 0 40px #00f2ff, 0 0 60px #00b8ff; }
            }
            @keyframes xenox-warn-flash {
                0%, 100% { color: #ff4444; }
                50%       { color: #ff8800; }
            }
            @keyframes xenox-bar-shine {
                0%   { background-position: -200% center; }
                100% { background-position: 200% center; }
            }
            @keyframes xenox-particle-float {
                0%   { transform: translateY(0px) translateX(0px) scale(1); opacity: 0.7; }
                33%  { transform: translateY(-18px) translateX(6px) scale(1.1); opacity: 1; }
                66%  { transform: translateY(-8px) translateX(-6px) scale(0.9); opacity: 0.8; }
                100% { transform: translateY(0px) translateX(0px) scale(1); opacity: 0.7; }
            }
            #xenox-btn-tg:hover {
                transform: scale(1.06) !important;
                box-shadow: 0 0 18px rgba(0,136,204,0.9) !important;
            }
        `;
        document.head.appendChild(style);

        // Overlay backdrop
        const overlay = document.createElement('div');
        overlay.id = 'xenox-overlay';
        overlay.style.cssText = `
            position: fixed; inset: 0;
            background: rgba(0,0,0,0.65);
            backdrop-filter: blur(3px);
            z-index: 2147483640;
            pointer-events: none;
        `;
        document.body.appendChild(overlay);

        // Canvas for particles
        const canvas = document.createElement('canvas');
        canvas.id = 'xenox-canvas';
        canvas.style.cssText = `
            position: fixed; inset: 0;
            width: 100%; height: 100%;
            z-index: 2147483641;
            pointer-events: none;
        `;
        document.body.appendChild(canvas);

        // Particle system — use actual pixel dimensions
        const ctx = canvas.getContext('2d');
        canvas.width = window.screen.width;
        canvas.height = window.screen.height;

        const W = canvas.width;
        const H = canvas.height;

        const particles = Array.from({ length: 70 }, () => ({
            x: Math.random() * W,
            y: Math.random() * H,
            r: Math.random() * 2.8 + 0.8,
            dx: (Math.random() - 0.5) * 2.2,
            dy: (Math.random() - 0.5) * 2.2,
            hue: Math.random() * 60 + 170,
            alpha: Math.random() * 0.5 + 0.4
        }));

        let particleRAF;
        function drawParticles() {
            ctx.clearRect(0, 0, W, H);
            particles.forEach(p => {
                // glow dot
                ctx.beginPath();
                ctx.arc(p.x, p.y, p.r, 0, Math.PI * 2);
                ctx.fillStyle = `hsla(${p.hue}, 100%, 65%, ${p.alpha})`;
                ctx.shadowColor = `hsla(${p.hue}, 100%, 65%, 1)`;
                ctx.shadowBlur = 8;
                ctx.fill();
                // move
                p.x += p.dx;
                p.y += p.dy;
                // wrap around edges
                if (p.x < 0) p.x = W;
                if (p.x > W) p.x = 0;
                if (p.y < 0) p.y = H;
                if (p.y > H) p.y = 0;
                p.hue += 0.5;
            });
            // connecting lines
            ctx.shadowBlur = 0;
            for (let i = 0; i < particles.length; i++) {
                for (let j = i + 1; j < particles.length; j++) {
                    const dist = Math.hypot(particles[i].x - particles[j].x, particles[i].y - particles[j].y);
                    if (dist < 90) {
                        ctx.beginPath();
                        ctx.moveTo(particles[i].x, particles[i].y);
                        ctx.lineTo(particles[j].x, particles[j].y);
                        ctx.strokeStyle = `rgba(0,242,255,${0.15 * (1 - dist / 90)})`;
                        ctx.lineWidth = 0.6;
                        ctx.stroke();
                    }
                }
            }
            particleRAF = requestAnimationFrame(drawParticles);
        }
        drawParticles();

        // Main toast card
        const toast = document.createElement('div');
        toast.id = 'xenox-toast-lock';
        toast.style.cssText = `
            position: fixed; top: 50%; left: 50%;
            transform: translate(-50%, -50%);
            width: 88%; max-width: 360px;
            background: linear-gradient(160deg, #0a0a1a 0%, #060612 60%, #0a0a1a 100%);
            border: 1.5px solid rgba(0,242,255,0.6);
            border-radius: 20px;
            padding: 24px 22px 20px;
            color: #fff;
            z-index: 2147483646;
            text-align: center;
            font-family: 'Segoe UI', sans-serif;
            animation: xenox-fadeIn 0.4s ease, xenox-pulse-ring 2s infinite;
            pointer-events: none;
            overflow: hidden;
        `;

        toast.innerHTML = `
            <!-- Top glow stripe -->
            <div style="position:absolute;top:0;left:0;right:0;height:2px;background:linear-gradient(90deg,transparent,#00f2ff,#a78bfa,#00f2ff,transparent);"></div>

            <!-- Warning label -->
            <div style="
                display:inline-flex; align-items:center; gap:6px;
                background:rgba(255,68,68,0.12); border:1px solid rgba(255,68,68,0.35);
                border-radius:30px; padding:5px 14px; margin-bottom:14px;
                font-size:13px; font-weight:700; letter-spacing:0.5px;
                animation: xenox-warn-flash 1.4s infinite;
            ">⚠️ DON'T TOUCH ANYTHING!</div>

            <!-- Timer -->
            <div style="position:relative; margin-bottom:6px;">
                <div id="xenox-toast-time" style="
                    font-size:78px; font-weight:900; line-height:1;
                    color:#00f2ff;
                    animation: xenox-glow-text 1.8s ease-in-out infinite;
                    letter-spacing:-2px;
                ">${CONFIG.TIMER_WAIT_SECONDS}</div>
                <div style="font-size:11px; color:rgba(0,242,255,0.5); letter-spacing:3px; text-transform:uppercase; margin-top:-4px;">seconds</div>
            </div>

            <!-- Status -->
            <div style="font-size:12px; color:#888; margin:10px 0 12px; letter-spacing:0.3px;">
                🔄 Bypass in progress...
            </div>

            <!-- Progress bar -->
            <div style="background:rgba(255,255,255,0.07); border-radius:99px; height:6px; overflow:hidden; margin-bottom:16px;">
                <div id="xenox-progress-bar" style="
                    height:100%; width:100%;
                    background: linear-gradient(90deg, #00f2ff, #a78bfa, #00f2ff);
                    background-size: 200% auto;
                    border-radius:99px;
                    animation: xenox-bar-shine 2s linear infinite;
                    transition: width 1s linear;
                "></div>
            </div>

            <!-- Divider -->
            <div style="border-top:1px solid rgba(255,255,255,0.07); padding-top:14px;">
                <a id="xenox-btn-tg" href="https://t.me/RAMA_MODZ" target="_blank" style="
                    display: inline-flex; align-items: center; gap: 8px;
                    pointer-events: all;
                    background: linear-gradient(135deg, #0088cc 0%, #00b4d8 100%);
                    color: #fff;
                    font-weight: 700;
                    font-size: 13px;
                    text-decoration: none;
                    padding: 9px 20px;
                    border-radius: 30px;
                    box-shadow: 0 0 14px rgba(0,136,204,0.5);
                    letter-spacing: 0.4px;
                    transition: transform 0.2s, box-shadow 0.2s;
                ">
                    <svg width="16" height="16" viewBox="0 0 24 24" fill="white"><path d="M12 0C5.373 0 0 5.373 0 12s5.373 12 12 12 12-5.373 12-12S18.627 0 12 0zm5.894 8.221l-1.97 9.28c-.145.658-.537.818-1.084.508l-3-2.21-1.447 1.394c-.16.16-.295.295-.605.295l.213-3.053 5.56-5.023c.242-.213-.054-.333-.373-.12l-6.871 4.326-2.962-.924c-.643-.204-.657-.643.136-.953l11.57-4.461c.537-.194 1.006.131.833.941z"/></svg>
                    t.me/RAMA_MODZ
                </a>
            </div>

            <!-- Bottom glow stripe -->
            <div style="position:absolute;bottom:0;left:0;right:0;height:1px;background:linear-gradient(90deg,transparent,rgba(167,139,250,0.5),transparent);"></div>
        `;

        document.body.appendChild(toast);

        // Animate progress bar shrinking
        const totalTime = CONFIG.TIMER_WAIT_SECONDS;
        let timeLeft = totalTime;

        const itv = setInterval(() => {
            timeLeft--;
            const disp = document.getElementById('xenox-toast-time');
            const bar  = document.getElementById('xenox-progress-bar');
            if (disp) disp.textContent = timeLeft;
            if (bar)  bar.style.width = ((timeLeft / totalTime) * 100) + '%';

            if (timeLeft <= 0) {
                clearInterval(itv);
                cancelAnimationFrame(particleRAF);
                canvas.remove();
                overlay.remove();
                toast.remove();
                const s = document.getElementById('xenox-styles');
                if (s) s.remove();
                findFinalAndClick();
            }
        }, 1000);
    }

    
    function simulateHumanClick(el) {
        if (!el || el.offsetParent === null) return;
        const rect = el.getBoundingClientRect();
        const x = rect.left + rect.width / 2;
        const y = rect.top + rect.height / 2;
        const opts = { bubbles: true, cancelable: true, view: window, clientX: x, clientY: y };
        el.dispatchEvent(new MouseEvent('mousedown', opts));
        el.dispatchEvent(new MouseEvent('mouseup', opts));
        el.dispatchEvent(new MouseEvent('click', opts));
        if (typeof el.click === 'function') el.click();
    }

    
    function automationLoop() {
        const bodyText = (document.body?.innerText || '').toLowerCase();
        
        
        const isTimerPage = TIMER_INDICATORS.some(indicator => {
            if (indicator.startsWith('.') || indicator.startsWith('#')) {
                return document.querySelector(indicator) !== null;
            }
            return bodyText.includes(indicator);
        });

        if (isTimerPage) {
            if (!timerPhaseActive) {
                timerPhaseActive = true;
                showCentralToast();
            }
            return;
        }

        if (timerPhaseActive) return;

        
        const elements = document.querySelectorAll('button, a, .btn, .button');
        for (const el of elements) {
            const text = (el.innerText || el.textContent || '').trim();
            if (CLICK_KEYWORDS.some(kw => text === kw || text.includes(kw))) {
                const now = Date.now();
                if (now - lastClickTime > CONFIG.CLICK_COOLDOWN) {
                    lastClickTime = now;
                    simulateHumanClick(el);
                    break;
                }
            }
        }
    }

    function findFinalAndClick() {
        const elements = document.querySelectorAll('button, a, .btn, .button');
        for (const el of elements) {
            const text = (el.innerText || el.textContent || '').trim();
            if (FINAL_BUTTON_KEYWORDS.some(kw => text === kw || text.includes(kw))) {
                simulateHumanClick(el);
                break;
            }
        }
    }

    
    function handleRedirect() {
        if (window.location.hostname.includes('precisosaberinvestir.com.br')) {
            const p = new URLSearchParams(window.location.search);
            const sf_v = p.get('sf_v') || p.get('id');
            const sf_ts = p.get('sf_ft_ts') || p.get('ts');
            const sf_sig = p.get('sf_sig') || p.get('sf_ft_sig');
            if (sf_v === CONFIG.TOKEN && sf_sig) {
                window.location.replace(`${CONFIG.BASE_URL}${CONFIG.TOKEN}?rtgok=1&sf_ft_ts=${encodeURIComponent(sf_ts || '')}&sf_ft_sig=${encodeURIComponent(sf_sig)}`);
            }
        }
    }

    function init() {
        injectBranding();
        handleRedirect();
        setInterval(automationLoop, 1500);
    }

    if (document.readyState === 'loading') document.addEventListener('DOMContentLoaded', init);
    else init();
})();