Como ver o tráfego do seu aplicativo móvel: guia passo a passo com mitmproxy e Charles
Sumário do artigo
- Introdução: por que desenvolvedores e testadores precisam ver o tráfego do seu aplicativo
- Preparação inicial: ferramentas, requisitos e o que instalar
- Conceitos básicos: como funciona um proxy mitm e por que você precisa do seu próprio certificado
- Passo 1: configurar o proxy na rede no android e ios
- Passo 2: instalar e confiar no certificado raiz
- Passo 3: o mesmo no emulador android e simulador ios
- Passo 4: trabalhar com ssl pinning na sua build de depuração
- Passo 5: ler e analisar o tráfego
- Como proxies móveis ajudam a testar o aplicativo de outra rede e região
- Verificação do resultado: checklist de configuração bem-sucedida
- Erros típicos e soluções
- Recursos adicionais e configurações avançadas
- Faq: perguntas frequentes
- Conclusão
Você está desenvolvendo ou testando um aplicativo móvel e quer saber exatamente quais requisições ele envia ao servidor e o que recebe como resposta? Este guia passo a passo vai levá-lo desde o início até o controle total sobre o tráfego de rede do seu próprio aplicativo. Vamos abordar as ferramentas mais populares de 2026, aprender a instalar o certificado confiável no telefone, emulador e simulador, e também como contornar cuidadosamente o SSL pinning em builds de depuração usando os recursos nativos.
Importante desde o início: tudo o que está descrito abaixo se refere exclusivamente ao seu próprio aplicativo ou a um aplicativo para o qual você possui autorização por escrito do proprietário para investigar. Este material é para engenheiros de qualidade e desenvolvedores, e não um guia para interferir em programas alheios. Falaremos sobre isso em detalhes na seção sobre regras e ética.
Introdução: por que desenvolvedores e testadores precisam ver o tráfego do seu aplicativo
Um aplicativo móvel se comunica com o servidor constantemente: faz login, carrega o catálogo de produtos, envia análises, sincroniza dados. Enquanto tudo funciona, essas requisições permanecem invisíveis. Mas quando algo quebra, a pergunta é sempre a mesma: o que exatamente foi enviado ao servidor e o que retornou?
Saber ler o tráfego do seu aplicativo resolve vários problemas de uma vez:
- Verificação de integrações. Você vê o formato exato das requisições para sua API, cabeçalhos, corpo, códigos de resposta. Fica fácil entender quem é o culpado pelo bug: o cliente ou o backend.
- Reprodução de bugs. Quando um testador relata um problema, você pode ver a sequência real de requisições e repetir o cenário.
- Auditoria de vazamentos. Você verifica se não está vazando informações indesejadas: tokens em logs, dados pessoais em análises, campos desnecessários.
- Teste de cenários de erro. Você pode falsificar a resposta do servidor e ver como o aplicativo se comporta com erro 500 ou timeout.
O que você vai obter no final
Após seguir este guia, você será capaz de configurar um proxy local no computador, direcionar o tráfego do telefone através dele, descriptografar requisições HTTPS protegidas, lê-las em uma interface conveniente, repeti-las e modificar respostas. Tudo isso para o seu próprio aplicativo.
Para quem é este guia
O material foi escrito para engenheiros de QA, desenvolvedores móveis e profissionais técnicos que desejam entender a camada de rede do seu aplicativo. Nível: para iniciantes, mas com elementos para avançados.
O que você precisa saber de antemão
Basta uma compreensão básica do que é uma requisição HTTP, servidor e cliente. Conhecimento de linha de comando será um diferencial, mas também abordaremos ferramentas gráficas. Não serão necessários conhecimentos profundos de criptografia.
Quanto tempo vai levar
A primeira configuração levará de uma a duas horas, incluindo a instalação das ferramentas e certificados. Repetições posteriores levarão alguns minutos.
Preparação inicial: ferramentas, requisitos e o que instalar
Antes de mergulhar no tráfego, vamos montar o ambiente de trabalho. Abordaremos quatro ferramentas populares e escolheremos a mais adequada para você.
Comparação das ferramentas: mitmproxy, Charles, Proxyman e Burp
Cada uma dessas ferramentas funciona como um proxy MITM, ou seja, um intermediário entre seu aplicativo e o servidor. As diferenças estão na interface, preço e conveniência.
- mitmproxy. Gratuito e de código aberto. Funciona no terminal, mas também possui interface web mitmweb. Ideal para quem gosta de scripts e automação em Python. Multiplataforma.
- Charles. Pago, com período de teste. Interface gráfica clássica em Java, funciona no Windows, macOS e Linux. Muito popular entre QA móveis devido à simplicidade.
- Proxyman. Ferramenta moderna com interface bonita, originalmente para macOS, com versões para Windows e Linux. Configuração automática de certificados conveniente.
- Burp Suite. Ferramenta do mundo da segurança. Poderosa, possui versão Community gratuita. Um pouco exagerada para simples visualização de tráfego, mas útil para análise avançada.
Dica: Se você é iniciante e quer ver resultados rápidos, comece com Charles ou Proxyman. Se gosta de terminal e automação, instale mitmproxy. Para os fins deste guia, vamos nos basear em mitmproxy e Charles como as opções mais versáteis.
Requisitos de sistema
- Computador com Windows, macOS ou Linux com direitos de administrador.
- Dispositivo móvel ou emulador Android, ou simulador iOS.
- Rede Wi-Fi comum para telefone e computador, ou emulador configurado.
- Acesso ao código-fonte do seu aplicativo para compilar uma versão de depuração.
O que baixar e instalar
- Baixe a ferramenta de proxy escolhida no site oficial. Para mitmproxy, o instalador para seu SO ou pacote via gerenciador de pacotes.
- Instale a ferramenta seguindo o assistente de instalação padrão do seu sistema.
- Para emulador Android, instale o Android Studio com emulador e imagem de sistema sem serviços do Google, se quiser trabalhar facilmente com o armazenamento de certificados do sistema.
- Para simulador iOS no macOS, instale o Xcode pela App Store.
⚠️ Atenção: Baixe as ferramentas apenas dos sites oficiais dos desenvolvedores. Programas proxy têm acesso profundo ao tráfego, portanto falsificações podem ser perigosas. Verifique as assinaturas dos instaladores sempre que possível.
Cópias de segurança e preparação do dispositivo
Trabalhar com certificados e configurações de rede geralmente é seguro e reversível. Mas antes de fazer alterações, é bom se precaver.
- Anote as configurações atuais de Wi-Fi do telefone para poder revertê-las depois.
- Use um dispositivo de teste separado ou perfil para experimentos, não o telefone principal de trabalho.
- Se estiver trabalhando com um dispositivo de trabalho, lembre-se de quais certificados está instalando para removê-los após a depuração.
✅ Verificação: Nesta etapa, você deve ter a ferramenta de proxy instalada, um dispositivo de teste ou emulador pronto e acesso à build do seu aplicativo.
Conceitos básicos: como funciona um proxy MITM e por que você precisa do seu próprio certificado
Para avançar com confiança, vamos explicar os principais termos de forma simples. Esta é a base sem a qual os passos parecerão mágica.
O que é um proxy MITM
MITM significa man-in-the-middle, ou seja, homem no meio. O proxy se posiciona entre seu aplicativo e o servidor. O aplicativo pensa que está falando com o servidor, e o servidor pensa que está falando com o aplicativo. Na verdade, ambos se comunicam com o proxy, que vê e pode exibir todo o tráfego.
Para HTTP normal, isso funciona imediatamente: os dados são transmitidos em texto claro. Mas os aplicativos modernos usam HTTPS, onde o tráfego é criptografado. Aqui começa a parte interessante.
O que acontece no handshake TLS
O HTTPS é construído sobre o protocolo TLS. Quando o aplicativo se conecta ao servidor, eles realizam um chamado handshake. O servidor apresenta seu certificado, confirmando que é quem diz ser. O aplicativo verifica esse certificado usando uma lista de autoridades certificadoras confiáveis.
Autoridade Certificadora, ou CA, é uma organização na qual os dispositivos confiam. A assinatura dela no certificado do servidor convence o aplicativo de que a conexão é segura.
Por que você precisa do seu próprio certificado CA
Para que o proxy possa exibir o tráfego criptografado, ele precisa atuar como servidor para o aplicativo. Para isso, o proxy gera dinamicamente um certificado para cada domínio solicitado e o assina com seu próprio certificado raiz CA.
Mas o aplicativo, por padrão, não confia nesse CA autoassinado. Portanto, instalamos manualmente o certificado raiz do proxy no armazenamento de certificados confiáveis do dispositivo. Depois disso, o aplicativo vê a assinatura do proxy como confiável e estabelece a conexão.
Dica: Pense no certificado raiz do proxy como um passe. Enquanto você não entregar esse passe ao dispositivo, ele não permitirá que o proxy leia o tráfego protegido.
Por que sem confiança você vê apenas o nome do host no SNI
Se o certificado do proxy não estiver instalado, o aplicativo se recusará a estabelecer uma conexão segura através dele. Mas algo ainda será visível. No início do handshake TLS, é transmitido o campo SNI, ou seja, o nome do servidor ao qual a conexão está sendo feita. Ele é necessário para que o servidor saiba qual site está sendo solicitado.
Portanto, mesmo sem confiar no certificado, você verá uma lista de domínios que o aplicativo acessa, mas não conseguirá ler o conteúdo das requisições e respostas. Para ler o conteúdo, é necessário um certificado instalado e confiável.
O que é SSL pinning
SSL pinning, ou fixação de certificado, é uma proteção adicional. O aplicativo armazena internamente a impressão digital do certificado ou chave esperados do servidor e verifica se o servidor apresentou exatamente esse. Mesmo que haja um certificado de proxy confiável no sistema, o aplicativo com pinning o rejeitará, porque a impressão digital não coincide. Sobre como lidar com pinning em suas builds de depuração, falaremos separadamente.
✅ Verificação: Você entende que o proxy exibe o tráfego sendo um intermediário, e para ler HTTPS é necessário um certificado raiz confiável do proxy no dispositivo.
Passo 1: configurar o proxy na rede no Android e iOS
Objetivo da etapa: direcionar todo o tráfego web do telefone através do seu computador, onde está rodando a ferramenta de proxy.
Preparar o computador e descobrir seu endereço
- Certifique-se de que o computador e o telefone estão conectados à mesma rede Wi-Fi.
- Inicie a ferramenta de proxy. Para mitmweb, no terminal execute o comando para iniciar a interface web; para Charles, basta abrir o aplicativo.
- Verifique em qual porta o proxy está ouvindo. Por padrão, mitmproxy usa a porta 8080, Charles também usa 8888 ou 8080 dependendo da versão.
- Descubra o endereço IP local do computador na rede. No Windows, use o comando de configurações de rede; no macOS e Linux, comando similar no terminal. O endereço parece algo como 192.168.1.15.
Dica: Anote o endereço IP do computador e a porta do proxy em um papel. Esses dois valores você digitará nas configurações do telefone.
Configurar proxy no Android
- Abra no telefone o aplicativo Configurações.
- Vá para Rede e internet, depois Wi-Fi.
- Toque no nome da sua rede atual para abrir suas configurações.
- Encontre a opção Avançado ou o ícone de lápis para editar a rede.
- No campo Proxy, selecione Manual.
- No campo Nome do host do proxy, digite o endereço IP do computador, por exemplo 192.168.1.15.
- No campo Porta, digite a porta do proxy, por exemplo 8080.
- Salve as configurações tocando em Salvar.
Configurar proxy no iOS
- Abra o aplicativo Ajustes.
- Vá para Wi-Fi.
- Toque no ícone de informação azul ao lado do nome da sua rede.
- Role para baixo até a seção Proxy HTTP.
- Selecione o modo Manual.
- No campo Servidor, digite o endereço IP do computador.
- No campo Porta, digite a porta do proxy.
- Volte, as configurações serão salvas automaticamente.
⚠️ Atenção: Após configurar o proxy, todo o tráfego web do telefone passará pelo computador. Se a ferramenta de proxy estiver desligada, a internet no telefone deixará de funcionar. Isso é normal: basta ligar o proxy ou remover as configurações.
Resultado esperado
Abra no telefone qualquer navegador e acesse um site simples por HTTP. Na interface do proxy, devem aparecer registros das requisições. Por enquanto, HTTPS será exibido apenas como nome do host, pois o certificado ainda não foi instalado.
Possíveis problemas. Se nada aparecer, verifique se o telefone e o computador estão na mesma rede, se você digitou o IP e a porta corretos e se o firewall do computador não está bloqueando as conexões.
✅ Verificação: Na janela do proxy, são visíveis requisições recebidas do telefone, pelo menos como uma lista de domínios.
Passo 2: instalar e confiar no certificado raiz
Objetivo da etapa: fazer com que o dispositivo confie no certificado raiz do proxy e permita ler o conteúdo das requisições HTTPS.
Baixar o certificado do proxy
Quando o proxy está configurado e o telefone passa por ele, há uma maneira conveniente de obter o certificado diretamente no dispositivo.
- Abra o navegador no telefone.
- Para mitmproxy, acesse o endereço de serviço especial mitm.it. Esta página aparece apenas quando o tráfego passa pelo mitmproxy.
- Você verá botões para diferentes plataformas. Escolha a desejada, por exemplo Android ou Apple.
- O arquivo de certificado será baixado.
- Para Charles, o certificado também está disponível através de um endereço de serviço que o próprio programa mostra no menu de ajuda.
Instalação no Android 7 e versões posteriores
A partir do Android 7, o sistema divide dois armazenamentos de certificados: de usuário e de sistema. Este é um ponto crucial.
- Armazenamento de usuário. Você pode instalar o certificado aqui sem direitos root. Mas os aplicativos, por padrão, não confiam em certificados de usuário, a menos que o desenvolvedor tenha explicitamente permitido na configuração do aplicativo.
- Armazenamento de sistema. Todos os aplicativos confiam nele, mas adicionar um certificado lá só é possível em um dispositivo com acesso root ou em um emulador com imagem sem serviços do Google.
Para instalar no armazenamento de usuário, siga os passos:
- Abra Configurações, depois Segurança.
- Encontre a opção Criptografia e credenciais ou Configurações adicionais de segurança.
- Selecione Instalar certificado, depois Certificado CA.
- O sistema alertará sobre os riscos; confirme a instalação.
- Indique o arquivo de certificado baixado.
- Dê um nome compreensível ao certificado, por exemplo DebugProxy.
Importante: É justamente por causa da separação de armazenamentos no Android 7 e superior que seu aplicativo pode não enxergar o tráfego, mesmo com o certificado instalado no armazenamento de usuário. A solução através da configuração do aplicativo será abordada no passo sobre pinning.
Instalação e confiança no iOS
No iOS, o processo é dividido em duas etapas: instalação do perfil e ativação da confiança.
- Após baixar o certificado, o iOS informará que o perfil foi baixado.
- Abra Ajustes; no topo aparecerá a opção Perfil baixado.
- Toque nele e selecione Instalar no canto superior direito.
- Digite o código de bloqueio do dispositivo, se houver.
- Confirme a instalação do perfil.
Agora, o passo crucial que muitos esquecem: ativar a confiança total.
- Abra Ajustes, depois Geral.
- Vá para Sobre.
- Role para baixo até a seção Confiança em certificados.
- Encontre seu certificado de proxy na lista.
- Ative a chave ao lado dele para habilitar a confiança total no certificado raiz.
⚠️ Atenção: Sem ativar a chave na seção Confiança em certificados, o iOS considerará o certificado instalado, mas não confiável. O tráfego HTTPS não será lido. Este é o erro mais comum de iniciantes no iOS.
Resultado esperado
Abra o navegador e acesse qualquer site por HTTPS. Agora, na interface do proxy, você deve ver o conteúdo completo das requisições e respostas, não apenas os nomes dos domínios.
✅ Verificação: Na ferramenta de proxy, é exibido o conteúdo descriptografado das requisições HTTPS do navegador do telefone.
Passo 3: o mesmo no emulador Android e simulador iOS
Objetivo da etapa: configurar a interceptação de tráfego sem um dispositivo físico, diretamente no computador do desenvolvedor.
Emulador Android
O emulador é conveniente porque você pode usar uma imagem sem serviços do Google e ter acesso ao armazenamento de certificados do sistema.
- No Android Studio, abra o Device Manager e crie um dispositivo virtual.
- Ao escolher a imagem do sistema, prefira uma versão sem a marca Google Play para ter direitos sobre a partição do sistema.
- Inicie o emulador.
- Nas configurações avançadas do emulador, você pode definir o proxy diretamente, ou configurá-lo nas definições de Wi-Fi dentro do emulador, como em um telefone real.
- Para o armazenamento do sistema, use ferramentas de linha de comando que permitem reiniciar o emulador com permissão de gravação na partição do sistema e adicionar o certificado lá.
Dica: O emulador sem serviços do Google e com acesso ao armazenamento do sistema evita muitos problemas com confiança de certificados. É a melhor escolha para depuração regular.
Simulador iOS
O simulador iOS no macOS usa os certificados confiáveis do próprio sistema macOS, o que simplifica a configuração.
- Instale o certificado raiz do proxy no keychain do sistema do seu Mac.
- Abra o aplicativo Keychain Access, encontre o certificado do proxy.
- Clique duas vezes para abri-lo e na seção Confiança, defina como Sempre confiar.
- Inicie o simulador pelo Xcode. Ele herdará a confiança no certificado do macOS.
- O tráfego do simulador passará pelo proxy de sistema do Mac, se estiver configurado, ou pelo proxy definido nas configurações de rede.
Resultado esperado. Em ambos os casos, você vê o tráfego descriptografado do aplicativo de teste ou navegador executado no emulador ou simulador.
Possíveis problemas. Se o emulador Android não captar o proxy, verifique as configurações de Wi-Fi dentro dele e os parâmetros de inicialização. Para o simulador iOS, certifique-se de que o certificado no keychain esteja marcado como confiável.
✅ Verificação: O tráfego do emulador ou simulador é lido na ferramenta de proxy de forma descriptografada.
Passo 4: trabalhar com SSL pinning na sua build de depuração
Objetivo da etapa: entender se o aplicativo tem fixação de certificado e como atenuá-la corretamente apenas na build de depuração usando os recursos nativos da plataforma.
Esta é a seção mais importante, portanto vamos abordá-la com cuidado.
Como saber se o pinning está ativado
Se o certificado do proxy está instalado e confiável, o navegador exibe o tráfego, mas seu aplicativo ainda não funciona ou reclama de erro de rede, provavelmente ele tem pinning.
- Na interface do proxy, você verá uma quebra de conexão na fase de handshake TLS para os domínios do seu aplicativo.
- Nos logs do aplicativo, podem aparecer mensagens de erro de verificação de certificado ou cadeia não confiável.
- Frequentemente, o próprio desenvolvedor sabe que o pinning foi adicionado intencionalmente para proteger a versão de produção.
Atenuação do pinning no Android via network_security_config
O Android oferece um mecanismo nativo de configuração de segurança de rede. Com ele, você pode permitir a confiança em certificados de usuário apenas para a build de depuração.
- No projeto, crie um arquivo de configuração de segurança de rede nos recursos.
- Descreva nele as regras de confiança de certificados especificamente para a configuração de depuração, usando o bloco especial de sobrescrita de depuração.
- Indique que, na depuração, o aplicativo confia no armazenamento de certificados do usuário.
- Vincule este arquivo no manifesto do aplicativo através do atributo apropriado.
- Certifique-se de que as sobrescritas de depuração sejam aplicadas apenas quando o aplicativo está compilado em modo de depuração e nunca na versão de produção.
Importante: O bloco especial de sobrescritas de depuração funciona apenas quando o aplicativo está marcado como depurável. Na build de produção, essas regras são completamente ignoradas pelo sistema, garantindo a segurança.
Atenuação das verificações no iOS através das configurações no Info.plist
No iOS, a segurança de transporte é controlada pelo mecanismo ATS. Na build de depuração, você pode relaxar as verificações estritas para domínios específicos do seu ambiente de teste.
- Abra o arquivo Info.plist da sua configuração de depuração.
- Adicione as configurações de segurança de transporte para os domínios necessários do servidor de teste.
- Lembre-se de que o ATS regula a política de conexões, e o pinning personalizado no código do aplicativo deve ser desativado separadamente.
- Se o pinning estiver implementado no código, adicione uma condição para que a verificação da impressão digital seja executada apenas na configuração de produção.
⚠️ Atenção: Nunca deixe verificações atenuadas na build de produção. Isso cria uma vulnerabilidade real para os usuários do seu aplicativo. Todas as alterações devem valer estritamente na configuração de depuração e desaparecer automaticamente na versão de produção.
Por que apenas na depuração e nunca na produção
O SSL pinning protege os usuários do seu aplicativo contra interceptação do tráfego deles. Ao desativá-lo na depuração, você faz isso em um dispositivo controlado, para diagnóstico, de forma consciente e temporária. Na produção, essa proteção é criticamente importante e deve permanecer o mais estrita possível.
Dica: Separe a lógica de verificação de certificados por uma flag de build. Configure de forma que nem mesmo acidentalmente seja possível compilar uma versão de produção com verificações atenuadas. Isso o protegerá de erro humano.
Resultado esperado
Após configurar corretamente a build de depuração, seu aplicativo estabelece conexão através do proxy, e você vê suas requisições e respostas descriptografadas.
✅ Verificação: As requisições do seu aplicativo para sua API são exibidas no proxy de forma legível, e as alterações afetam apenas a build de depuração.
Passo 5: ler e analisar o tráfego
Objetivo da etapa: aprender a encontrar as requisições desejadas, filtrar o ruído, exportar dados, repetir requisições e modificar respostas.
Filtros e busca
Mesmo um aplicativo pequeno gera dezenas de requisições. Filtros ajudam a encontrar o que precisa.
- Use o filtro por domínio para deixar apenas as requisições para sua API.
- Filtre por tipo de conteúdo, por exemplo apenas respostas JSON.
- Busque por uma string no corpo da requisição ou resposta para encontrar rapidamente a chamada desejada.
- No Charles, há uma árvore conveniente por hosts; no mitmweb, uma barra de filtros flexível.
Dica: Configure o filtro para exibir apenas os domínios do seu aplicativo. Isso remove imediatamente o tráfego de fundo desnecessário do sistema e de serviços terceiros.
Exportação para HAR
O formato HAR é uma maneira padrão de salvar uma sessão de tráfego em um único arquivo. É útil para enviar à equipe de backend ou anexar a um relatório de bug.
- Selecione as requisições desejadas ou toda a sessão.
- Escolha a opção de exportação para o formato HAR no menu da ferramenta.
- Salve o arquivo e anexe-o à tarefa no rastreador.
Repetição de requisição
Às vezes é necessário repetir a mesma requisição várias vezes, por exemplo para verificar idempotência ou reproduzir um bug.
- Selecione a requisição desejada na lista.
- Use a função de repetição; no Charles é Repeat, no mitmproxy o comando de repetição de fluxo.
- Se necessário, edite a requisição antes de repetir, alterando cabeçalhos ou corpo.
Modificação de resposta para testar cenários de erro
Este é um recurso poderoso. Você pode fazer o aplicativo receber a resposta desejada em vez da real.
- Configure uma regra de modificação; no Charles são as funções Map Local ou Breakpoints; no mitmproxy, scripts em Python.
- Defina que, ao fazer uma requisição para um determinado endereço, seja retornada uma resposta preparada antecipadamente, por exemplo erro 500 ou lista vazia.
- Execute o cenário no aplicativo e veja como ele lida com o erro.
Dica: Com a modificação de respostas, é conveniente testar o comportamento do aplicativo em condições de internet ruim, erros de servidor e dados inesperados, sem tocar no backend real.
✅ Verificação: Você sabe filtrar tráfego, exportar HAR, repetir requisições e modificar respostas no seu aplicativo.
Como proxies móveis ajudam a testar o aplicativo de outra rede e região
Vale a pena falar separadamente sobre proxies móveis. São servidores proxy que funcionam através de redes reais de operadoras móveis. Eles são úteis para testar como seu aplicativo se comporta quando o usuário acessa de uma internet móvel em outra região.
Por que isso é útil para QA
- Verificação de conteúdo regional. Muitos aplicativos mostram dados diferentes dependendo da região do usuário. Um proxy móvel permite ver o aplicativo pelos olhos de um usuário em uma região específica.
- Teste em rede móvel. O comportamento do aplicativo na internet móvel difere do Wi-Fi: latências diferentes, mudança de IP, peculiaridades das redes das operadoras. O proxy móvel ajuda a reproduzir essas condições.
- Verificação de lógica dependente de geolocalização. Se seu backend determina a região pelo IP, você pode garantir que a lógica funcione corretamente para diferentes locais.
Importante: Use proxies móveis apenas para testar seu próprio aplicativo e dentro da lei. Esta é uma ferramenta de QA para verificar a correção da lógica regional, não um meio de contornar algo. Serviços de proxy móvel, como MobileProxy.space, fornecem acesso legal a IPs móveis para tais tarefas.
Dica: Combine um proxy móvel para alterar o ponto de saída com um proxy MITM local para ler o tráfego. Assim, você vê simultaneamente o conteúdo das requisições e verifica o comportamento regional.
Verificação do resultado: checklist de configuração bem-sucedida
Percorra esta lista para garantir que tudo está funcionando como deveria.
- A ferramenta de proxy está em execução e ouvindo na porta correta.
- O telefone, emulador ou simulador está direcionando o tráfego através do proxy.
- O certificado raiz do proxy está instalado e confiável no dispositivo.
- O tráfego HTTPS do navegador é lido de forma descriptografada.
- Na build de depuração do aplicativo, o pinning foi atenuado usando os recursos nativos.
- As requisições do seu aplicativo para a API são exibidas completamente no proxy.
- Você sabe filtrar, exportar, repetir e modificar requisições.
Como testar
- Inicie a build de depuração do aplicativo.
- Execute um cenário típico, como login e carregamento da tela inicial.
- Certifique-se de que no proxy apareceram requisições para sua API com corpo legível.
- Repita uma requisição e modifique uma resposta para verificar a reação do aplicativo.
Indicadores de sucesso. Você vê o ciclo de vida completo da interação de rede do seu aplicativo e pode influenciá-lo para testes.
Erros típicos e soluções
Vamos abordar problemas comuns no formato problema, causa, solução.
O aplicativo ignora o proxy do sistema
Problema: o tráfego não aparece no proxy, embora o navegador funcione. Causa: o aplicativo usa sua própria pilha de rede, que não lê as configurações de proxy do sistema. Solução: na build de depuração, configure o cliente de rede para considerar o proxy do sistema, ou use o modo de proxy transparente em nível de rede.
Tráfego via QUIC não é visível
Problema: parte das requisições está ausente. Causa: o aplicativo usa o protocolo QUIC sobre UDP, que proxies HTTP comuns não interceptam. Solução: na build de depuração, desative temporariamente o suporte a QUIC no cliente de rede para que o tráfego vá por HTTPS comum e se torne visível no proxy.
Nuances do Android 14
Problema: o certificado está instalado, mas o aplicativo não o vê. Causa: nas versões mais recentes do Android, as regras de gerenciamento de certificados de usuário se tornaram mais rigorosas, e os aplicativos por padrão não confiam neles. Solução: use a configuração de segurança de rede com sobrescritas de depuração ou o armazenamento do sistema no emulador.
iOS não descriptografa o tráfego
Problema: as requisições do aplicativo no iOS não são lidas. Causa: o certificado está instalado, mas a confiança total não foi ativada na seção Confiança em certificados. Solução: vá em Ajustes, Geral, Sobre, Confiança em certificados e ative a chave.
gRPC e HTTP/2
Problema: os dados são visíveis, mas em formato binário incompreensível. Causa: o aplicativo usa gRPC sobre HTTP/2 com serialização binária. Solução: use ferramentas que entendem HTTP/2 e, se necessário, plugins para decodificar o formato das mensagens para ler o conteúdo.
Sem internet após configurar o proxy
Problema: o telefone parou de acessar a rede. Causa: a ferramenta de proxy está desligada, mas as configurações de proxy permanecem. Solução: ligue o proxy no computador ou remova as configurações de proxy nas configurações de Wi-Fi do telefone.
Firewall bloqueando conexões
Problema: o telefone não consegue se conectar ao proxy. Causa: o firewall do computador está bloqueando conexões de entrada na porta do proxy. Solução: adicione uma regra de permissão para a porta do proxy no firewall do sistema.
Recursos adicionais e configurações avançadas
Quando a configuração básica estiver dominada, vale a pena expandir o arsenal.
Scripts e automação
mitmproxy permite escrever scripts em Python que modificam automaticamente requisições e respostas. Isso é útil para testes de regressão e cenários complexos de modificação.
Salvamento de sessões
Salve as sessões de tráfego gravadas em arquivos para revisitá-las depois ou compartilhar com a equipe. Isso acelera a análise de bugs.
Mapeamento para arquivos locais
A função de substituir resposta por um arquivo local permite desenvolver a interface do aplicativo independentemente da prontidão do backend. Você simplesmente fornece ao aplicativo respostas JSON preparadas antecipadamente.
Limitação de velocidade
Muitos proxies conseguem desacelerar artificialmente a conexão. Isso ajuda a verificar o comportamento do aplicativo em rede lenta e encontrar problemas com timeouts.
Dica: Monte um conjunto de cenários típicos de modificação e lentidão e reutilize-os a cada release. Isso transformará a depuração manual em um processo de teste repetível.
FAQ: perguntas frequentes
Preciso de root no Android para ler o tráfego?
Para o armazenamento de usuário e seu próprio aplicativo com configuração de depuração, root não é necessário. Para o armazenamento do sistema em um dispositivo real, será necessário root, mas é mais fácil usar um emulador sem serviços do Google.
Posso evitar a instalação do certificado?
Sem um certificado confiável, você verá apenas os nomes dos domínios no SNI, mas não o conteúdo do HTTPS. Para ler as requisições, o certificado é obrigatório.
Por que o navegador vê o tráfego, mas o aplicativo não?
Provavelmente o aplicativo tem SSL pinning ativado ou sua própria pilha de rede. Configure a build de depuração conforme descrito no passo sobre pinning.
É seguro instalar o certificado raiz do proxy?
Em um dispositivo de teste e durante a depuração, é aceitável. Após o trabalho, remova o certificado para não deixar confiança estendida no dispositivo.
O que fazer se o tráfego for via QUIC?
Desative o QUIC na build de depuração do cliente de rede para que as conexões passem por HTTPS comum e se tornem visíveis no proxy.
Posso analisar o tráfego de um aplicativo de terceiros?
Não. Apenas do seu próprio aplicativo ou de um aplicativo com autorização explícita do proprietário. Esta é uma regra fundamental.
Charles ou mitmproxy: qual escolher para iniciantes?
Charles é mais fácil para começar devido à interface gráfica. mitmproxy é mais poderoso para automação. Comece com o que for mais conveniente para você.
Como remover todas as alterações após a depuração?
Remova as configurações de proxy no Wi-Fi, remova o certificado instalado nas configurações de segurança e compile o aplicativo na configuração de produção com verificações completas.
Por que no iOS a confiança no certificado não funciona?
Você instalou o perfil, mas não ativou a confiança total na seção Confiança em certificados. Esta é uma etapa separada e obrigatória.
Posso ver o tráfego em uma rede lenta?
Sim, muitos proxies conseguem desacelerar artificialmente a conexão para testar o comportamento do aplicativo em internet ruim.
Conclusão
Parabéns, agora você tem um conjunto completo de habilidades para analisar o tráfego de rede do seu próprio aplicativo móvel. Você aprendeu a escolher entre mitmproxy, Charles, Proxyman e Burp, configurar um proxy local, direcionar o tráfego do telefone, emulador e simulador através dele.
Você entendeu como funciona um proxy MITM e por que é necessário um certificado raiz confiável, dominou as peculiaridades dos armazenamentos de certificados no Android 7 e versões posteriores e a etapa obrigatória de confiança no iOS. Você entendeu como atenuar cuidadosamente o SSL pinning apenas na build de depuração usando os recursos nativos da plataforma, sem nunca tocar na versão de produção.
Finalmente, você sabe ler, filtrar, exportar, repetir e modificar requisições, além de usar proxies móveis para verificar o comportamento regional do aplicativo dentro da lei.
O que fazer a seguir
Fixe a habilidade em um projeto real: configure a interceptação de tráfego do seu aplicativo e adicione ao processo de teste cenários típicos de modificação de respostas. Gradualmente, explore scripts de automação e compartilhe sessões de tráfego com a equipe.
Para onde evoluir: aprofunde-se na análise de HTTP/2 e gRPC, aprenda a escrever scripts para mitmproxy, domine a integração da interceptação de tráfego em testes automatizados. E lembre-se sempre da regra principal: trabalhe apenas com seu próprio aplicativo ou com autorização explícita do proprietário, respeitando a legislação e a privacidade dos usuários.