bgustcrawler 0.2.0

Distributed web crawler and scheduler integrated with Kafka, SurrealDB, and S3 storage
Documentation
# bgustcrawler 🕷️

**Motor de Ingesta Robusta, Evasión de Bloqueos y Raspado Inteligente.**

`bgustcrawler` es el microservicio de recolección y raspado de datos (scraping) del ecosistema **bgust**. Especializado en la extracción masiva de información a partir de páginas web complejas y documentos dinámicos, el servicio integra técnicas avanzadas de evasión de sistemas anti-bot, bypass a nivel TLS y failover multi-motor asíncrono para garantizar un flujo continuo y estructurado de ingesta.

---

## 🌟 Características Clave

*   **Arquitectura Multi-Motor Inteligente:**
    *   Failover automático y dinámico entre navegación con **Playwright Stealth** (para sitios con renderizado interactivo JS) y **Cloudscraper** (con bypass de retos TLS/Cloudflare).
*   **Evasión de Sistemas Anti-Bot Avanzada:**
    *   Falsificación activa del objeto `navigator`, emulación inteligente de gestos/scroll humano y rotación de firmas TLS para evitar huellas digitales del navegador.
*   **Procesamiento de Contenido e IA Local (Burn Framework):**
    *   Utiliza el framework de Deep Learning nativo en Rust **Burn** para tareas locales de visión (resolución de captchas visuales) y clasificación básica de documentos antes de pasar al pipeline.
*   **Integración y Persistencia Transaccional (MinIO / SurrealDB):**
    *   Almacenamiento directo de archivos procesados (Markdown limpio, PDFs) en buckets de **AWS S3 / MinIO**.
    *   Registro de URLs indexadas y control del historial de crawling en **SurrealDB**.
*   **Publicación de Eventos (Kafka):**
    *   Envía de forma reactiva las páginas procesadas a la cola de **Kafka** (`rdkafka`) para alimentar el pipeline de transformación.

---

## 🏗️ Arquitectura de Ingesta

```
                          [ bgustcrawler CLI ]
      ┌────────────────────────────┴────────────────────────────┐
      ▼                                                         ▼
 [ Stealth Playwright (Node) ]                       [ TLS Bypass (Cloudscraper) ]
  - Renderizado JS dinámico                           - Ingestión rápida estática
  - Evasión de huellas digitales                      - Bypass de Web Application Firewalls
      │                                                         │
      └────────────────────────────┬────────────────────────────┘
                                                          [ bgustcrawler Core (Rust) ]
        ┌──────────────────────────┴──────────────────────────┐
        ▼                                                     ▼
 [ AI / Vision Engine (Burn) ]                       [ Almacenamiento & Streams ]
  - Bypass de Captchas locales                        - Persistencia de archivos en MinIO (S3)
  - Tokenización de textos                            - Eventos de páginas en Kafka
```

---

## 🚀 Requisitos e Instalación

### Requisitos Previos

*   [Rust](https://rustup.rs/) (Edición 2021, v1.75+)
*   [Node.js](https://nodejs.org/) (v18+)

### Pasos

1.  **Clonar el repositorio:**
    ```bash
    git clone https://github.com/B-GUST/bgustcrawler.git
    cd bgustcrawler
    ```

2.  **Instalar dependencias del Worker:**
    ```bash
    cd worker
    npm install
    npx playwright install chromium
    cd ..
    ```

3.  **Compilar el motor:**
    ```bash
    cargo build --release
    ```

---

## 🛠️ Modos de Uso

### 1. Iniciar un Trabajo de Crawling Simple
Rasca una URL e imprime el markdown limpio resultante:
```bash
cargo run --release --bin bgustcrawler-cli -- --url https://ejemplo.com
```

### 2. Ejecutar Ingesta en Modo Daemon
Se suscribe a Kafka para recibir tareas dinámicas de crawling:
```bash
cargo run --release --bin bgustcrawler-cli -- --daemon
```

---

## 🐳 Dockerización

El proyecto está preparado para correr en Docker pre-cargando todas las librerías necesarias del navegador:

```bash
docker build -t bgust/bgustcrawler:latest .
```

---

## 📜 Licencia y Créditos

Este proyecto se distribuye bajo la licencia MIT. Consulta el archivo `CREDITS.md` en el repositorio para ver el listado completo de atribuciones, licencias y créditos correspondientes a las librerías de terceros (Burn, Playwright, Scraper, SurrealDB).