Introdução ao jogo do charles
Charles Proxy é uma ferramenta de debug para HTTP/HTTPS que funciona como um proxy entre o seu computador e a internet. Ele captura todas as requisições que saem e chegam ao seu dispositivo, permitindo que você visualize headers, cookies, status codes, payloads e muito mais. Se você trabalha com desenvolvimento web, APIs ou até mesmo quer entender como um aplicativo se comunica com servidores, essa ferramenta é útil.
O que é e como funciona o jogo do charles
O nome pode parecer estranho para quem busca no Google, mas se trata de uma ferramenta amplamente usada por desenvolvedores. O funcionamento básico é simples: você configura seu navegador ou dispositivo para usar o proxy no endereço 127.0.0.1:8888, e todas as requisições passam por ele. A interface mostra uma árvore de sessões com os requests lado a lado com os responses. Por exemplo, se você está desenvolvendo uma API REST e quer ver exatamente qual payload está sendo enviado, basta abrir o Charles, fazer a requisição pelo app ou navegador, e pronto. Você vê cada campo, cada cabeçalho, cada status retornado.
Como começar a usar
Primeiro, baixe o Charles Proxy no site oficial. A versão gratuita tem algumas limitações, como encerrar a sessão após 10 minutos, mas é suficiente para a maioria dos casos. Após instalar, abra o programa e vá em Proxy > Proxy Settings. Lá você verá a porta padrão 8888. Certifique-se de que o proxy está ativo. Em seguida, configure o navegador. No Chrome, por exemplo, você pode instalar uma extensão como "Proxy Settings" ou ir nas configurações do sistema operacional para definir o proxy manualmente. No Windows, vá em Configurações > Rede e Internet > Proxy. No macOS, em Preferências do Sistema > Rede > Avançado > Proxy.
Para capturar HTTPS, é necessário instalar o certificado raiz do Charles. Vá em Help > SSL Proxying > Install Charles Root Certificate. No Windows, isso abre o Gerenciador de Certificados. No macOS, você precisa adicionar o certificado ao Chaveiro e marcar a opção "Sempre confiar". Caso contrário, as requisições HTTPS aparecerão como falhas.
👉 Clique no botão abaixo para saber mais sobre o assunto!
Dicas práticas e armadilhas comuns
Aqui vai uma coisa que muitos não percebem: o Charles não captura tráfego de aplicativos móveis por padrão. Se você quer inspecionar requisições de um app Android ou iOS, precisa configurar o dispositivo para usar o mesmo proxy, usando o IP da sua máquina na rede local. No Charles, vá em Help > SSL Proxying > Install Charles Root Certificate on a Mobile Device or Remote Browser. No Android, você acessa http://chls.pro/ssl pelo navegador do dispositivo. No iOS, o processo é similar. Outro problema comum: algumas apps usam pinning de certificado. Isso significa que elas verificam se o certificado é o esperado e rejeitam qualquer outro, incluindo o do Charles. Nesse caso, a solução mais prática é desativar o SSL pinning usando ferramentas como Frida, mas isso requerRoot no Android ou Jailbreak no iOS. Se você não tem esses recursos, pode tentar usar o charles-ssl-pinning-bypass com Frida, que injeta código no processo do app e sobrescreve a verificação.
Uma limitação importante do Charles é que ele não captura tráfego de VPNs ou de conexões TLS 1.3 com certidão de servidor embutida. Algumas APIs modernas usam Certificate Transparency e Extended Validation, e nesses casos o Charles pode não conseguir intermediar. A alternativa aqui é usar mitmproxy, que é open source e funciona via linha de comando, ou o BrowserMob Proxy se você estiver focado apenas em testes de navegador.
Funcionalidades avançadas que valem a pena conhecer
O Charles tem recursos que vão além de apenas visualizar requisições. O Map Remote permite redirecionar requisições de um domínio para outro. Isso é útil quando você quer testar uma versão local de uma API sem precisar alterar o código do frontend. Por exemplo, mapear https://api.exemplo.com para http://localhost:3000. O Breakpoints é outra funcionalidade poderosa. Você pode pausar uma requisição antes de ela ser enviada ou antes de o response chegar ao app. Isso permite que você altere headers, payloads ou status code em tempo real. Imagine que um endpoint retorna 404, mas você quer testar como o app se comporta com um 500. Com o breakpoint, você intercepta e modifica.
O Recording salva todas as sessões em arquivos .chls ou .har, que podem ser reabertos depois. Isso é essencial para documentação de bugs ou para compartilhar com colegas. Além disso, o Charts oferece uma visão gráfica de performance, mostrando latência por domínio e tempo de resposta ao longo do tempo.
Conclusão
O jogo do charles não é uma ferramenta para iniciantes absolutos, mas também não exige conhecimento avançado. O learning curve é razoável, e a maior parte do tempo é gasta configurando o proxy e o certificado. Uma vez configurado, ele se torna indispensável para qualquer desenvolvedor que precise investigar problemas de rede, debugging de API ou análise de performance. Se você está começando agora, recomendo começar pelo básico: capturar requisições HTTP do navegador e entender a estrutura de headers e responses. Depois, avance para HTTPS e, por fim, para mobile. E se encontrar problemas com SSL pinning, lembre-se do mitmproxy como alternativa.