Greasy Fork

Greasy Fork is available in English.

Universal Fast Shortlink Bypasser (Final Perfect v28)

v28: Stronger skip for olamovies subdomains + Cloudflare Turnstile loops; fast shortlink bypass.

当前为 2026-02-03 提交的版本,查看 最新版本

您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey 篡改猴Greasemonkey 油猴子Violentmonkey 暴力猴,才能安装此脚本。

您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey 篡改猴,才能安装此脚本。

您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey 篡改猴Violentmonkey 暴力猴,才能安装此脚本。

您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey 篡改猴Userscripts ,才能安装此脚本。

您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey 篡改猴,才能安装此脚本。

您需要先安装一款用户脚本管理器扩展后才能安装此脚本。

(我已经安装了用户脚本管理器,让我安装!)

您需要先安装一款用户样式管理器扩展,比如 Stylus,才能安装此样式。

您需要先安装一款用户样式管理器扩展,比如 Stylus,才能安装此样式。

您需要先安装一款用户样式管理器扩展,比如 Stylus,才能安装此样式。

您需要先安装一款用户样式管理器扩展后才能安装此样式。

您需要先安装一款用户样式管理器扩展后才能安装此样式。

您需要先安装一款用户样式管理器扩展后才能安装此样式。

(我已经安装了用户样式管理器,让我安装!)

// ==UserScript==
// @name         Universal Fast Shortlink Bypasser (Final Perfect v28)
// @namespace    https://violentmonkey.top/
// @version      28.0
// @description  v28: Stronger skip for olamovies subdomains + Cloudflare Turnstile loops; fast shortlink bypass.
// @author       Gemini AI / Grok refinements
// @match        *://*/*
// @run-at       document-start
// @grant        none
// ==/UserScript==

(function() {
    'use strict';

    const HOST = window.location.hostname.toLowerCase();
    const TITLE = (document.title || "").toLowerCase();
    const PATH  = window.location.pathname.toLowerCase();

    // ==========================================
    // 🛡️ ENHANCED IRON SHIELD v28 (Stronger Security)
    // ==========================================
    
    // Skip completely on these – prevents loops on Cloudflare/Turnstile pages
    const SECURE_PATTERNS = [
        'cloudflare', 'challenge', 'turnstile', 
        'olamovies', 'olxmovies', 'olamovie', 'new',  // catches new8.olamovies.onl, newX.olamovies...
        'movie', 'film', 'webseries', 'store', 'earn', 'short'
    ];

    const isSecureZone = 
        SECURE_PATTERNS.some(p => HOST.includes(p)) ||
        TITLE.includes('verifying') || TITLE.includes('human') ||
        TITLE.includes('turnstile') || TITLE.includes('challenge') ||
        TITLE.includes('security') || TITLE.includes('connection') ||
        TITLE.includes('review') || TITLE.includes('moment') ||
        PATH.includes('/generate/') || PATH.includes('/challenge/') ||
        document.querySelector('div[class*="cf-"]') || document.querySelector('[data-sitekey]');  // Turnstile/hCaptcha hint

    if (isSecureZone) {
        console.log("[v28] Enhanced Security Zone: Script fully sleeping. (Likely Cloudflare/Turnstile)");
        return; 
    }

    // ==========================================
    // 🧠 ADAPTIVE TIME MACHINE (unchanged – works well)
    // ==========================================
    
    let TIME_FACTOR = HOST.includes('gplinks') ? 1 : 10;
    
    const originalDateNow = Date.now;
    let startTimestamp = originalDateNow();
    Date.now = function() {
        const realElapsed = originalDateNow() - startTimestamp;
        return startTimestamp + (realElapsed * TIME_FACTOR);
    };

    const originalTimeout = window.setTimeout;
    window.setTimeout = function(func, delay) {
        if (delay >= 1000) return originalTimeout(func, (TIME_FACTOR > 1 ? 100 : 1000));
        return originalTimeout(func, delay);
    };

    // ==========================================
    // 🔍 STEP & PAGINATION SENSOR (unchanged)
    // ==========================================
    
    function getStepStatus() {
        const text = document.body.innerText;
        const match = text.match(/Step\s*(\d+)\s*of\s*(\d+)/i) || text.match(/(\d+)\s*\/\s*(\d+)/);
        if (match) {
            const current = parseInt(match[1]);
            const total = parseInt(match[2]);
            return { isFinal: (current === total && total > 1), step: current };
        }
        return { isFinal: false, step: 0 };
    }

    function isPagination(el) {
        const p = el.parentElement;
        const text = el.innerText.toLowerCase().trim();
        
        if (text === 'next') {
            const body = document.body.innerText.toLowerCase();
            if (body.includes('previous') || body.includes('prev page') || /\d/.test(p?.innerText || '')) return true;
        }
        
        if (p && (p.className.includes('pagination') || p.id.includes('pagination'))) return true;
        return false;
    }

    // ==========================================
    // 🕵️ SCANNER
    // ==========================================
    const MEMORY = new Set();
    const TARGETS = ['skip', 'continue', 'next', 'go to link', 'get link', 'verify', 'i am not a robot', 'proceed', 'unlock'];

    function scan() {
        const status = getStepStatus();
        if (status.isFinal || HOST.includes('gplinks')) TIME_FACTOR = 1;

        const elements = document.querySelectorAll('button, a, input[type="submit"], div[role="button"], span.btn, [onclick]');

        for (let el of elements) {
            if (MEMORY.has(el) || el.offsetParent === null) continue;

            const rect = el.getBoundingClientRect();
            if (rect.width > 350 || rect.height > 150) continue; 

            let text = (el.innerText || el.value || el.getAttribute('aria-label') || "").toLowerCase().trim();
            if (text.length > 35 || text.length < 2) continue;

            if (TARGETS.some(key => text.includes(key))) {
                
                if (text.includes('next') && isPagination(el)) {
                    MEMORY.add(el);
                    continue;
                }

                MEMORY.add(el);

                if (status.isFinal) {
                    TIME_FACTOR = 1; 
                    el.style.border = "6px solid #ff00ff"; 
                    const ui = document.createElement('div');
                    ui.innerHTML = "⚠️ <b>FINAL STEP:</b> Click Manually Now!";
                    ui.style.cssText = "position:fixed; top:20px; left:50%; transform:translateX(-50%); background:magenta; color:white; padding:15px; font-weight:bold; z-index:100000; border-radius:10px; box-shadow:0 0 20px black;";
                    document.body.appendChild(ui);
                } else {
                    el.style.border = "5px solid #00ff00"; 
                    setTimeout(() => { 
                        try { el.click(); } catch(e) { console.log("[v28] Click failed:", e); }
                    }, 2800); 
                }
                break;  // One action per scan cycle
            }
        }
    }

    // Slightly slower interval to reduce CPU on dynamic pages
    setInterval(scan, 1500);

    console.log("[v28] Active – Enhanced olamovies/Cloudflare skip enabled.");
})();