
Proxy MITM HTTP/HTTPS baseado em Go com interceptação de HTTP/2 e HTTP/1.1, geração de certificados CA local/por host, tunelamento CONNECT/WebSocket, cache em disco, painel administrativo, captura de tráfego, políticas de bloqueio e varredura opcional de ameaças com suporte de IA, incluindo redação, quarentena e registro de auditoria.
Um proxy Man‑in‑the‑Middle (MITM) HTTP/HTTPS leve e amigável para desenvolvedores, escrito em Go. Suporta HTTP/1.1 e HTTP/2, tunelamento CONNECT, tunelamento WebSocket (ws/wss), cache de respostas em disco com filtros flexíveis e recarga de configuração em tempo real.

O Go MITM Proxy é um proxy de interceptação destinado a depuração, testes, aprendizado e interceptação controlada de tráfego HTTP(S). Quando o MITM está habilitado, ele gera dinamicamente certificados folha por host assinados por uma CA local, permitindo que o proxy descriptografe e inspecione o tráfego HTTPS. Ele também pode funcionar como um túnel TCP transparente quando o MITM está desabilitado ou para domínios/portas excluídos.
Importante: Este aplicativo realiza interceptação Man-in-the-Middle (MITM) ativa, incluindo a geração e o uso de certificados TLS para descriptografar tráfego HTTPS. Dependendo da sua jurisdição e ambiente de rede, interceptar tráfego sem consentimento claro e prévio de todos os usuários afetados pode ser ilegal e pode violar privacidade, políticas de trabalho ou requisitos regulatórios.
Antes de usar este software em qualquer ambiente que não seja sua própria máquina local:
Todos os usuários de qualquer rede onde este proxy possa interceptar tráfego devem ser claramente informados de que a interceptação e inspeção de HTTP(S) ocorrerá. O consentimento deve ser explícito e, idealmente, documentado.
Não execute este software em redes que você não possua, administre ou tenha autorização explícita para testar ou monitorar.
Muitas regiões possuem leis rigorosas que regulamentam a interceptação, o registro e o armazenamento de dados de usuários (ex.: GDPR, CCPA, leis de escuta telefônica). Você é responsável por garantir que seu uso esteja em conformidade com todos os regulamentos aplicáveis.
A chave privada da CA gerada (geralmente ca-key.pem) permite que seu detentor se passe por qualquer domínio para usuários que confiem no certificado correspondente.
Este proxy foi projetado para desenvolvimento, depuração, testes controlados ou fins educacionais — não para monitoramento oculto ou vigilância não autorizada.
Ao usar este software, você reconhece e aceita total responsabilidade por garantir que seu uso seja legal, ético e devidamente comunicado a todos os usuários afetados.
Pré-requisitos:
Clone e compile: ```bash git clone https://github.com/Welfordian/mitm-proxy.git cd mitm-proxy go build ./
Isso produz um binário mitm-proxy (ou mitm-proxy.exe no Windows) na raiz do projeto.
## Início Rápido
1) Execute o proxy com as configurações padrão (escuta em :8080): ```bash
./mitm-proxy
Na primeira inicialização, uma CA local será criada e salva em ca-cert.pem e ca-key.pem.
Configure seu navegador ou curl para usar o proxy em http://localhost:8080.
Confie no certificado CA gerado (ca-cert.pem) no seu sistema operacional/navegador para permitir a interceptação HTTPS. Veja Confiando na CA Local.
Visite um site HTTPS através do proxy e observe os logs. Use o modo verboso para mais detalhes: ```bash ./mitm-proxy --verbose
## Usage
### Command-line Flags
- --config string: Caminho para o arquivo config.json
- --listen string: Endereço de escuta (substitui a configuração)
- --ca-cert string: Caminho para o certificado CA existente (substitui a configuração)
- --ca-key string: Caminho para a chave CA existente (substitui a configuração)
- --mitm bool: Ativar interceptação MITM (padrão true; definir como false força o tunelamento)
- --verbose bool: Ativar registro detalhado (verbose)
- --watch-config bool: Monitorar o config.json em busca de alterações e aplicar automaticamente (padrão true)
- --admin-enabled bool: Ativar API/dashboard administrativo local (padrão true)
- --admin-addr string: Endereço de escuta da API/dashboard administrativo (padrão 127.0.0.1:9090)
- --admin-token string: Token bearer administrativo (gerado na inicialização se omitido)
- --admin-read-token string: Token bearer somente leitura para acesso administrativo GET/HEAD/OPTIONS
- --admin-ui bool: Servir a interface administrativa incorporada (padrão true)
- --admin-store string: Caminho do armazenamento SQLite administrativo (padrão dashboard.db)
As flags da CLI substituem os valores do arquivo de configuração quando indicado.
### Configuration (config.json)