Greasy Fork is available in English.
Fixed "Green Box" issue. Won't highlight huge elements (movie posters). Adaptive speed for GPLinks/PowerGam.
当前为
// ==UserScript==
// @name Universal Fast Shortlink Bypasser (Precision v15)
// @namespace https://violentmonkey.top/
// @version 15.0
// @description Fixed "Green Box" issue. Won't highlight huge elements (movie posters). Adaptive speed for GPLinks/PowerGam.
// @author Pawan's Assistant
// @match *://*/*
// @run-at document-start
// @grant none
// ==/UserScript==
(function() {
'use strict';
const HOST = window.location.hostname;
const IS_GPLINKS = HOST.includes('gplinks');
// =========================================================================
// 🧠 ADAPTIVE ENGINE (Smart Speed)
// =========================================================================
// 1. Time Bender: ONLY enable for non-GPLinks sites (like PowerGam/OlaMovies)
// This makes the timer 100x faster, but stays OFF for GPLinks to avoid bans.
if (!IS_GPLINKS) {
const TIME_ACCELERATION = 100;
const originalDateNow = Date.now;
let startTimestamp = originalDateNow();
Date.now = function() {
const realElapsed = originalDateNow() - startTimestamp;
return startTimestamp + (realElapsed * TIME_ACCELERATION);
};
const originalPerformanceNow = performance.now.bind(performance);
performance.now = function() {
return originalPerformanceNow() * TIME_ACCELERATION;
};
}
// 2. Timer Pusher (Standard hack for all sites)
const originalTimeout = window.setTimeout;
window.setTimeout = function(func, delay) {
if (delay > 50) return originalTimeout(func, 50);
return originalTimeout(func, delay);
};
const originalInterval = window.setInterval;
window.setInterval = function(func, delay) {
if (delay > 50) return originalInterval(func, 50);
return originalInterval(func, delay);
};
// =========================================================================
// 🕵️ CONFIGURATION
// =========================================================================
const CONFIG = {
scanInterval: 1000,
// Safety Delay: 6s for GPLinks, 2s for others
safetyDelay: IS_GPLINKS ? 6000 : 2000,
targets: [
'skip', 'continue', 'next', 'go to link', 'get link',
'proceder', 'continuar', 'click here', 'verify',
'i am not a robot', 'get url', 'link download'
],
blacklist: [
'google', 'youtube', 'facebook', 'instagram', 'netflix',
'amazon', 'bank', 'sbi', 'rrb', 'ibps', 'ssc', 'upsc',
'irctc', 'wikipedia', 'reddit'
]
};
if (CONFIG.blacklist.some(d => HOST.includes(d))) return;
// =========================================================================
// 🕵️ SCANNER (The Fix for Green Boxes)
// =========================================================================
const MEMORY = new Set();
function scan() {
const elements = document.querySelectorAll('button, a, input[type="submit"], div[role="button"], span.btn');
for (let el of elements) {
if (MEMORY.has(el)) continue;
if (el.offsetParent === null) continue;
// 🛑 FIX 1: SIZE FILTER (The "Green Box" Killer)
// If element is too big (like a movie poster), ignore it.
const rect = el.getBoundingClientRect();
if (rect.width > 300 || rect.height > 100) continue;
// 🛑 FIX 2: TEXT LIMIT
// Don't click paragraphs. Only short button text.
let text = (el.innerText || el.value || "").toLowerCase().trim();
if (text.length > 30 || text.length < 2) continue;
if (CONFIG.targets.some(key => text.includes(key))) {
// 🛑 FIX 3: STRICT "NEXT"
// Only click "Next" if it's NOT a blog pagination
if (text === 'next') {
const body = document.body.innerText.toLowerCase();
if (body.includes('previous') || body.includes('prev page')) continue;
}
// Ad Protection
if (el.tagName === 'A' && el.href && (el.href.includes('googleads') || el.href.includes('doubleclick'))) continue;
// --- EXECUTE ---
console.log(`[Precision v15] Target: "${text}"`);
// Visuals
el.style.border = "3px solid #00ff00";
el.style.position = "relative";
// Label
const label = document.createElement('span');
label.innerText = `⏳ ${CONFIG.safetyDelay/1000}s`;
label.style.cssText = "position:absolute; top:-20px; left:0; background:black; color:white; padding:2px; font-size:10px; z-index:9999;";
if(el.parentNode) el.parentNode.insertBefore(label, el);
MEMORY.add(el);
// Wait & Click
setTimeout(() => {
label.style.background = "green";
label.innerText = "GO";
el.click();
}, CONFIG.safetyDelay);
break;
}
}
}
window.addEventListener('load', () => {
setInterval(scan, CONFIG.scanInterval);
});
})();