sexta-feira, 3 de março de 2017

Interceptando requests do seu app com o Fiddler

por Mahmoud Ali em Blog Lambda3.
Link para o original.
Recentemente trabalhei em um projeto em que eu precisava ver todos os requests que meu aplicativo (Xamarin Android e Xamarin iOS) estava fazendo para poder entender e debugar o que estava acontecendo. Mas como você faz isso já que o aplicativo está instalado em um aparelho externo, e o código não é executado na sua máquina? Você já deve ter passado por esse cenário de precisar inspecionar a frequência de requests, a resposta do servidor, os parâmetros enviados/recebidos, etc.
Neste cenário podemos usar o Fiddler para ter acesso aos requests que estão sendo enviados/recebidos pelo aplicativo. O Fiddler é uma ferramenta gratuita cheia de recursos que permite inspecionar qualquer requisição web, em qualquer plataforma. Era exatamente o que eu precisava: eu posso configurar o Fiddler para agir como um proxy, para que todas as requisições feitas no meu aparelho passem por ele e eu tenha a chance de inspecioná-las. Vamos ver como fazer isso.

Configurando o Fiddler

O primeiro passo é configurar o Fiddler para aceitar conexões remotas, já que nosso aparelho se conectará nele. Depois de instalado, vá em Tools > Telerik Fiddler Options…, na aba Connections marque o checkbox “Allow remote computers to connect“:
Preste atenção na porta que está configurada, precisaremos dessa informação em breve. Por padrão ele sempre usa a porta 8888.
Salve as configurações e reinicie o Fiddler.

Configurando o dispositivo Android

O segundo passo é fazermos com que o Android sempre passe os requests pelo proxy do Fiddler, para que a gente consiga enxergar o que está sendo trafegado. Tenha em mente que isso pode variar um pouco entre fabricantes de Android diferentes.
Vá nas Configurações do seu aparelho e selecione as opções de Wi-Fi.
Aperte e segure a rede em que o aparelho está conectado e selecione “Modificar rede“.
Atenção: seu aparelho deve ser capaz de acessar sua máquina, na maioria das vezes isso significa que sua máquina e seu aparelho devem estar conectados na mesma rede para que eles possam se enxergar.
Expanda as opções avançadas e configure um proxy manual da seguinte forma:
Proxy hostname: IP DA SUA MÁQUINA
Proxy port: PORTA CONFIGURADA NO FIDDLER (por padrão 8888)
IP Settings: DHCP

Configurando o dispositivo iOS

Caso o aplicativo seja iOS, também podemos configurar o aparelho para utilizar o proxy do Fiddler. Acesse as opções: Configurações > Geral > Rede > Wi-Fi.
Selecione a rede utilizada para ver as configurações. Role a tela até o final para configurar o proxy em modo Manual com o IP e a porta do Fiddler, mantendo a opções de autenticação desabilitada, conforme a imagem abaixo:

A partir de agora todos requests passarão pelo Fiddler.

Configurando o simulador iOS

Caso esteja utilizando um Mac e o simulador iOS, também é possível configurá-lo para inspecionar os requests. Como trata-se de um simulador, ele utilizará a rede do próprio Mac para comunicação, então precisamos configurar o proxy diretamente no nosso macOS.
Nas preferência do sistema, nas opções de Rede, selecione a rede utilizada e clique no canto inferior direito nas opções Avançadas.
Selecione a aba de Proxies e marque os checkboxes de Web Proxy (HTTP) e Secure Web Proxy (HTTPS). Configure o proxy do Fiddler em ambas opções, colocando apenas o IP e a porta, conforme a imagem abaixo:
Os requests do simulador agora passarão pelo proxy configurado.

Inspecionado os requests

Agora tudo está configurado, podemos abrir o Fiddler e começar a investigar os requests. Por padrão o Fiddler já vem configurado para começar a inspecionar no momento em que é aberto.
Abra o Fiddler e certifique-se que ele está habilitado para capturar, no canto inferior esquerdo você deverá ver um indicador “Capturing“. Todo request feito pelo seu aparelho deverá agora aparecer na caixa do meio:

Quando você seleciona um request você consegue ter acesso a todas as informações dele: header, corpo, status code, cookies, etc.
Agora podemos saber exatamente quais requests nosso app está fazendo e podemos utilizar essas informações no diagnóstico de problemas.
Por último, lembre-se sempre de desligar o Proxy do seu dispositivo após os testes para não ficar vulnerável à pessoas que estejam espionando a rede.

Conclusão

Todo esse processo funciona tanto em aparelhos externos quanto emuladores, então você pode inspecionar aplicativos nos dois modos. Com isso podemos entender exatamente o que está acontecendo com o aplicativo. O Fiddler possui vários filtros que você pode configurar caso queira ter acesso a requests específicos. Ele também nos dá poder para fazer outras coisas que podemos precisar em cenários mais complexos que abordarei em posts futuros.
Foto usada no post: Providence Doucet

Nenhum comentário:

Postar um comentário