Introdução — Charles Proxy para interceptar requisições e respostas

Gabriel Prado
Android Dev BR
Published in
3 min readFeb 20, 2020

Charles é um proxy HTTP, ele encarrega-se de interceptar as requisições entre os dispositivos e a internet. Tornando-se possível modificar requisições e respostas. Lembrando que com o plano gratuito só será possível utiliza-lo por 30 minutos a cada sessão.

Introdução Interface:

O Overview é composto por :

  1. URL: endereço em que a chamada está sendo executada;
  2. Notes: informações sobre a requisição;
  3. Response Code: código HTTP (2XX,4XX,5XX);
  4. Protocol: protocolo utilizado para realizar a requisição HTTP/1.1;
  5. Content-Type: para indicar qual tipo de dado será enviado;
  6. Keep Alive em caso de HTTP/1.1: se deve manter a conexão TCP viva para envio de requisições e respostas.
  7. Timing: início da requisição, tempo de execução, tempo de TLS handshake
  8. Size: tamanho da requisição e da resposta recebida do servidor.

O Contents é composto por respostas e requisições:

  1. Headers/Raw: cabeçalho contendo mais informações sobre a requisição;
  2. Json/Text/Raw: contendo informações sobre o resultado da requisição;

Configuração do Projeto:

Devemos criar um arquivo res/xml/network_security_config.xml que irá conter as seguintes informações:

Esse arquivo será responsável por conceder permissões em modo debug ao certificado que será instalado no emulador ou dispositivo real. Após criar o arquivo, será necessário incluí-lo no AndroidManifest:

Configuração do Charles Proxy:

Após realizar o download e instalação, devemos executar o Charles e selecionar a aba “Help”, “SSL Proxying” e “Save Charles Root Certificate”. Assim, iremos realizar o download do certificado que será instalado no dispositivo.

Após o download ser concluído, devemos instalar o certificado no celular e obter o IP Local, através do “Help”, “Local Ip Address”… esse IP será utilizado para configurar o Proxy no dispositivo.

Para exibir em formato de texto os conteúdos criptografados pelo certificado SSL, será necessário adicionar o endereço e a porta que será interceptada. Também é possível interceptar todos os endereços através do uso genérico *:* (IP:PORTA).

Configuração do Dispositivo:

No caso de emuladores, devemos alterar as configurações de Proxy no AVD.

Após essa alteração, devemos ir em Network & Internet, Mobile Network, Advanced e Access Point Names, após isso será necessário criar uma nova APN e configurar os campos:

  1. Name: nome para identificação;
  2. APN: nome para identificação;
  3. Proxy: IP que foi obtido na etapa de configuração do Charles Proxy;
  4. PORT: 8888 que é utilizada pelo Charles.

Finalização:

Podemos realizar testes executando as requisições e acompanhando através do Charles Proxy.

--

--