Greasy Fork is available in English.
v28: Stronger skip for olamovies subdomains + Cloudflare Turnstile loops; fast shortlink bypass.
当前为
// ==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.");
})();