
Raspa la web de forma fácil
SCRAPPER no es un scraper — es un OBSERVADOR DE SESIONES que captura los datos reales de tu navegador para usarlos en cualquier herramienta de automatización.
Construido sobre el Framework React BertUI
GitHub: BunElysiaReact/SCRAPY
Sin dominio. Sin nube. Todo local. Todo tuyo.

Cada herramienta de automatización web — Puppeteer, Playwright, Selenium, incluso curl — comparte los mismos desafíos:
El verdadero problema: Todas estas herramientas intentan imitar a un humano. Pero adivinan cómo se ve un humano real.
SCRAPPER no raspa. Te da los datos REALES que TÚ necesitas para raspar con éxito.
TÚ SCRAPPER
│ │
├── Abres Brave/Chrome/Firefox con extensión ──────►│
│ │
├── Te logueas en sitios que quieres automatizar ──►│ captura:
│ │ • Cookies
├── Navegas normalmente, haces clic ──────────────►│ • Tokens
│ │ • Huella
└── Terminas de navegar ──────────────────────────►│ • Solicitudes API
│ • Estructura DOM
TU SCRIPT ──── GET /api/v1/session/all ────► API SCRAPPER (localhost:8080)
◄── { cookies, tokens, fingerprint } ────────────────────────┘
│
▼
Puppeteer / Playwright / Selenium / Python requests / curl
│
▼
✅ Solicitudes autenticadas con TU sesión real

Extensión SCRAPPER

Registrar Extensión

El script anterior usó SCRAPPER para capturar una sesión real de claude.ai, luego envió mensajes directamente a través de la API — cero código de inicio de sesión, cero Puppeteer, cero automatización de navegador.
📦 Datos de Sesión
├── 🍪 Cookies (incluyendo HttpOnly, Secure, todos los dominios)
├── 💾 localStorage y sessionStorage
├── 🔑 Tokens de autenticación (Bearer, JWT, CSRF, personalizados)
└── 📨 Todos los encabezados HTTP
🖥️ Huella del Navegador
├── 📱 User Agent
├── 🖼️ Resolución de pantalla y profundidad de color
├── 🌍 Configuración de zona horaria e idioma
└── 📨 Conjunto completo de encabezados (Accept, Accept-Language, etc.)
📡 Tráfico de Red
├── 📤 Todas las solicitudes HTTP (URLs, métodos, encabezados, datos POST)
├── 📥 Todas las respuestas HTTP (estado, encabezados, cuerpos)
└── 🔄 Tramas WebSocket
🌳 Estado del DOM
├── 📄 Instantáneas DOM
├── 🎯 Prueba de selectores en vivo
└── 🗺️ Mapas DOM (todas las etiquetas, clases, IDs)
Una vez capturado, SCRAPPER sirve todo a través de una API REST simple en http://localhost:8080.
curl -fsSL https://raw.githubusercontent.com/BunElysiaReact/SCRAPY/main/install.sh | bash
# Paso 1 — Cargar la extensión en Brave:
# brave://extensions → Modo desarrollador ACTIVADO → Cargar descomprimida
# → seleccionar: ~/.scrapper/extension/brave/
# Paso 2 — Registrar tu ID de extensión
scrapper-register-ext TU_ID_DE_EXTENSIÓN
# Paso 3 — Iniciar SCRAPPER
scrapper-start
# Paso 4 — Abrir el panel
# http://localhost:8080
# Clonar el repositorio
git clone https://github.com/BunElysiaReact/SCRAPY.git ~/scrapper
cd ~/scrapper
# Compilar el host nativo en C
gcc -O2 -o linux/c_core/native_host/debug_host linux/c_core/native_host/debug_host.c -lpthread
# Compilar el motor de selección en Rust
cd linux/rust_finder && cargo build --release && cd ../..
# Iniciar el servidor API
cd linux/python_api && python3 api.py
Abre http://localhost:8080 → Panel listo.
irm https://raw.githubusercontent.com/BunElysiaReact/SCRAPY/main/install.ps1 | iex
⚠️ Ejecuta PowerShell como Administrador para que el registro de mensajería nativa funcione correctamente.
%USERPROFILE%\.scrapper\
├── bin\
│ ├── debug_host.exe ← Host de mensajería nativa en C
│ ├── scraper_cli.exe ← Cliente CLI
│ ├── rust_finder.exe ← Motor rápido de selectores HTML
│ ├── scrapper-start.bat ← Iniciar todo
│ └── scrapper-stop.bat ← Detener todo
├── data\ ← Todos los datos de sesión capturados
├── logs\ ← Registros del host
├── python_api\
│ └── api.py ← Servidor API REST
├── extension\
│ ├── brave\ ← Cargar en Brave / Chrome / Edge
│ └── firefox\ ← Cargar en Firefox
└── ui\scrapperui\ ← Código fuente del panel
brave://extensions o chrome://extensions~/.scrapper/extension/brave/scrapper-register-ext TU_IDIgual que Brave/Chrome — Edge está basado en Chromium, usa la carpeta extension/brave/.
about:debugging → Este Firefox~/.scrapper/extension/firefox/manifest.json⚠️ Firefox captura cookies, encabezados, localStorage — pero no los cuerpos de las solicitudes a nivel CDP.
from curl_cffi import requests
API = "http://localhost:8080"
domain = "example.com"
cookies_raw = requests.get(f"{API}/api/v1/session/cookies?domain={domain}").json()
fp = requests.get(f"{API}/api/v1/fingerprint?domain={domain}").json()
session = requests.Session(impersonate="chrome120")
for c in cookies_raw:
session.cookies.set(c["name"], c["value"], domain=c.get("domain", domain).lstrip("."))
session.headers.update({"User-Agent": fp.get("userAgent", "")})
response = session.get(f"https://{domain}/api/data")
print(response.json())
import requests
session_data = requests.get('http://localhost:8080/api/v1/session/all').json()
s = requests.Session()
s.cookies.update({c['name']: c['value'] for c in session_data['cookies']})
s.headers.update({'User-Agent': session_data['fingerprint']['userAgent']})
response = s.get('https://api.example.com/data')
source <(curl -s http://localhost:8080/api/v1/export/env)
curl -X POST "https://api.example.com/upload" \
-H "Authorization: Bearer $SCRAPPER_BEARER_TOKEN" \
-b "$SCRAPPER_COOKIES" \
-F "[email protected]"
import requests
from playwright.async_api import async_playwright
session = requests.get('http://localhost:8080/api/v1/session/all').json()
async with async_playwright() as p:
context = await p.chromium.launch_persistent_context(
user_data_dir="./profile",
user_agent=session['fingerprint']['userAgent'],
)
await context.add_cookies(session['cookies'])
page = await context.new_page()
await page.goto('https://example.com')
const session = await fetch('http://localhost:8080/api/v1/session/all').then(r => r.json());
const browser = await puppeteer.launch();
const page = await browser.newPage();
await page.setCookie(...session.cookies);
await page.setUserAgent(session.fingerprint.userAgent);
await page.goto('https://example.com/dashboard');
Panel en vivo de SCRAPPER
Abre http://localhost:8080:
# Exportar los datos de sesión más recientes
curl -s "http://localhost:8080/api/v1/bulk/all?format=jsonl" > session.jsonl
# Usar en tu scraper
python3 my-scraper.py --session session.jsonl
# session_refresh.py — Proceso de actualización semanal de sesión
import requests, schedule, time
def refresh_session():
notify_user("Por favor, inicia sesión en los sitios objetivo en tu navegador")
time.sleep(300) # 5 minutos para que el usuario navegue
data = requests.get('http://localhost:8080/api/v1/bulk/all?format=json').json()
with open(f'session_{int(time.time())}.json', 'w') as f:
import json; json.dump(data, f)
schedule.every().monday.at("09:00").do(refresh_session)
while True:
schedule.run_pending()
time.sleep(60)
SCRAPPER de BertUI — El Observador de Sesiones para Automatización Web
🔍 Observando tu navegador para que tú no tengas que hacerlo
⭐ Dale estrella al repo si SCRAPPER te ayuda — ¡ayuda a otros a encontrarlo!
| Desafío | Por Qué Es Difícil |
|---|
| Autenticación | Programar manualmente inicios de sesión para cada sitio es tedioso y frágil |
| Estado de sesión | Las cookies caducan, los tokens rotan, localStorage se limpia |
| Ingeniería inversa | Horas en DevTools entendiendo patrones de API |
| Detección de bots | Huellas TLS, entropía del navegador, Cloudflare, hCaptcha |
| Complejidad de configuración | Pelear con navegadores headless, proxies y complementos de sigilo |
| SCRAPPER ES... | SCRAPPER NO ES... |
|---|
| 🔍 Un observador de sesiones que observa TU navegador real | ❌ Un reemplazo de Puppeteer/Playwright/Selenium |
| 💾 Una herramienta de captura de datos que guarda tu sesión real | ❌ Una herramienta que raspa sitios web por ti |
| 📡 Un servidor API local que sirve tus datos capturados | ❌ Un servicio alojado o plataforma en la nube |
| 🧠 Un asistente de ingeniería inversa que revela APIs ocultas | ❌ Un botón mágico de "raspa cualquier cosa" |
| 🎯 Un depurador visual para entender la estructura del sitio | ❌ Un constructor de automatización sin código |
| Ventaja | Por Qué Importa |
|---|
| Omite la Detección Avanzada de Bots | Usa curl_cffi para suplantar la huella TLS de un navegador real (ej. Chrome 120) — no es marcado como automatizado |
| Tasa de Éxito del 97% | Apunta a rutas API internas, no a la interfaz visual — inmune a cambios de CSS, botones móviles o cambios de diseño |
| Bajo Uso de Recursos | ~20MB RAM vs 500MB+ de Puppeteer/Selenium. Sin motor de navegador en ejecución |
| Autenticación Invisible | Se aprovecha de tu sesión existente verificada por humano — sin flujo de inicio de sesión, sin CAPTCHAs |
| Sincronización con Navegador Real | Los mensajes/acciones de los scripts aparecen en tu pestaña real del navegador cuando actualizas |
| Independiente del Lenguaje | La API de sesión funciona con Python, Go, Rust, Node, curl — cualquier cosa que pueda hacer solicitudes HTTP |
| Desventaja | Qué Significa |
|---|
| Vida de Sesión Frágil | Depende completamente de una sesión de navegador activa — caduca si cierras sesión |
| Depende de APIs Internas | Usa endpoints no documentados que pueden cambiar sin previo aviso |
| Requiere Infraestructura de Configuración | No es independiente — necesita el host nativo y la extensión del navegador ejecutándose simultáneamente |
| Riesgo de Cuenta | Usa tu identidad real. Golpear agresivamente los límites de tasa puede hacer que tu cuenta real sea baneada |
| Curva de Aprendizaje | Debes leer el tráfico de red para entender los payloads correctos de la API |
| Vinculación a un Solo Dispositivo | device-id está ligado a una sesión capturada — no se puede compartir fácilmente entre máquinas |
| Endpoint | Descripción |
|---|
GET /api/v1/session/cookies?domain=example.com | Todas las cookies de un dominio |
GET /api/v1/session/localstorage?domain=example.com | Datos de localStorage |
GET /api/v1/session/all | Volcado completo de la sesión |
GET /api/v1/fingerprint | Huella del navegador |
GET /api/v1/tokens/all | Todos los tokens extraídos |
GET /api/v1/requests/recent?limit=50 | Solicitudes de red recientes |
GET /api/v1/dom/snapshot?url=example.com | Instantánea DOM |
GET /api/v1/export/env | Formato de variables de entorno |
GET /api/v1/bulk/all?format=[json|jsonl|har|csv|txt] | Todo, a tu formato |
| Pestaña | Qué Hace |
|---|
| Live | Transmisión en tiempo real de todos los eventos de red capturados |
| Bodies | Cuerpos de respuesta HTTP — JSON, HTML, SVG, imágenes, con vista previa |
| Responses | Todas las respuestas HTTP por dominio, filtrables por banderas |
| Intel | Resumen por dominio — tokens, cookies, endpoints, mapa DOM |
| Tokens | Tokens Bearer, tokens de tarea, cookies de autenticación, fragmentos curl |
| Endpoints | Todos los endpoints de API descubiertos con "Copiar para LLM" |
| DOM Map | Árbol completo de etiquetas/clases/IDs — haz clic en cualquier elemento para rasparlo automáticamente |
| Find | Prueba selectores CSS contra HTML real renderizado |
| Nav | Navega + rastrea pestañas, descarga cookies, captura HTML |
| Queue | Procesa lotes de listas de URLs con retardos configurables |
| Área | Lo Que Se Necesita |
|---|
| Pruebas | Prueba SCRAPPER en diferentes sitios, reporta errores |
| Firefox | Ayuda a mejorar las soluciones CDP de la extensión de Firefox |
| Windows | Prueba los casos límite del instalador de Windows |
| Docs | Escribe tutoriales para sitios o casos de uso específicos |
| Código | PRs bienvenidos — especialmente correcciones de errores |