Saudações. Instruções de como instalar e usar o MITMPROXY para analise de requisições HTTP, principalmente para auxilio no desenvolvimento de sistemas, testes de WebHooks, analise de aplicativos.
Pré-requisitos (consta em outros artigos aqui do blog):
- Instalação do Linux (Debian, Alpine) e programas básicos;
- Instalar o Docker ou Podman;
- Proxy-Reverso Traefik para HTTPs com LetsEncrypt;
- Instale os programas Docker e Traefik do artigo:
1 – Apresentando o MITMPROXY
O MITMPROXY é um sistema desenvolvido em Python3 que auxilia no desenvolvimento de aplicações que fazem uso do protocolo HTTP.
Criado para ser uma ferramenta hacker, ele permite interceptar, redirecionar e repetir requisições HTTP.
Seus principais recursos:
- Administração web – Possui dashboard e painel de controle acessível pelo navegador para controlar e assistir o tráfego HTTP;
- Proxy-Reverso – Atua como servidor HTTP e encaminha as requisições recebidas para um servidor interno;
- Proxy-Transparente – Quando colocado como gateway do acesso à Internet, ele pode interceptar o tráfego e buscar os sites solicitados pelos clientes;
- Captura inteligente – Permite criar filtros específicos para protocolos e detalhes da requisição;
Para desenvolvimento de sistemas web, automações e integração com inteligência artificial, usaremos o MITMPROXY para investigar o funcionamento de nossos sistemas.
2 – MITMPROXY como WebHook reverso
Nesse exemplo, nosso MITMPROXY vai atuar como proxy-reverso para uma WebHook oficial do N8N.
Nessa topologia, poderemos fornecer a URL dele a sistemas externos, ele irá receber, registrar todos os detalhes da requisição e encaminhar ao N8N (container n8n porta 5678).
O acesso a administração está protegido por senha, altere a senha por segurança.
Bash
# Variaveis NAME="mitmproxy-webhook"; DOMAIN=$(hostname -f); IMAGE="mitmproxy/mitmproxy:latest"; FQDN_ADMIN="mitmproxy.$DOMAIN"; FQDN_MITM="webhooks.$DOMAIN"; # Senha de acesso administrativo PASSWORD="tulipa"; # Diretorio de dados persistentes: DATADIR=/storage/$NAME; mkdir -p $DATADIR; # Renovar/rodar: docker pull $IMAGE; docker rm -f $NAME 2>/dev/null; docker run \ -d --restart=always --name $NAME -h $NAME.intranet.br \ --network network_public --ip=10.249.255.241 \ \ -v $DATADIR:/home/mitmproxy \ -p 29080:8080 \ -p 29081:8081 \ \ --label "traefik.enable=true" \ \ --label "traefik.http.routers.${NAME}-web.rule=Host(\`$FQDN_ADMIN\`)" \ --label "traefik.http.routers.${NAME}-web.entrypoints=web,websecure" \ --label "traefik.http.routers.${NAME}-web.tls=true" \ --label "traefik.http.routers.${NAME}-web.tls.certresolver=letsencrypt" \ --label "traefik.http.routers.${NAME}-web.service=${NAME}-web" \ --label "traefik.http.services.${NAME}-web.loadbalancer.server.port=8081" \ --label "traefik.http.services.${NAME}-web.loadbalancer.passHostHeader=true" \ \ --label "traefik.http.routers.${NAME}-mitm.rule=Host(\`$FQDN_MITM\`)" \ --label "traefik.http.routers.${NAME}-mitm.entrypoints=web,websecure" \ --label "traefik.http.routers.${NAME}-mitm.tls=true" \ --label "traefik.http.routers.${NAME}-mitm.tls.certresolver=letsencrypt" \ --label "traefik.http.routers.${NAME}-mitm.service=${NAME}-mitm" \ --label "traefik.http.services.${NAME}-mitm.loadbalancer.server.port=8080" \ --label "traefik.http.services.${NAME}-mitm.loadbalancer.passHostHeader=true" \ \ $IMAGE \ mitmweb \ --web-host 0.0.0.0 \ --web-port 8081 \ --set web_password=tulipa \ --mode reverse:http://n8n:5678; # Acesso: echo; echo "Acesso MITMPROXY:"; echo " WebAdmin.....: $FQDN_MITM"; echo " Webhook......: $FQDN_ADMIN"; echo;Agora acesse a administração (WebAdmin) na porta HTTP 8081 ou pelo nome registrado no Traefik ($FQDN_ADMIN acima).
3 – Assistindo os acessos
Na guia “Flow” você poderá assistir em tempo real as requisições!

Testando uma WebHook do N8N:
Bash
# Acionando WebHook: # - Coloque a URL da sua Webhook aqui e substitua o nome FQDN (DNS) # pela URL do MITMPROXY WEBHOOK_URL="https://webhooks.SEU-DOMINIO.com/webhook/ws01"; # - Acione a URL: curl -qs "$WEBHOOK_URL";Terminamos por hoje!
Patrick Brandão, patrickbrandao@gmail.com