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.
- Falsificación activa del objeto
- 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.
- Envía de forma reactiva las páginas procesadas a la cola de Kafka (
🏗️ 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
-
Clonar el repositorio:
-
Instalar dependencias del Worker:
-
Compilar el motor:
🛠️ Modos de Uso
1. Iniciar un Trabajo de Crawling Simple
Rasca una URL e imprime el markdown limpio resultante:
2. Ejecutar Ingesta en Modo Daemon
Se suscribe a Kafka para recibir tareas dinámicas de crawling:
🐳 Dockerización
El proyecto está preparado para correr en Docker pre-cargando todas las librerías necesarias del navegador:
📜 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).