# Motores de Raspado e Ingesta 📡
`bgustscraper` opera bajo un enfoque de **Orquestación Multi-Motor Híbrido** en el que se alternan y respaldan diferentes estrategias de red y de simulación de navegador para evadir sistemas anti-bot (Cloudflare, CAPTCHAs) y garantizar la descarga de documentos de forma robusta.
---
## 🖥️ Motor 1: Stealth Playwright Worker (`worker/index.js`)
Es el motor principal por defecto. Levanta una instancia de **Playwright** controlando Chromium de manera programática en segundo plano.
### Técnicas de Evasión Anti-Bot:
* **Playwright Extra + Stealth Plugin:** Utiliza `playwright-extra` para inyectar configuraciones que imitan el comportamiento de un usuario humano.
* **Overrides de Navegador Activos (Init Scripts):**
* Remueve la propiedad `navigator.webdriver` (la cual expone que el navegador está siendo controlado automatizadamente).
* Simula el objeto global `window.chrome` y sus propiedades.
* Inyecta listados realistas de lenguajes (`es-ES`, `es`, `en`) y plugins activos en el navegador.
* **Scroll Suave Dinámico:** Evalúa y ejecuta de forma asíncrona un scroll vertical no infinito (máximo 5000px) para forzar la carga de imágenes, contenidos "lazy loading" y elementos inyectados dinámicamente mediante React, Vue o Angular.
---
## 📡 Motor 2: TLS Bypass (`worker/cloudscraper_worker.js`)
Si el Motor 1 falla debido a un bloqueo estricto de red, redireccionamientos infinitos o retos agresivos de Cloudflare, `bgustscraper` destruye de manera inmediata el subproceso de Playwright y levanta automáticamente el **Motor 2**.
### Características:
* Utiliza la librería **Cloudscraper**, la cual realiza peticiones a nivel HTTP de bajo nivel.
* Inyecta la negociación de firmas TLS idénticas a navegadores de escritorio comerciales para engañar a firewalls a nivel de red y superar retos anti-bot sin sobrecargar memoria levantando un navegador.
* Entrega una velocidad de descarga de páginas estáticas exponencialmente superior a Playwright.
---
## 🕵️ Motor 3: Deep Scan (Interacción Dinámica de Descarga)
Cuando el scraper accede a un sitio web y no encuentra ningún enlace directo (`.pdf`, `.csv`, etc.) en la estructura original del HTML:
1. Activa de forma automatizada el modo **Deep Scan**.
2. Playwright escanea interactivamente el árbol DOM de la página renderizada buscando selectores y locators específicos (ej: `"Download PDF"`, `"Descargar"`, `.download-button`, etc.).
3. Ejecuta de forma física y secuencial un clic sobre cada botón dinámico de descarga.
4. Espera a que se complete el flujo de descarga del navegador (capturando redirecciones), y extrae de forma semántica los nuevos documentos obtenidos en caliente.