From cbafa034f0e1ac32dceaa3cb77872ca3b952a832 Mon Sep 17 00:00:00 2001 From: marsalva Date: Sun, 22 Mar 2026 22:08:37 +0000 Subject: [PATCH] Actualizar robot.js --- robot.js | 69 +++++++++++++++++--------------------------------------- 1 file changed, 21 insertions(+), 48 deletions(-) diff --git a/robot.js b/robot.js index ab92a68..a74e94c 100644 --- a/robot.js +++ b/robot.js @@ -113,50 +113,17 @@ async function main() { // ========================================== // 馃彞 MULTIASISTENCIA (PAGINACI脫N ANTIBALAS Y DOBLE RECARGA) // ========================================== -async function runMultiasistencia(ownerId, user, pass, gremiosDB) { - const browser = await chromium.launch({ - headless: HEADLESS, - args: ['--no-sandbox', '--disable-setuid-sandbox', '--disable-dev-shm-usage', '--disable-gpu'] - }); - const context = await browser.newContext(); - const page = await context.newPage(); - - try { - console.log("馃實 [Multi] Iniciando sesi贸n..."); - await gotoWithRetry(page, 'https://web.multiasistencia.com/w3multi/acceso.php'); - - await page.fill('input[name="usuario"]', user); - await page.fill('input[type="password"]', pass); - await page.click('input[type="submit"]'); - await page.waitForTimeout(4000); - - console.log("馃摜 [Multi] Entrando al buz贸n..."); - await gotoWithRetry(page, 'https://web.multiasistencia.com/w3multi/frepasos_new.php?refresh=1'); - await page.waitForTimeout(3000); - - // 馃攧 DOBLE RECARGA FORZADA PARA DESPERTAR AL SERVIDOR - console.log("馃攧 [Multi] Forzando doble recarga del buz贸n..."); - for (let i = 1; i <= 2; i++) { - try { - console.log(` 馃憠 Forzando recarga ${i}/2...`); - await page.evaluate(() => { - if (typeof refrescar === 'function') refrescar(); - else if (document.getElementById('recargar')) document.getElementById('recargar').click(); - }); - await page.waitForTimeout(3500); - } catch (e) { - console.log(` 鈿狅笍 Fallo menor en recarga ${i}: ${e.message}`); - } - } - - // --- BUCLE DE PAGINACI脫N INFALIBLE --- +// --- BUCLE DE PAGINACI脫N INFALIBLE --- let todosExpedientes = new Set(); let paginaActual = 1; console.log(`馃搫 [Multi] Iniciando lectura por p谩ginas...`); while (true) { console.log(`\n馃搫 [Multi] Escaneando p谩gina ${paginaActual}...`); - await page.waitForTimeout(1500); + + // 馃洃 NUEVO: Esperamos a que los enlaces existan o damos 5 seg. de margen extra + await page.waitForSelector('a[href*="reparacion="]', { timeout: 6000 }).catch(() => {}); + await page.waitForTimeout(1000); // 1. Extraemos los enlaces de esta p谩gina const expedientesPagina = await page.evaluate(() => { @@ -166,25 +133,31 @@ async function runMultiasistencia(ownerId, user, pass, gremiosDB) { const unicosPagina = [...new Set(expedientesPagina)]; console.log(` 馃憠 Encontrados ${unicosPagina.length} expedientes 煤nicos en la p谩g. ${paginaActual}.`); + + if (unicosPagina.length === 0) { + console.log(" 鈿狅笍 P谩gina en blanco o cargando demasiado lento. Terminamos aqu铆."); + break; + } + unicosPagina.forEach(ref => todosExpedientes.add(ref)); - // 2. BUSCAMOS Y PULSAMOS EL BOT脫N "SIGUIENTE" DIRECTAMENTE EN EL NAVEGADOR - const hasNextPage = await page.evaluate(() => { + // 2. BUSCAMOS Y PULSAMOS EL BOT脫N "SIGUIENTE" + const clicked = await page.evaluate(() => { const links = Array.from(document.querySelectorAll('a.lnkheader')); - // Buscamos ignorando si tiene flechitas (>>) o may煤sculas - const nextBtn = links.find(a => a.innerText.toLowerCase().includes('siguiente')); - if (nextBtn) { - nextBtn.click(); // Ejecuta el javascript de la web internamente + const btn = links.find(a => a.innerText.toLowerCase().includes('siguiente')); + if (btn) { + btn.click(); return true; } return false; }); - if (hasNextPage) { - console.log(` 鉃★笍 Bot贸n 'Siguiente' detectado. Pulsando y esperando a cargar...`); - // Le damos 4 segundos a la web para que cargue la nueva p谩gina tras el click - await page.waitForTimeout(4000); + if (clicked) { + console.log(` 鉃★笍 Bot贸n 'Siguiente' detectado. Pulsando y esperando a que cargue...`); + // 馃洃 EL FRENO: Congelamos el robot 5 segundos fijos para que el servidor responda + await page.waitForTimeout(5000); paginaActual++; + if(paginaActual > 20) { console.log("鈿狅笍 [Multi] L铆mite de 20 p谩ginas alcanzado por seguridad."); break;