{
  "$type": "site.standard.document",
  "bskyPostRef": {
    "cid": "bafyreieg27xk445ufczalxobvjoad3h6r4cremgfbmcyeeyivrhcqw3y2m",
    "uri": "at://did:plc:25rdn5elo5izoxrmtis34zuk/app.bsky.feed.post/3mp5mokh2vrw2"
  },
  "coverImage": {
    "$type": "blob",
    "ref": {
      "$link": "bafkreig5ulclodstlsaeigb7yiiellfyhurcchpkvo3xy5lgkkcsy4znxe"
    },
    "mimeType": "image/webp",
    "size": 68864
  },
  "path": "/ckomiya/el-navegador-ya-no-es-solo-para-humanos-1e6g",
  "publishedAt": "2026-06-25T23:36:21.000Z",
  "site": "https://dev.to",
  "tags": [
    "automation",
    "web",
    "webdev",
    "webscraping"
  ],
  "textContent": "_Por qué las páginas web públicas son ahora accesibles de formas que antes eran impensables_\n\nHubo un tiempo en que \"ver algo en una web\" y \"usar ese dato en código\" eran dos mundos separados. El primero era para humanos. El segundo requería que la empresa dueña del sitio te diera una API, documentación, credenciales, y su bendición.\n\nEse tiempo terminó.\n\n##\n\n##  Lo que descubrí explorando\n\nEstaba analizando cómo obtener datos de una página web pública — sin registro, sin login, sin nada que el usuario promedio no pudiera ver con sus propios ojos. Información completamente pública.\n\nEl camino obvio parecía ser el scraping tradicional: descargar el HTML, parsear el contenido. Pero la web moderna no funciona así. La mayoría de sitios hoy son **Single Page Applications** — React, Angular, Vue — donde el HTML inicial está vacío y el contenido llega después, cargado dinámicamente por JavaScript.\n\n\n\n    <div id=\"root\"></div>\n\n\nEso es todo lo que ves si intentas descargar el HTML directamente. Un div vacío esperando que JavaScript haga su trabajo.\n\n##  La API interna que nadie documenta\n\nAbrí las herramientas de desarrollo del browser, filtré por Fetch/XHR, y observé el tráfico. Lo que vi fue revelador: la app de React estaba consumiendo una **API interna** con endpoints bien estructurados, respuestas en JSON limpio, y toda la información organizada perfectamente.\n\nDatos que visualmente aparecen en pantalla para cualquier usuario, pero que internamente viajan como JSON estructurado, listo para ser procesado.\n\nEl problema: esa API tenía protección. Un WAF (Web Application Firewall) en Azure que analizaba cada request y bloqueaba cualquier cosa que no pareciera un browser legítimo. Tokens de sesión con expiración. Cookies generadas dinámicamente. Un ecosistema de seguridad diseñado para que solo browsers reales pudieran consumir esos datos.\n\nY tenía razón en bloquearte — si intentabas replicar el request manualmente, para cuando copiabas todos los headers necesarios, los tokens ya habían vencido.\n\n##  El agente como humano digital\n\nAquí entra el cambio de paradigma.\n\nUn agente con control de browser — usando herramientas como Playwright — no simula un request. **Abre un browser real**. Chromium de verdad. Navega como lo haría un usuario. Las cookies se generan naturalmente. Los tokens están vigentes. El WAF ve exactamente lo que espera ver.\n\nPero a diferencia del humano, el agente puede hacer algo que el humano no puede: **obtener y usar los datos en el mismo instante, dentro del mismo contexto de sesión**.\n\nEl flujo es así:\n\n\n\n    Agente abre browser\n        → navega al sitio (tokens se generan automáticamente)\n        → intercepta la respuesta de la API en tiempo real\n        → extrae los datos estructurados\n        → los guarda en base de datos\n        → cierra el browser\n\n\nTodo en segundos. Sin que ningún token tenga tiempo de vencer. Sin que ningún WAF detecte anomalías. Porque técnicamente no hay ninguna.\n\n##  El problema del humano vs. el agente\n\nCuando un humano intenta hacer esto manualmente:\n\n  1. Abre DevTools\n  2. Filtra el tráfico de red\n  3. Encuentra el request correcto\n  4. Copia los headers\n  5. Los pega en un cliente HTTP\n  6. Ejecuta el request\n\n\n\n**Resultado:** Token vencido. Request bloqueado.\n\nEl tiempo que tarda el humano en completar esos pasos es mayor que el tiempo de vida de los tokens de sesión. Es una carrera que el humano pierde por diseño.\n\nCuando el agente hace lo mismo, no hay pasos separados. La obtención y el uso son **una sola operación continua**. El agente no anota el token para usarlo después — lo usa mientras aún está caliente, en el mismo contexto donde nació.\n\n##  ¿Es esto vulnerar algo?\n\nNo. Y esa es la parte más interesante del análisis.\n\nCualquier información que una página muestra públicamente, sin requerir autenticación, es información que el usuario tiene derecho a ver. El agente no hace nada que el usuario no pudiera hacer manualmente — simplemente lo hace más rápido y de forma programática.\n\nLa línea ética está clara:\n\n  * **Información pública, uso personal o académico** → completamente legítimo\n  * **Automatización masiva que sature servidores** → problemático\n  * **Uso comercial de datos ajenos** → requiere revisar términos\n  * **Acceso a cuentas de terceros** → ilegal\n\n\n\n8 requests al día para leer información pública genera menos tráfico que un usuario humano visitando el sitio dos veces. No hay daño, no hay saturación, no hay violación.\n\n##  Lo que esto significa para el desarrollo\n\nEstamos en un momento donde la barrera entre \"ver datos\" y \"usar datos en código\" prácticamente desapareció para información pública.\n\nAntes necesitabas:\n\n  * Una API oficial con documentación\n  * Credenciales y proceso de registro\n  * Límites de uso negociados\n  * Meses de espera para aprobación\n\n\n\nAhora necesitas:\n\n  * Un agente con Playwright\n  * Decirle qué quieres obtener\n  * Esperar segundos\n\n\n\nLas implicancias para el desarrollo de software son enormes. Cualquier fuente de datos pública se convierte potencialmente en una fuente estructurada para tus aplicaciones. Sin fricción. Sin burocracia. Sin depender de que la empresa decida publicar una API.\n\n##  La arquitectura que emerge\n\nLo interesante no es solo obtener los datos una vez — es cómo esto se integra en una arquitectura completa:\n\n\n\n    Agente recopilador (cron programado)\n        → navega fuentes públicas\n        → extrae datos estructurados\n        → guarda en base de datos local\n\n    MCP Server\n        → lee la base de datos\n        → expone herramientas al agente de consulta\n\n    Usuario\n        → pregunta en lenguaje natural\n        → el agente consulta las herramientas\n        → respuesta instantánea desde datos frescos\n\n\nEl agente recopilador y el agente de consulta son independientes. Uno escribe, el otro lee. La base de datos es el punto de encuentro. Y el usuario final nunca sabe — ni necesita saber — de dónde vienen los datos.\n\n##  Conclusión\n\nLas páginas web públicas siempre fueron accesibles para humanos. Lo nuevo es que ahora son igualmente accesibles para agentes — y en algunos aspectos, el agente las maneja mejor que el humano.\n\nNo porque rompa barreras de seguridad. Sino porque opera dentro de los mismos canales legítimos que usa cualquier browser, pero sin las limitaciones de tiempo y coordinación que tiene un humano copiando y pegando headers.\n\nEl browser ya no es solo para humanos. Y eso cambia bastante cómo pensamos el acceso a datos en el desarrollo moderno.\n\n_Este post es parte de una exploración práctica sobre agentes de IA. Las conclusiones son aplicables a cualquier fuente de información pública en la web._",
  "title": "(Spanish) El navegador ya no es solo para humanos"
}