Charles Proxy — o que é, configuração e interceptação de tráfego HTTPS

Autor: IT Sectr Publicado: 2026-05-08 Tempo de leitura: 8 min

Charles Proxy é um servidor proxy multiplataforma para depuração de tráfego HTTP/HTTPS, usado por desenvolvedores para interceptar, visualizar e modificar requisições de rede. De acordo com Karl von Randow, criador da ferramenta (2025), Charles é usado em mais de 50.000 empresas em todo o mundo desde 2004. O proxy suporta interceptação de tráfego de dispositivos móveis via WiFi, proxy HTTPS com instalação de certificado raiz e um amplo conjunto de ferramentas para análise de API.

Principais pontos

  • Charles Proxy é um servidor proxy HTTP/HTTPS para interceptar e analisar tráfego de rede com recursos avançados de depuração
  • Proxy HTTPS é implementado instalando o certificado raiz do Charles no dispositivo, permitindo visualizar o tráfego criptografado
  • Rewrite e Breakpoints são ferramentas poderosas para modificar requisições e respostas em tempo real sem alterar o código do servidor ou cliente
  • Map Local e Map Remote permitem substituir recursos de rede por arquivos locais ou servidores alternativos para testes
  • Throttle simula conexões de rede lentas e instáveis para testar o comportamento do aplicativo em condições de conectividade ruim

O que é Charles Proxy?

Charles Proxy é um proxy HTTP e monitor HTTP que atua como intermediário entre o cliente e o servidor. Todas as requisições e respostas passam pelo Charles, permitindo visualizar seu conteúdo, analisar sua estrutura, modificar dados em tempo real e simular várias condições de rede. Está disponível para Windows, macOS e Linux.

História e posicionamento

Charles Proxy foi criado em 2004 por Karl von Randow e continua sendo uma das ferramentas mais populares para depuração de tráfego de rede. Ao contrário das alternativas gratuitas, Charles oferece uma licença paga com período de teste de 30 dias. A ferramenta se posiciona como uma solução profissional para desenvolvedores de aplicativos móveis, desenvolvedores web e engenheiros de QA que precisam de controle total sobre as comunicações HTTP.

Compatibilidade com plataformas

Charles funciona como um proxy de sistema no computador e pode interceptar tráfego de qualquer dispositivo na mesma rede: Android, iOS, simuladores, emuladores, navegadores web e dispositivos IoT. Para interceptar HTTPS, é necessário instalar o certificado raiz do Charles em cada dispositivo. O tráfego é suportado em HTTP/1.1 e HTTP/2 (parcialmente). HTTP/3 (QUIC) não é suportado no nível de interceptação.

Como o Charles Proxy funciona

Charles funciona pelo princípio de um proxy MITM (Man-in-the-Middle): quando um cliente envia uma requisição através do Charles, a ferramenta intercepta a requisição, a encaminha para o servidor de destino, recebe a resposta e a devolve ao cliente. Todo o tráfego passa pelo Charles, permitindo que seja analisado e modificado.

Arquitetura do proxy

Ao ser iniciado, Charles cria um proxy HTTP local na porta 8888 (padrão). O sistema operacional ou aplicativo é configurado para usar este proxy. Todas as requisições HTTP são enviadas primeiro para o Charles, que então atua como um cliente completo para o servidor de destino. Para HTTPS, Charles usa sua própria técnica de proxy SSL: ele gera um certificado instantaneamente para cada domínio, assinado pelo certificado raiz do Charles. Se o certificado raiz estiver instalado no dispositivo como confiável, Charles pode descriptografar e visualizar o tráfego HTTPS.

Modos de operação

Charles suporta dois modos: Proxy(servidor proxy clássico) e SOCKS Proxy(para tráfego UDP e TCP). Para desenvolvimento web, usa-se o proxy HTTP padrão. Para dispositivos móveis — configurar WiFi Proxy no dispositivo informando o endereço IP do computador onde o Charles está sendo executado. macOS suporta configuração automática de proxy para o simulador iOS.

xml
<!-- Configuração do network_security_config.xml para Android com suporte ao Charles -->
<?xml version="1.0" encoding="utf-8"?>
<network-security-config>
    <debug-overrides>
        <trust-anchors>
            <!-- Confiar no certificado do Charles na compilação Debug -->
            <certificates src="user" />
        </trust-anchors>
    </debug-overrides>
</network-security-config>

Principais recursos do Charles Proxy

Charles Proxy fornece um conjunto de ferramentas profissionais para analisar e modificar tráfego que vão muito além da simples interceptação de requisições.

Rewrite e Breakpoints

A ferramenta Rewrite permite alterar automaticamente certas partes de requisições ou respostas: cabeçalhos, parâmetros de URL, corpo da resposta. Por exemplo, você pode substituir o cabeçalho User-Agent por um valor de outro dispositivo ou remover determinados cookies. Breakpoints funcionam como um depurador: a requisição é interrompida em um estágio selecionado (antes de enviar ou antes de receber), e o desenvolvedor pode alterar manualmente seu conteúdo antes que prossiga. Isso é útil para testar o tratamento de respostas de erro ou estados não padrão.

Map Local e Map Remote

Map Local permite substituir um recurso de rede (CSS, JS, JSON) por um arquivo local do disco. Isso é indispensável no desenvolvimento frontend: você pode modificar CSS/JS e ver o resultado imediatamente sem implantar em um servidor. Map Remote redireciona requisições de uma URL para outra — por exemplo, do servidor de produção para staging para testes. Ambas as ferramentas funcionam com padrões de URL que suportam curingas.

Throttle e simulação de condições de rede

A ferramenta Throttle permite simular vários tipos de conexões de rede usando perfis predefinidos: 3G, EDGE, GPRS, DSL, WiFi. Você pode configurar limite de velocidade (download/upload), latência, perda de pacotes e estabilidade. Isso é crítico para testar o comportamento do aplicativo em conexões lentas ou instáveis — tratamento adequado de timeouts, novas tentativas, modo offline.

PerfilDownloadUploadLatênciaCenário típico
3G780 kbps330 kbps200 msTeste com sinal móvel fraco
EDGE130 kbps50 kbps400 msConexão extremamente lenta
GPRS50 kbps20 kbps500 msConexão mínima possível
DSL2 Mbps256 kbps50 msConexão doméstica com fio
WiFi10 Mbps10 Mbps10 msConexão WiFi boa

Auto Save e Recording

Charles pode salvar automaticamente sessões de tráfego em arquivos .chls, permitindo analisá-los posteriormente ou compartilhar com colegas. O Recording Control permite configurar flexivelmente qual tráfego salvar: por domínio, tipo de conteúdo ou código de status. Isso é conveniente para monitoramento de API de longo prazo.

Configurar o Charles Proxy para dispositivos móveis

Para depurar o tráfego de aplicativos móveis, o Charles é configurado como um WiFi Proxy: todos os dispositivos na mesma rede do computador podem rotear tráfego através do Charles. A configuração correta de HTTPS requer a instalação do certificado do Charles no dispositivo móvel.

Configuração no Android

Para Android: abrir Settings → WiFi → Advanced → Proxy, selecionar Manual e informar o endereço IP do computador com a porta 8888. Em seguida, abrir um navegador no dispositivo e acessar http://chls.pro/ssl para baixar o certificado do Charles. No Android 7+ (API 24+), é necessário network_security_config.xml para confiar em certificados de usuário em compilações Debug — caso contrário, o aplicativo pode não rotear tráfego através do Charles.

Configuração no iOS

Para iOS: Settings → WiFi → configurar proxy com IP e porta 8888. Em seguida, Safari → http://chls.pro/ssl → instalar o perfil de certificado. No iOS 10.3+, é necessário ativar adicionalmente a confiança do certificado: Settings → General → About → Certificate Trust Settings → ativar Charles Proxy. iOS é mais rigoroso com certificados: alguns aplicativos podem usar SSL Pinning, bloqueando o tráfego através do Charles mesmo com um certificado confiável.

Resolvendo problemas de SSL Pinning

Se o aplicativo usa SSL Pinning(fixação de certificado do servidor), o proxy padrão através do Charles não funcionará — o aplicativo rejeitará o certificado do Charles. Soluções: desativar SSL Pinning em compilações Debug através das configurações do OkHttp ou URLSession, usar Frida para contornar o pinning em tempo de execução, ou usar Android Emulator com acesso root.

Casos práticos de uso do Charles Proxy

Charles Proxy resolve tarefas específicas de desenvolvimento e teste. Vamos ver os cenários mais comuns onde a ferramenta é indispensável.

Depuração de integração com API

O cenário mais comum — verificar a correção das requisições de API. Charles mostra a URL exata da requisição, cabeçalhos, corpo e parâmetros. Se o servidor retornar uma resposta inesperada, você vê imediatamente: estrutura JSON, código de erro, cabeçalhos de resposta. Isso permite distinguir erros do cliente de erros do servidor sem logs de ambos os lados.

Teste com conexão lenta

Usando os perfis Throttle, você pode testar como o aplicativo se comporta com baixa velocidade de conexão: se um indicador de carregamento é exibido, se os timeouts são tratados corretamente, se a UI congela na perda de conexão. É especialmente importante testar o cache — se os dados já foram carregados, o aplicativo deve mostrá-los do cache em vez de entrar em carregamento infinito.

Edição de respostas do servidor

Usando Breakpoints, você pode modificar a resposta do servidor antes que ela seja enviada ao aplicativo. Por exemplo, retornar um array vazio em vez de dados, alterar o código de status para 500, adicionar um novo campo ao JSON. Isso permite testar o tratamento de casos limite sem modificar o código do servidor — um dos usos mais poderosos do Charles no desenvolvimento móvel.

Perguntas frequentes

Charles Proxy é gratuito?

Charles Proxy é um produto comercial com período de teste de 30 dias. Após o término do período de teste, o programa continua funcionando com uma pausa de 30 minutos a cada inicialização. O custo da licença é de $50 por cópia. Existem alternativas gratuitas como Proxyman (macOS) e mitmproxy (multiplataforma).

Posso interceptar o tráfego do simulador iOS?

Sim, o simulador iOS usa automaticamente o proxy de sistema do macOS. Basta iniciar o Charles e ativar o proxy SSL — todo o tráfego do simulador será interceptado. A configuração do certificado para o simulador acontece automaticamente; você só precisa confiar no certificado do Charles no chaveiro do macOS.

Como o Charles difere do Proxyman?

Principais diferenças: Charles é multiplataforma (Windows, macOS, Linux), Proxyman é apenas para macOS e iOS. Charles tem um conjunto mais amplo de ferramentas (Rewrite, Map Local, Repeat, Auto Save) mas é pago. Proxyman é gratuito para funcionalidades básicas, com interface moderna e integração nativa com o simulador iOS.

Como o Charles Proxy afeta o desempenho?

Charles adiciona latência quando o tráfego passa pelo proxy, especialmente com proxy SSL ativo (descriptografia/criptografia). Em computadores modernos, o atraso é de 5 a 15 milissegundos por requisição. Para testes de desempenho, recomenda-se desativar o proxy SSL para conteúdo estático (CSS, JS, imagens) através do Recording Control.

Como exportar uma sessão do Charles?

Charles suporta exportação para formatos: .chls(nativo, para reabrir no Charles), HAR(HTTP Archive, abre em navegadores e outras ferramentas), CSV(para processar em Excel ou planilhas), Trace(para exportar uma requisição específica em formato compatível com curl). Exportação através do menu File → Export Session.

Resumo

  • Charles Proxy é um servidor proxy HTTP/HTTPS profissional para interceptar, visualizar e modificar tráfego de rede desde 2004
  • Princípio de funcionamento — proxy MITM: todas as requisições passam pelo Charles, permitindo análise e modificação em tempo real
  • Ferramentas poderosas: Rewrite, Breakpoints, Map Local, Map Remote, Throttle — para depuração abrangente de API e experiência do usuário
  • Proxy HTTPS requer instalação do certificado raiz do Charles no dispositivo, e para Android 7+ — network_security_config.xml em compilações Debug
  • Perfis Throttle permitem simular 3G, EDGE, DSL e outros tipos de conexão para testar o comportamento do aplicativo em condições reais
  • Exportação de sessões para formatos HAR, CSV e .chls para análise, relatórios e compartilhamento com a equipe
  • Para projetos com orçamento limitado, considere alternativas gratuitas: Proxyman (macOS) ou mitmproxy (código aberto multiplataforma)

Vamos desenvolver um aplicativo móvel chave na mão

A IT Sectr cria aplicativos para iOS e Android para startups e empresas desde 2017. Nós vamos aconselhá-lo e propor a melhor solução.

Discutir o projeto

Leia também