// ==UserScript== // @name BypassH1 - Fast Link Shortener Bypass // @namespace https://github.com/tu-usuario // @version 1.4 // @description Bypass rápido y automático para lootdest, loot-link y sitios relacionados // @author TuNombre // @match *://loot-link.com/s?* // @match *://loot-links.com/s?* // @match *://lootlink.org/s?* // @match *://lootlinks.co/s?* // @match *://lootdest.info/s?* // @match *://lootdest.org/s?* // @match *://lootdest.com/s?* // @match *://links-loot.com/s?* // @match *://linksloot.net/s?* // @icon https://www.google.com/s2/favicons?domain=luarmor.net // @grant none // @license MIT // @downloadURL https://update.greasyfork.icu/scripts/553396/BypassH1%20-%20Fast%20Link%20Shortener%20Bypass.user.js // @updateURL https://update.greasyfork.icu/scripts/553396/BypassH1%20-%20Fast%20Link%20Shortener%20Bypass.meta.js // ==/UserScript== (function() { 'use strict'; const hostname = window.location.hostname; // Función mejorada para esperar elementos function waitForElement(selector, callback, interval = 100, timeout = 10000) { const startTime = Date.now(); const timer = setInterval(() => { const element = document.querySelector(selector); if (element) { clearInterval(timer); callback(element); } else if (Date.now() - startTime > timeout) { clearInterval(timer); console.log(`BypassH1: Element "${selector}" not found within ${timeout}ms`); } }, interval); } // Función de decodificación mejorada function decodeURI(encodedString, prefixLength = 5) { try { let decodedString = ''; const base64Decoded = atob(encodedString); const prefix = base64Decoded.substring(0, prefixLength); const encodedPortion = base64Decoded.substring(prefixLength); for (let i = 0; i < encodedPortion.length; i++) { const encodedChar = encodedPortion.charCodeAt(i); const prefixChar = prefix.charCodeAt(i % prefix.length); const decodedChar = encodedChar ^ prefixChar; decodedString += String.fromCharCode(decodedChar); } return decodedString; } catch (error) { console.error('BypassH1: Error en decodificación:', error); return null; } } // Limpiar localStorage de forma más selectiva function cleanLocalStorage() { try { const keysToKeep = []; for (let i = 0; i < localStorage.length; i++) { const key = localStorage.key(i); if (key && key.startsWith('t_')) { // Mantener solo algunas keys, eliminar las demás const keyNum = parseInt(key.replace('t_', '')); if (keyNum !== 54 && keyNum < 100) { localStorage.removeItem(key); } } } // Agregar keys falsas para bypass for (let i = 0; i < 20; i++) { if (i !== 54) { const key = `t_${i}`; const data = { value: 1, expiry: new Date().getTime() + 604800000 }; localStorage.setItem(key, JSON.stringify(data)); } } console.log('BypassH1: localStorage limpiado y preparado'); } catch (error) { console.error('BypassH1: Error limpiando localStorage:', error); } } // CSS del spinner (mejorado) function addSpinnerCSS() { const spinnerCSS = ` `; document.head.insertAdjacentHTML('beforeend', spinnerCSS); } // Intentar encontrar y seguir el enlace automáticamente function findAndFollowLink() { console.log('BypassH1: Buscando enlace de destino...'); // Buscar enlaces comunes const linkSelectors = [ 'a[href*="lootdest"]', 'a[href*="loot-link"]', 'a[href*="lootlink"]', 'a[href*="linksloot"]' ]; for (let selector of linkSelectors) { const links = document.querySelectorAll(selector); if (links.length > 0) { const href = links[0].href; console.log('BypassH1: Redirigiendo a:', href); window.location.href = href; return; } } // Si no encuentra enlaces, intentar decodificar de los parámetros URL const urlParams = new URLSearchParams(window.location.search); const dataParam = urlParams.get('data'); if (dataParam) { try { const decoded = decodeURI(dataParam); if (decoded && decoded.includes('http')) { console.log('BypassH1: Redirigiendo a URL decodificada'); window.location.href = decoded; return; } } catch (error) { console.error('BypassH1: Error decodificando URL:', error); } } console.log('BypassH1: No se pudo encontrar enlace de destino'); const countdownElement = document.getElementById('countdown'); if (countdownElement) { countdownElement.innerHTML = 'Error: No se encontró enlace'; } } // Buscar elemento con texto UNLOCK CONTENT function searchForUnlockContent(modifyParentElement) { const elements = document.querySelectorAll('body *'); for (let element of elements) { if (element.textContent && element.textContent.includes("UNLOCK CONTENT")) { console.log('BypassH1: Elemento UNLOCK CONTENT encontrado'); modifyParentElement(element); return true; } } return false; } // Buscar botones o enlaces de desbloqueo alternativos function searchForAlternativeElements(modifyParentElement) { const alternatives = [ 'button:contains("Unlock")', 'a:contains("Unlock")', 'button:contains("Get Link")', 'a:contains("Get Link")', 'button:contains("Continue")', 'a:contains("Continue")' ]; for (let selector of alternatives) { const elements = document.querySelectorAll(selector); if (elements.length > 0) { console.log('BypassH1: Elemento alternativo encontrado:', selector); modifyParentElement(elements[0]); return true; } } return false; } // Función principal mejorada para modificar la página function waitForElementAndModifyParent() { console.log('BypassH1: Buscando elementos de bloqueo...'); const modifyParentElement = function(targetElement) { const parentElement = targetElement.parentElement; if (parentElement) { console.log('BypassH1: Elemento UNLOCK CONTENT encontrado, aplicando bypass...'); // Determinar tiempo de espera basado en imágenes const images = document.querySelectorAll('img'); let countdownSeconds = 5; // Reducido significativamente for (let img of images) { const src = img.src.toLowerCase(); if (src.includes('eye.png')) { countdownSeconds = 3; break; } else if (src.includes('bell.png')) { countdownSeconds = 5; break; } else if (src.includes('apps.png') || src.includes('fire.png')) { countdownSeconds = 5; break; } else if (src.includes('gamers.png')) { countdownSeconds = 5; break; } } // Limpiar el elemento padre parentElement.innerHTML = ''; // Crear overlay de espera mejorado const popupHTML = `