Skip to content

Modo SPA

DenReanin edited this page Jun 6, 2026 · 1 revision

Modo SPA

Las aplicaciones modernas (Angular, React, Vue) son Single Page Applications: el formulario no está en el HTML inicial, lo dibuja JavaScript después de cargar la página. Un escáner tradicional que solo descarga el HTML ve una página casi vacía (<div id="app"></div>) y no encuentra nada que probar.

Qué hace --spa

Con la opción --spa, Gung12 integra Playwright, que:

  1. Lanza un navegador real (Chromium).
  2. Carga la página y deja que el JavaScript la renderice.
  3. Analiza el DOM ya construido para extraer el formulario y sus campos.
  4. Observa las peticiones de red y descubre el endpoint REST oculto al que se envían los datos.
  5. Se adapta a cuerpos JSON en lugar de formularios clásicos cuando corresponde.

Ejemplo

gung12 -u "http://127.0.0.1:3000/#/login" --spa -T sqli,nosql

Salida (resumida):

[*] Modo SPA: renderizando con Playwright
[*] Objetivo: http://127.0.0.1:3000/#/login
[+] Formulario: POST -> http://127.0.0.1:3000/rest/user/login
    Campos: email, password
    Inyectables: email, password  ·  CSRF: no

Fíjate en el detalle clave: le pasamos /#/login y la herramienta descubre sola que el login envía a POST /rest/user/login con cuerpo JSON.

Requisito: Chromium

El modo --spa necesita el navegador Chromium de Playwright. Gung12 lo descarga automáticamente la primera vez (~280 MB, en la caché del usuario). Si falla la descarga (sin conexión o tras un proxy):

python -m playwright install chromium

Consideraciones

  • El modo --spa es más lento que el normal, porque arranca un navegador real y espera al renderizado.
  • Playwright y Chromium son una dependencia voluminosa (ver FAQ y solución de problemas).

Ver también: Guía de uso · Instalación.

Clone this wiki locally