Capture o tráfego de um app Android
O app Busymate DevTools para Android roda um motor de captura baseado em VPN no próprio celular. Sem proxy de desktop, sem Wi-Fi compartilhada, sem configuração de proxy — e um relato honesto de quais apps realmente são descriptografados em um celular sem root.
No Android, o caminho clássico para ler o HTTPS de um app é um proxy em um notebook mais uma entrada manual de proxy nas configurações de Wi-Fi do celular. Funciona até você sair daquela rede. O Busymate DevTools tira o proxy do caminho: o app se registra como a VPN do celular, vê todas as conexões que o celular faz, descriptografa os hosts que você escolher com um certificado gerado no dispositivo e envia o resultado para o mesmo dashboard usado pelo app iOS e pelo proxy de desktop.
Há um fato da plataforma que este guia não vai esconder. Desde o Android 7.0, um app ignora certificados instalados pelo usuário a menos que opte por aceitá-los. Isso significa que o celular consegue capturar o tráfego de todos os apps, mas só consegue descriptografar os apps que confiam no repositório de certificados do usuário — na prática, seus próprios builds de debug, além dos navegadores do sistema e clientes parecidos. O passo cinco mostra a mudança de um único arquivo que coloca seu app nessa lista, e o guia sobre pinning cobre o resto.
O que você
Um celular, uma conta e — se você quiser corpos descriptografados do seu próprio app — um build de debug que você consiga recompilar.
Um celular com Android 7.0 ou superior. Não é preciso root nem computador para capturar.
Uma conta Busymate. Entre com o Google ou com e-mail e senha; entrar pareia o celular ao seu dashboard.
Os nomes de host da API que você quer ler, para a lista de SSL proxy. Só os hosts listados são descriptografados.
Para o seu próprio app: a possibilidade de recompilar o build de debug com uma configuração de segurança de rede de um único arquivo, para que ele confie no certificado que o celular gerou.
Faça
Seis passos. A configuração guiada do app cuida das permissões da plataforma uma tela de cada vez; o único trabalho fora do app é a mudança no build de debug do passo cinco.
- 01
Instale o app e aceite o consentimento de captura
Instale o Busymate DevTools pelo Google Play, ou faça sideload do APK de release assinado a partir da página do Android se a listagem ainda não estiver visível na sua região. No primeiro uso, o app pede seu consentimento explícito para capturar tráfego de rede. A captura é opcional e fica desligada até você ligá-la — nada roda em segundo plano antes de você autorizar.


- 02
Entre na conta — o celular se pareia sozinho
Entre com o Google ou com seu e-mail e senha. Como no iOS, entrar é parear: o app troca a sessão por uma credencial de dispositivo de longa duração guardada no armazenamento criptografado do app, e o celular aparece como Online na aba Devices do dashboard logo em seguida. A tela inicial mostra o nome do dispositivo, uma pílula de conta, o cartão com o botão de captura e um cartão de prontidão com uma engrenagem para as Configurações.


- 03
Adicione os domínios que quer descriptografar
Abra as Configurações pela engrenagem e vá em SSL Proxying. Liste os hosts cujos corpos HTTPS você quer ler; todo o resto continua criptografado de ponta a ponta e aparece como um nome de host com a contagem de requisições. Um asterisco e um ponto no início cobrem um domínio e todos os seus subdomínios. A mesma seção contém os controles de descriptografia e uma lista Ignore Hosts para o ruído de fundo que você nunca quer no feed.
Você não precisa fazer isso no celular. O dashboard edita a mesma lista por dispositivo, e uma alteração lá é enviada ao celular ao vivo, então um colega pode adicionar um host enquanto você continua testando.
- 04
Execute a configuração guiada
Toque no cartão de prontidão. A configuração guiada passa por três permissões da plataforma, uma tela de cada vez: permitir a notificação de captura, instalar no repositório de certificados do usuário o certificado que o app gerou só para você, e aprovar o pedido de conexão VPN do próprio Android. Cada etapa é marcada como concluída conforme você avança, e o cartão fica pronto quando as três passam.
Esse certificado é pessoal do seu dispositivo — é criado no celular, nunca baixado de um servidor compartilhado — e é o que permite ao app apresentar um certificado confiável para cada host que você escolheu descriptografar.


- 05
Faça seu próprio app confiar no repositório de certificados do usuário
Este é o passo que nenhuma ferramenta de captura para Android consegue pular. Desde o Android 7.0, um app que mira esse nível ou superior confia por padrão apenas no repositório de certificados do sistema, então seu app vai fechar a conexão assim que o celular apresentar o certificado gerado. A solução é uma pequena configuração de segurança de rede, restrita a builds de debug, que adiciona o repositório do usuário ao lado do repositório do sistema. O Android remove completamente o bloco de debug-overrides dos builds de release, então ele não pode vazar para produção.
Crie o arquivo abaixo no seu app, mantenha a âncora do sistema junto da âncora do usuário para que o HTTPS comum continue funcionando, referencie-o na tag application do seu manifesto, depois recompile e instale o build de debug. Reinstalar o binário antigo não adianta — a confiança vive no app recém-compilado.
A configuração de segurança de rede só para debug, seguida da referência no manifesto xml<!-- app/src/main/res/xml/network_security_config.xml --> <network-security-config> <debug-overrides> <trust-anchors> <certificates src="user" /> <certificates src="system" /> </trust-anchors> </debug-overrides> </network-security-config> <!-- AndroidManifest.xml --> <application android:networkSecurityConfig="@xml/network_security_config" ... > - 06
Ligue a captura e inspecione
Ligue o botão de captura. O Android mostra o ícone de chave VPN na barra de status, e toda requisição que o celular faz começa a chegar no feed do dashboard e na própria tela Network do app — uma linha de status, pílulas de estatísticas, chips de categoria e uma lista agrupada por host com busca na parte de baixo. Toque em um host e depois em uma requisição para ver o detalhe completo: abas General, Header, Summary, Timing e Body tanto para a requisição quanto para a resposta.
Abra seu app e dispare uma chamada. As entradas HTTPS dele agora mostram cabeçalhos legíveis e um corpo descriptografado em vez de um túnel opaco. Quando terminar, desligue a captura — a VPN cai, e o certificado e o app podem ser removidos como qualquer outro.


O que pode
A maioria dos problemas no Android é a plataforma sendo rígida com certificados, e o feed diz em qual deles você esbarrou.
O tráfego do seu próprio app ainda aparece criptografado
A configuração de segurança de rede não entrou em vigor. Confirme que você recompilou e instalou o build de debug depois de adicioná-la, que o manifesto aponta para o arquivo e que o certificado está no repositório do usuário. Se a configuração fica em um source set só de debug, o atributo do manifesto também precisa estar no manifesto de debug.
Um app da loja que você não compilou continua opaco
Esperado em um celular sem root: aquele app nunca optou por aceitar certificados do usuário, então o celular registra a conexão apenas como metadados. Descriptografá-lo exige um dispositivo com root onde o certificado possa ir para o repositório do sistema — o nível que a farm de celulares usa — e mesmo isso não abre um app que fixa o próprio certificado.
O pedido de VPN do Android fica voltando
Outro app de VPN está ativo, ou a aprovação anterior foi revogada nas configurações de VPN do sistema. Só uma VPN pode rodar por vez; desconecte a outra e aprove o pedido de novo pela configuração guiada.
A notificação de captura nunca apareceu
A permissão de notificação foi negada no primeiro pedido. Reative-a para o Busymate DevTools nas configurações de apps do sistema; a configuração guiada verifica de novo e marca a etapa como concluída.
Um host está na lista, mas a regra por caminho não dispara
Regras que casam por caminho precisam que o host esteja descriptografado; em um host que passa criptografado só o nome do host é visível. Adicione primeiro o host à lista de SSL proxy e depois verifique a regra novamente.
Perguntas
Preciso de root?
Não para capturar, e não para descriptografar seus próprios builds de debug ou clientes que confiam no repositório do usuário. Root só é necessário para mover o certificado para o repositório do sistema, de modo que apps que você não compilou confiem nele.
Isso é um proxy por baixo dos panos?
Não. O app é registrado como a VPN do celular, então vê o tráfego de todos os apps por Wi-Fi e dados móveis sem tocar em nenhuma configuração de proxy. Existe um proxy de desktop separado para navegadores e backends, mas este guia nunca o usa.
O que acontece com os apps que não estão na minha lista?
Continuam funcionando exatamente como antes. As conexões deles são registradas apenas como host e tempo e nunca são descriptografadas, e o Ignore Hosts pode tirar as mais barulhentas do feed por completo.
O tráfego do seu app,
Instale o app, execute a configuração guiada, adicione a configuração de debug de um arquivo e veja as requisições do seu app chegarem descriptografadas.