
Proxy MITM HTTP/HTTPS basado en Go con interceptación de HTTP/2 y HTTP/1.1, generación de certificados de CA local/por host, tunelización CONNECT/WebSocket, caché en disco, panel de administración, captura de tráfico, políticas de bloqueo y escaneo de amenazas opcional con respaldo de IA que incluye redacción, cuarentena y registro de auditoría.
Un proxy HTTP/HTTPS Man-in-the-Middle (MITM) ligero y apto para desarrolladores, escrito en Go. Soporta HTTP/1.1 y HTTP/2, túneles CONNECT, túneles WebSocket (ws/wss), caché de respuestas en disco con filtros flexibles y recarga de configuración en caliente.

Go MITM Proxy es un proxy de interceptación diseñado para depuración, pruebas, aprendizaje e interceptación controlada de tráfico HTTP(S). Cuando MITM está habilitado, genera dinámicamente certificados hoja por host firmados por una CA local, lo que permite al proxy descifrar e inspeccionar el tráfico HTTPS. También puede funcionar como un túnel TCP transparente cuando MITM está deshabilitado o para dominios/puertos excluidos.
Importante: Esta aplicación realiza interceptación Man-in-the-Middle (MITM) activa, incluida la generación y el uso de certificados TLS para descifrar tráfico HTTPS. Según su jurisdicción y entorno de red, interceptar tráfico sin el consentimiento claro y previo de todos los usuarios afectados puede ser ilegal y puede violar la privacidad, las políticas del lugar de trabajo o los requisitos normativos.
Antes de usar este software en cualquier entorno que no sea su propia máquina local:
Todos los usuarios de cualquier red donde este proxy pueda interceptar tráfico deben ser informados claramente de que se realizará interceptación e inspección de HTTP(S). El consentimiento debe ser explícito e idealmente documentado.
No ejecute este software en redes que no posea, administre o para las que no tenga autorización explícita de prueba o monitoreo.
Muchas regiones tienen leyes estrictas que regulan la interceptación, el registro y el almacenamiento de datos de los usuarios (p. ej., GDPR, CCPA, leyes de interceptación de comunicaciones). Usted es responsable de garantizar que su uso cumpla con todas las regulaciones aplicables.
La clave privada de CA generada (normalmente ca-key.pem) permite a su titular hacerse pasar por cualquier dominio para los usuarios que confían en el certificado correspondiente.
Este proxy está diseñado para desarrollo, depuración, pruebas controladas o fines educativos — no para monitoreo encubierto o vigilancia no autorizada.
Al usar este software, usted reconoce y acepta toda la responsabilidad de garantizar que su uso sea legal, ético y se comunique adecuadamente a todos los usuarios afectados.
Requisitos previos:
Clonar y compilar: ```bash git clone https://github.com/Welfordian/mitm-proxy.git cd mitm-proxy go build ./
Esto produce un binario mitm-proxy (o mitm-proxy.exe en Windows) en la raíz del proyecto.
## Inicio rápido
1) Ejecuta el proxy con los valores predeterminados (escucha en :8080): ```bash
./mitm-proxy
En el primer inicio, se creará una CA local y se guardará en ca-cert.pem y ca-key.pem.
Configure su navegador o curl para usar el proxy en http://localhost:8080.
Confíe en el certificado de CA generado (ca-cert.pem) en su sistema operativo/navegador para permitir la intercepción HTTPS. Consulte la sección Confiar en la CA local.
Visite un sitio HTTPS a través del proxy y observe los registros. Use el modo verbose para más detalle: ```bash ./mitm-proxy --verbose
## Uso
### Banderas de la línea de comandos
- --config string: Ruta al archivo config.json
- --listen string: Dirección de escucha (anula la configuración)
- --ca-cert string: Ruta al certificado CA existente (anula la configuración)
- --ca-key string: Ruta a la clave CA existente (anula la configuración)
- --mitm bool: Habilita la interceptación MITM (por defecto true; establecerlo en false fuerza el túnel)
- --verbose bool: Habilita el registro detallado
- --watch-config bool: Vigila el archivo config.json para detectar cambios y aplicarlos automáticamente (por defecto true)
- --admin-enabled bool: Habilita la API/dashboard de administración local (por defecto true)
- --admin-addr string: Dirección de escucha de la API/dashboard de administración (por defecto 127.0.0.1:9090)
- --admin-token string: Token bearer de administración (se genera al iniciar si se omite)
- --admin-read-token string: Token bearer de solo lectura para acceso de administración mediante GET/HEAD/OPTIONS
- --admin-ui bool: Sirve la interfaz de administración integrada (por defecto true)
- --admin-store string: Ruta del almacén SQLite de administración (por defecto dashboard.db)
Las banderas de la CLI anulan los valores del archivo de configuración cuando se indican.
### Configuración (config.json)