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