--- name: web_scraping description: "Plataforma de control de navegador y automatización web sobre Chrome via CDP en Linux nativo. Base reutilizable para scraping, automatización de tareas web, descubrimiento de endpoints/APIs para pentesting y captura de tráfico." tags: [scraping, browser, cdp, automation, pentesting, linux] repo_url: "https://gitea-dgg044oo04woo4ggcsws4gk0.organic-machine.com/dataforge/web_scraping" --- ## Notas Proyecto paraguas, de uso continuo, para todo lo relacionado con control de navegador y trabajo sobre la web. No está atado a ningún dominio concreto: cualquier tarea de scraping, automatización o reconocimiento web se hace y se capitaliza aquí. Construido 100% sobre Linux nativo (sin dependencia de WSL/Windows). El control del navegador se hace con Chrome DevTools Protocol (CDP) crudo a través de las funciones del dominio `browser` del registry, no con Playwright/Selenium. ### Para qué sirve - **Web scraping**: extracción de datos de páginas y APIs, con o sin login, incluyendo SPAs. - **Automatización web**: rellenar formularios, flujos multi-paso, tareas repetitivas en webapps. - **Descubrimiento de endpoints (pentesting / recon)**: capturar el tráfico HTTP/WS que genera una página (`cdp_har_record` + extensión mitm de `web_proxy`) para mapear las APIs reales que usa, detectar endpoints ocultos y analizar peticiones. - **Captura de tráfico**: interceptación y registro de flujos vía mitmproxy para análisis posterior. - **Monitoreo / testing**: vigilar cambios en páginas, validar comportamiento, smoke de webs. ### Componentes | Componente | Tipo | Estado | Qué hace | |---|---|---|---| | `script_navegador` | app (Go) | activo | Controlador de navegador: modo CLI rápido (comandos sueltos: open/click/type/eval/shot/tabs) + runner de scripts YAML. Compone funciones `cdp_*` del registry. | | `web_proxy` | app (bash) | externo | Proxy de interceptación HTTP/HTTPS (mitmproxy). Vive en `apps/web_proxy`; provee la captura de tráfico que consume este proyecto. | | vaults | datos | reservado | Datos extraídos por cada campaña (scrapes, HARs, listados, capturas). | | analysis | exploración | reservado | Notebooks sobre los datos extraídos / capturados. | ### Filosofía - **Registry-first**: toda capacidad reutilizable de navegador (lanzar Chrome, navegar, click, type, screenshot, esperas inteligentes, captura HAR) vive en `functions/browser/` del registry. La app solo orquesta: parsea comandos y compone funciones. Lo que sirva para una campaña sirve para todas. - **Esperas inteligentes siempre**: los scripts y comandos esperan condiciones reales del DOM (readyState, selector presente, DOM estabilizado) en lugar de `sleep` ciegos. Ver `CONVENTIONS.md`. - **Linux nativo**: lanzamiento directo de `chromium`/`google-chrome` con `os/exec`, sin `wslpath`, sin `chrome.exe`, sin proxies WSL↔Windows. Las reglas operativas (tamaño de ventana, perfil del proyecto, headless, jitter, captura, movimientos realistas, proxys rotativos, CDP en el navegador del usuario) están en `CONVENTIONS.md`. Para **controlar el navegador desde un agente LLM** (Claude u otro) sin saturar su contexto, la guía operativa es `LLM_BROWSER_GUIDE.md`: cómo conectar via CDP, qué comandos usar por capacidad (ventanas, pestañas, network, DOM, JS) y, sobre todo, cómo leer páginas via accessibility tree recortado en lugar de volcar el HTML crudo (anti-colapso). Incluye la hoja de ruta del futuro servidor MCP de navegador.