Files
2026-06-04 23:44:39 +02:00

4.8 KiB

Web Proxy — Captura de trafico HTTP/HTTPS liviana (mitmproxy)

Tag: web-proxy. Grupo de funciones para levantar un proxy de interceptacion ligero sobre mitmproxy, capturar todo el trafico de un navegador con rotacion temporal, y consultar las capturas guardadas. Alternativa liviana a OWASP ZAP / Burp Suite. Lo consume apps/web_proxy (CLI + servicio systemd --user). Crece a medida que se añaden formas de captura (WebSocket dumps, replay) o de consulta (filtros prearmados, export a otros formatos).

Filtro MCP: mcp__registry__fn_search query="" tag="web-proxy".

Funciones del grupo

ID Firma corta Que hace
start_mitm_capture_bash_cybersecurity start_mitm_capture [--port N] [--out DIR] [--rotate-min N] Arranca mitmdump headless en background como proxy de interceptacion, con rotacion de capturas via el addon del registry. Sobrevive al cierre de la shell (setsid). Emite JSON con PID y puerto.
rotate_capture_flows_py_cybersecurity mitmdump -s rotate_capture_flows.py --set rotate_min=N --set capture_dir=DIR Addon de mitmproxy que trocea las capturas en archivos traffic-YYYYmmdd-HHMMSS.mitm por ventanas de tiempo. Hace flush() por flujo, asi que la captura sobrevive a un kill -9.
query_mitm_flows_bash_cybersecurity query_mitm_flows <file_or_glob> [--filter EXPR] [--har OUT] Consulta capturas .mitm guardadas: vuelca los flujos que matchean un filtro de mitmproxy, o exporta a HAR. Acepta globs de varios archivos.
launch_chromium_proxy_bash_browser launch_chromium_proxy [--proxy URL] [--profile DIR] [--url URL] Lanza Chromium apuntando al proxy con un perfil aislado, sin contaminar la sesion normal. Maneja el CA del proxy o cae a --ignore-certificate-errors.
tee_anthropic_sse_py_cybersecurity mitmdump -s tee_anthropic_sse.py Addon mitmproxy que intercepta el SSE de POST api.anthropic.com/v1/messages (la respuesta del modelo de la CLI claude) y emite el texto exacto token a token como NDJSON. Filtra la respuesta principal (has_tools) de las auxiliares (titulo/clasificador en haiku). Strip de Accept-Encoding para ver el SSE sin comprimir. Lo consume apps/claude_wire.

Complementa: port_kill_bash_infra (limpieza de puertos ocupados).

Ejemplo canonico end-to-end

Levantar el proxy, traficar a traves de el, y consultar lo capturado. Todo en bash, usando las funciones del registry directamente:

export FN_REGISTRY_ROOT="$HOME/fn_registry"
cd "$FN_REGISTRY_ROOT"

# 1. Arrancar el proxy en el puerto 8080, rotando cada 20 min
JSON=$(bash bash/functions/cybersecurity/start_mitm_capture.sh \
    --port 8080 --out ~/captures --rotate-min 20)
PID=$(echo "$JSON" | python3 -c 'import sys,json;print(json.load(sys.stdin)["pid"])')

# 2. Lanzar un navegador proxeado en perfil aislado
bash bash/functions/browser/launch_chromium_proxy.sh \
    --proxy http://127.0.0.1:8080 --url https://example.com

# ... navegar; mitmproxy registra todo en ~/captures/traffic-*.mitm ...

# 3. Consultar la ultima captura: solo peticiones POST
LAST=$(ls -t ~/captures/traffic-*.mitm | head -1)
bash bash/functions/cybersecurity/query_mitm_flows.sh "$LAST" --filter "~m POST"

# 4. Exportar todo a HAR
bash bash/functions/cybersecurity/query_mitm_flows.sh ~/captures/traffic-*.mitm --har ~/sesion.har

# 5. Parar el proxy
kill -TERM "$PID"

Para uso real, la app apps/web_proxy envuelve esto en un CLI con subcomandos (start, stop, status, browser, query, inspect, install-service) y gestiona el ciclo de vida como servicio systemd --user siempre activo.

Fronteras

  • No es un escaner de vulnerabilidades. Captura y consulta trafico; no hace fuzzing, spidering ni deteccion de vulns como ZAP/Burp. Para eso, exporta a HAR y procesa con otra herramienta.
  • No modifica trafico (todavia). Los addons del grupo solo observan/graban. Un addon de reescritura (estilo Burp Repeater/Intruder) seria una funcion nueva del grupo, no una ampliacion de las actuales.
  • HTTPS requiere confiar en el CA de mitmproxy en el cliente. La captura de trafico cifrado sin el CA instalado solo funciona con --ignore-certificate-errors en el navegador proxeado.
  • Persistencia del servicio: systemd --user para al cerrar sesion salvo linger. La gestion del servicio vive en la app, no en estas funciones.

Prerequisitos

  • mitmproxy >= 10 instalado: uv tool install mitmproxy (da mitmdump, mitmproxy, mitmweb en ~/.local/bin).
  • chromium (o google-chrome) en PATH para launch_chromium_proxy.
  • python3 para parsear el JSON de arranque y exportar/inspeccionar HAR.