Introdução — Charles Proxy para interceptar requisições e respostas
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 :
- URL: endereço em que a chamada está sendo executada;
- Notes: informações sobre a requisição;
- Response Code: código HTTP (2XX,4XX,5XX);
- Protocol: protocolo utilizado para realizar a requisição HTTP/1.1;
- Content-Type: para indicar qual tipo de dado será enviado;
- Keep Alive em caso de HTTP/1.1: se deve manter a conexão TCP viva para envio de requisições e respostas.
- Timing: início da requisição, tempo de execução, tempo de TLS handshake
- Size: tamanho da requisição e da resposta recebida do servidor.
O Contents é composto por respostas e requisições:
- Headers/Raw: cabeçalho contendo mais informações sobre a requisição;
- 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:
- Name: nome para identificação;
- APN: nome para identificação;
- Proxy: IP que foi obtido na etapa de configuração do Charles Proxy;
- PORT: 8888 que é utilizada pelo Charles.
Finalização:
Podemos realizar testes executando as requisições e acompanhando através do Charles Proxy.