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.
# 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:
# 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