Charles Muller - Que Foi Charles Muller | Guide de la fertilisation raisonnée – PESY
Que Foi Charles Muller | Guide de la fertilisation raisonnée – PESY

O que é e como funciona o Charles Proxy

O Charles Proxy é uma ferramenta de depuração de rede HTTP/HTTPS desenvolvida pela Charles Software. Ela funciona como um intermediário entre seu navegador ou dispositivo e a internet, capturando todo o tráfego que passa por essa conexão. O uso mais comum é para desenvolvedores que precisam inspecionar requisições, ver headers, response times e debugar problemas de comunicação com APIs. O funcionamento é simples na teoria: você configura o proxy do seu sistema para apontar para o localhost onde o Charles está rodando (padrão porta 8888). Todo o tráfego então passa por ele antes de seguir adiante. Na prática, isso significa que você pode ver cada detalhe de cada requisição feita pelo navegador, app mobile ou até mesmo scripts no terminal.

Instalação e primeiros passos com Charles

O download oficial fica disponível em charlesproxy.com. O site oferece versões para Windows, macOS e Linux. A instalação segue o padrão de qualquer programa — próximo, próximo, instalar. Após o primeiro aberto, a interface já aparece ocupando uma janela separada com uma árvore de requisições na esquerda e detalhes técnicos à direita. Para começar a capturar, basta clicar no botão com o ícone de telefone ou selecionar Session > Capture. As requisições aparecem em tempo real na aba principal. Cada linha mostra o método HTTP, a URL, o status da resposta e o tamanho do corpo. Clicar em qualquer uma delas abre os detalhes completos com headers, cookies, payloads e tempo de resposta dividido por etapa.

Uma coisa que muitos não percebem de imediato: o Charles por padrão não captura tráfego HTTPS por segurança. Você precisa aceitar o certificado raiz dele para fazer a descriptografia. Para isso, acesse http://chls.pro/ssl no navegador configurado com o proxy e siga as instruções de instalação do certificado. No macOS, arraste o certificado baixado para o Keychain Access e marque como confiável. No Windows, dê dois cliques e configure nas configurações de certificação do sistema.

Configurações avançadas que fazem diferença

Uma das funcionalidades mais úteis mas pouco explorada é o Map Local. Ele permite substituir o conteúdo de respostas de URLs específicas por arquivos locais no seu computador. Isso é extremamente prático quando você está desenvolvendo front-end e quer testar diferentes versões de um asset sem precisar subir para um servidor. A configuração leva cerca de 30 segundos: Session > Map Local, seleciona o caminho do arquivo e pronto. O Compress também merece atenção. Quando ativado, ele remove compressão gzip ou deflate das respostas para que você consiga ler o conteúdo em texto puro no painel de resposta. Sem isso, você veria caracteres ilegíveis ou binários na maior parte das requisições.

👉 Clique no botão abaixo para saber mais sobre o assunto!

Outro recurso que economiza muito tempo é o Repeater. Com ele, você pode guardar uma requisição completa — headers, body, método — e reenviá-la quantas vezes quiser, apenas modificando parâmetros específicos. Útil para testar endpoints de API sob diferentes condições. Existe também o breakpoint. Ele pausa uma requisição no caminho antes de ser enviada ou antes de receber a resposta, permitindo que você altere qualquer campo manualmente. Isso já resolveu vários problemas meus em integrações com gateways de pagamento onde o payload precisava de ajustes pontuais.

Problemas comuns e soluções práticas

Um dos problemas mais frequentes que encontro em consultas de colegas é quando o Charles não consegue capturar o tráfego de aplicativos mobile. O motivo geralmente é que o dispositivo e o computador onde o Charles está rodando precisam estar na mesma rede. A configuração do proxy no celular aponta para o IP local do computador (não 127.0.0.1) na porta 8888. Mas o certificado SSL ainda precisa ser instalado e confiado nas configurações do Android ou iOS, caso contrário as requisições HTTPS simplesmente falham. No Android 7 e superiores, há uma limitação adicional: certificados confiáveis pelo usuário não são automaticamente confiáveis para aplicativos. Para contornar isso, você precisa rootear o dispositivo ou usar emuladores como o Genymotion onde é mais simples configurar. Eu costumo rodar testes com apps Android em emuladores para evitar essa dor de cabeça.

Outro ponto onde o Charles falha completamente é em conexões que usam certificados pinning. Se o aplicativo ou serviço para o qual você está fazendo requisição tem SSL pinning habilitado, o proxy não conseguirá inspecionar o tráfego porque rejeitará o certificado do Charles. Nesses casos, a solução é descompilar o APK, remover o pinning e recompilar, o que muitas vezes viola os termos de serviço e pode ter implicações legais. Para esses cenários, ferramentas como Frida ou Objection são alternativas mais adequadas. Também vale mencionar que o Charles não é ideal para análise de tráfego em larga escala ou em produçao. Ele foi feito para depuração pontual, não para load testing ou monitoramento contínuo. Se o objetivo é analisar milhares de requisições por segundo, use algo como mitmproxy ou até Wireshark, que têm desempenho muito superior sob carga pesada.

Alternativas ao Charles Proxy

Se o custo não cabe no orçamento — a licença comercial custa cerca de US$ 50 — existem opções gratuitas. O mitmproxy é uma alternativa completa em linha de comando, com suporte a scripts Python para manipulação personalizada de tráfego. Tem uma curva de aprendizado maior porque não tem interface gráfica, mas é extremamente poderoso. Para quem prefere algo visual e gratuito, o Fiddler Classic da Telerik funciona bem em Windows, embora não tenha versão oficial para Linux ou macOS. O Proxyman, por sua vez, é um(proxy mais moderno com interface bonita que roda nos três sistemas operacionais principais, com licença gratuita para uso pessoal.

Cada uma dessas ferramentas tem pontos fortes e fracos. O Charles permanece como padrão da indústria para muitos desenvolvedores web por ser estável, ter boa documentação e integração nativa com Chrome e Firefox. Mas para situações específicas como SSL pinning ou alta carga, as alternativas podem ser mais adequadas.