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

Pasos

  1. Clonar el repositorio:

    git clone https://github.com/B-GUST/bgustcrawler.git
    cd bgustcrawler
    
  2. Instalar dependencias del Worker:

    cd worker
    npm install
    npx playwright install chromium
    cd ..
    
  3. Compilar el motor:

    cargo build --release
    

🛠️ Modos de Uso

1. Iniciar un Trabajo de Crawling Simple

Rasca una URL e imprime el markdown limpio resultante:

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:

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:

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).