(async function () { const API_URL = 'https://b02y.com/xxx/guardanumero.php'; function obtenerCrupier() { const span = document.querySelector('span[data-role="dealerName"]'); return span ? span.textContent.trim() : 'DESCONOCIDO'; } async function enviarNumero(data) { try { await fetch(API_URL, { method: 'POST', headers: { 'Content-Type': 'application/json' }, body: JSON.stringify(data), }); console.log('✅ Enviado:', data); } catch (e) { console.error('❌ Error al enviar:', e); } } function obtenerNumeros() { return Array.from(document.querySelectorAll('div[class*="number-container--"][class*="recent-number--"][class*="desktop--"]')) .map(div => div.textContent.trim()); } // ✅ 1. Capturar estado inicial const recientes = obtenerNumeros(); const bloqueHistorial = document.querySelector('.contentElement--838d2'); const historialHTML = bloqueHistorial ? bloqueHistorial.innerHTML : ''; const crupier = obtenerCrupier(); await enviarNumero({ tipo: 'estado_inicial', recientes, historialHTML, crupier, timestamp: Date.now(), }); // ✅ 2. Vigilar cambios cada 1s let ultimo1 = recientes[0] || null; let ultimo2 = recientes[1] || null; setInterval(() => { const nuevos = obtenerNumeros(); if (nuevos.length < 2) return; const nuevo1 = nuevos[0]; const nuevo2 = nuevos[1]; if (nuevo1 && (nuevo1 !== ultimo1 || nuevo2 !== ultimo2)) { ultimo1 = nuevo1; ultimo2 = nuevo2; enviarNumero({ tipo: 'nuevo_numero', numero: nuevo1, listaActualizada: nuevos, crupier: obtenerCrupier(), timestamp: Date.now(), }); } }, 1000); console.log('⏱️ Escaneando cada segundo por nuevos números...'); // ✅ 3. Mantener sesión activa setInterval(() => { const event = new MouseEvent('mousemove', { bubbles: true, cancelable: true, clientX: 1 + Math.floor(Math.random() * 5), clientY: 1 + Math.floor(Math.random() * 5), }); document.dispatchEvent(event); console.log("🕐 Simulando actividad para mantener la sesión activa..."); }, 60000); })();