
Proxy MITM HTTP/HTTPS basato su Go con intercettazione HTTP/2 e HTTP/1.1, generazione di certificati CA locale/per-host, tunneling CONNECT/WebSocket, caching su disco, pannello di amministrazione, cattura del traffico, politiche di blocco e scansione delle minacce opzionale basata su AI con oscuramento, quarantena e registrazione di audit.
Un proxy HTTP/HTTPS Man‑in‑the‑Middle (MITM) leggero e amichevole per sviluppatori scritto in Go. Supporta HTTP/1.1 e HTTP/2, tunneling CONNECT, tunneling WebSocket (ws/wss), caching delle risposte su disco con filtri flessibili e ricaricamento della configurazione a caldo.

Go MITM Proxy è un proxy di intercettazione progettato per debug, test, apprendimento e intercettazione controllata del traffico HTTP(S). Quando MITM è abilitato, genera dinamicamente certificati foglia per host firmati da una CA locale, consentendo al proxy di decifrare e ispezionare il traffico HTTPS. Può anche funzionare come tunnel TCP trasparente quando MITM è disabilitato o per domini/porte escluse.
Importante: Questa applicazione esegue un'intercettazione Man-in-the-Middle (MITM) attiva, inclusa la generazione e l'uso di certificati TLS per decifrare il traffico HTTPS. A seconda della tua giurisdizione e dell'ambiente di rete, intercettare il traffico senza il consenso chiaro e preventivo di tutti gli utenti interessati potrebbe essere illegale e può violare la privacy, le politiche aziendali o i requisiti normativi.
Prima di utilizzare questo software in qualsiasi ambiente diverso dalla tua macchina locale:
Tutti gli utenti di qualsiasi rete in cui questo proxy potrebbe intercettare il traffico devono essere chiaramente informati che avverrà l'intercettazione e l'ispezione HTTP(S). Il consenso deve essere esplicito e idealmente documentato.
Non eseguire questo software su reti di cui non sei proprietario, che non amministri o per le quali non hai esplicita autorizzazione a testare o monitorare.
Molte regioni hanno leggi severe che regolano l'intercettazione, la registrazione e l'archiviazione dei dati degli utenti (es. GDPR, CCPA, leggi sulle intercettazioni). Sei responsabile di garantire che il tuo utilizzo sia conforme a tutte le normative applicabili.
La chiave privata CA generata (di solito ca-key.pem) consente al detentore di impersonare qualsiasi dominio per gli utenti che fidano del certificato corrispondente.
Questo proxy è progettato per sviluppo, debug, test controllati o scopi educativi — non per monitoraggio occulto o sorveglianza non autorizzata.
Usando questo software, riconosci e accetti la piena responsabilità di garantire che il tuo utilizzo sia lecito, etico e correttamente comunicato a tutti gli utenti interessati.
Prerequisiti:
Clona e compila:
bash
git clone https://github.com/Welfordian/mitm-proxy.git
cd mitm-proxy
go build ./
Questo produce un binario mitm-proxy (o mitm-proxy.exe su Windows) nella directory principale del progetto.
## Avvio Rapido
1) Esegui il proxy con le impostazioni predefinite (ascolta su :8080): ```bash
./mitm-proxy
Al primo avvio, verrà creato un CA locale e salvato in ca-cert.pem e ca-key.pem.
Configura il tuo browser o curl per usare il proxy su http://localhost:8080.
Fida del certificato CA generato (ca-cert.pem) nel tuo sistema operativo/browser per consentire l'intercettazione HTTPS. Vedi Trusting the Local CA.
Visita un sito HTTPS attraverso il proxy e osserva i log. Usa la modalità verbose per maggiori dettagli: ```bash ./mitm-proxy --verbose
## Utilizzo
### Flag della riga di comando
- --config string: Percorso del file config.json
- --listen string: Indirizzo di ascolto (sovrascrive la configurazione)
- --ca-cert string: Percorso del certificato CA esistente (sovrascrive la configurazione)
- --ca-key string: Percorso della chiave CA esistente (sovrascrive la configurazione)
- --mitm bool: Abilita l'intercettazione MITM (default true; impostare false forza il tunneling)
- --verbose bool: Abilita logging verboso
- --watch-config bool: Controlla le modifiche a config.json e applica automaticamente (default true)
- --admin-enabled bool: Abilita API/dashboard di amministrazione locale (default true)
- --admin-addr string: Indirizzo di ascolto API/dashboard amministrazione (default 127.0.0.1:9090)
- --admin-token string: Token bearer di amministrazione (generato all'avvio se omesso)
- --admin-read-token string: Token bearer di sola lettura per accesso amministrativo GET/HEAD/OPTIONS
- --admin-ui bool: Fornisci interfaccia utente amministrativa incorporata (default true)
- --admin-store string: Percorso del database SQLite di amministrazione (default dashboard.db)
I flag CLI sovrascrivono i valori del file di configurazione dove indicato.
### Configurazione (config.json)