Você inicia o aplicativo e ele se comporta de maneira imprevisível: os dados não carregam, os anúncios não aparecem, a conta é banida sem motivo aparente. Para entender o que está acontecendo "por trás das câmeras", é necessário ver as solicitações HTTP reais entre o aplicativo e o servidor. É para isso que existe o Charles Proxy — uma ferramenta que permite interceptar, analisar e modificar o tráfego de aplicativos móveis em tempo real.
Neste guia, vamos abordar a configuração completa do Charles Proxy para iOS e Android, o trabalho com HTTPS, a modificação das respostas do servidor e a integração com servidores proxy externos — tudo isso sem teoria desnecessária, apenas prática.
O que é Charles Proxy e para que serve
Charles Proxy é um aplicativo de desktop para Windows, macOS e Linux que funciona como um proxy HTTP/HTTPS entre seu dispositivo (smartphone, emulador) e a internet. Quando você direciona o tráfego através do Charles, o programa registra todas as solicitações e respostas, permitindo que você veja cada byte de dados que o aplicativo envia para os servidores.
Essencialmente, o Charles faz o mesmo que o DevTools no navegador Chrome — apenas para aplicativos móveis que não têm um inspetor embutido. Isso é especialmente importante quando você precisa entender:
- Quais parâmetros o aplicativo envia durante a autenticação ou registro da conta
- Quais cabeçalhos (User-Agent, Device-ID, tokens) são enviados ao servidor
- Como exatamente o Facebook, TikTok ou Instagram verificam o dispositivo ao fazer login
- Por que o aplicativo retorna um erro sob certas condições
- Quais dados o marketplace envia ao solicitar preços ou catálogo
Para os arbitradores, o Charles Proxy é uma ferramenta de reconhecimento: você pode literalmente ver quais dados de impressão digital o Facebook Ads coleta do dispositivo e entender por que a conta é banida logo após o login. Especialistas em SMM usam o Charles para analisar a API do Instagram e TikTok, a fim de entender os limites e padrões de solicitações. Desenvolvedores e testadores o utilizam para simular respostas do servidor e verificar o comportamento do aplicativo em situações não padrão.
Principais recursos do Charles Proxy:
- Interceptação de tráfego HTTP e HTTPS (incluindo TLS 1.3)
- Visualização do corpo das solicitações e respostas em um formato conveniente (JSON, XML, texto)
- Modificação das respostas do servidor (Rewrite, Map Local, Map Remote)
- Pontos de interrupção (Breakpoints) para edição manual das solicitações
- Redução da velocidade da conexão para simular internet lenta
- Gravação e reprodução de sessões
- Suporte a proxies externos (HTTP, SOCKS5)
Instalação e configuração inicial do Charles Proxy
O Charles Proxy é distribuído como um aplicativo pago com um período de teste de 30 dias. Você pode baixá-lo no site oficial charlesproxy.com. A versão para macOS, Windows e Linux tem a mesma funcionalidade.
Passo 1. Instalação do aplicativo
Baixe o instalador para o seu sistema operacional, execute-o e siga o procedimento padrão de instalação. Após iniciar o Charles, ele começa a escutar a porta 8888 no seu computador. Esta é a porta padrão pela qual os dispositivos direcionarão o tráfego.
Passo 2. Verificação do endereço IP do computador
Para que o dispositivo móvel possa se conectar ao Charles, ele deve estar na mesma rede Wi-Fi que o computador. Descubra o endereço IP do seu computador na rede local:
- macOS: Preferências do Sistema → Rede → selecione Wi-Fi → Endereço IP
- Windows: Prompt de Comando →
ipconfig→ Endereço IPv4 - No próprio Charles: Ajuda → Endereço IP Local
Lembre-se desse endereço — ele será necessário ao configurar o proxy no smartphone. Normalmente, é algo como 192.168.1.X.
Passo 3. Permissão para conexões de dispositivos
Ao conectar o dispositivo móvel pela primeira vez, o Charles mostrará uma janela de diálogo perguntando: "Permitir a conexão com o IP xxx.xxx.x.x?". Clique em Permitir. Se a janela não aparecer — verifique se o firewall do Windows ou do macOS não está bloqueando o Charles. No macOS, pode ser necessário permitir explicitamente as conexões de entrada nas Preferências do Sistema → Segurança → Firewall.
Configuração do Charles Proxy para Android
A configuração no Android consiste em duas partes: direcionar o tráfego através do Charles e instalar o certificado para descriptografar HTTPS. Sem o certificado, você verá apenas dados criptografados — um conjunto inútil de caracteres.
Configuração do proxy Wi-Fi no Android
- Abra Configurações → Wi-Fi
- Pressione e segure a rede conectada → Modificar rede
- Ative Opções avançadas
- No campo Proxy, selecione Manual
- Host do proxy: endereço IP do seu computador (por exemplo,
192.168.1.5) - Porta:
8888 - Salve as configurações
Após isso, todo o tráfego HTTP do dispositivo passará pelo Charles. As gravações das solicitações começarão a aparecer na tela do aplicativo.
Instalação do certificado Charles no Android
- No dispositivo, abra o navegador e acesse o endereço
chls.pro/ssl - Um arquivo de certificado .pem será baixado
- Abra Configurações → Segurança → Instalar certificado
- Selecione o arquivo baixado e instale como Certificado CA
- Dê um nome qualquer, como "Charles SSL"
No Android 7 e superior, os aplicativos não confiam por padrão em certificados de usuário. Isso significa que aplicativos do sistema e a maioria dos aplicativos de terceiros (Facebook, Instagram, TikTok) bloquearão a interceptação. Para trabalhar com tais aplicativos, será necessário acesso root ou o uso de um emulador Android (como Genymotion ou Android Studio Emulator) com a capacidade de instalar o certificado no armazenamento do sistema.
⚠️ Importante para Android 7+
A partir do Android 7 (Nougat), os aplicativos devem declarar explicitamente a confiança em certificados de usuário no arquivo network_security_config.xml. A maioria dos aplicativos populares (Facebook Ads, Instagram) não faz isso. Para analisá-los, use um emulador com root ou uma versão modificada do Android.
Configuração do Charles Proxy para iOS
No iOS, o procedimento é um pouco mais simples — a Apple fornece um mecanismo padrão para instalação de certificados através de perfis, e a maioria dos aplicativos respeita as configurações de proxy do sistema.
Configuração do proxy Wi-Fi no iPhone/iPad
- Abra Configurações → Wi-Fi
- Toque no ícone (i) ao lado da rede conectada
- Role para baixo até a seção Proxy HTTP
- Selecione Manual
- Servidor: endereço IP do computador com o Charles
- Porta:
8888 - Autenticação: desligada (se não estiver configurada no Charles)
Instalação do certificado Charles no iOS
- No iPhone, abra o navegador Safari e acesse
chls.pro/ssl - O Safari oferecerá instalar um perfil de configuração — clique em Permitir
- Vá para Configurações → Geral → VPN e Gerenciamento de Dispositivos
- Encontre o perfil Charles e clique em Instalar
- Digite o PIN do dispositivo, se necessário
- Agora vá para Configurações → Geral → Sobre este dispositivo → Confiar em certificados
- Ative o interruptor ao lado de Charles Proxy CA
Após isso, o Charles poderá descriptografar o tráfego HTTPS da maioria dos aplicativos iOS. Exceções são aplicativos com Certificate Pinning (fixação de certificado) — como aplicativos bancários e algumas versões do Instagram. Para analisá-los, será necessário jailbreak e tweaks especiais como SSL Kill Switch.
Interceptação de tráfego HTTPS: configuração de SSL Proxying
Mesmo após a instalação do certificado, o Charles não descriptografa o tráfego HTTPS por padrão — é necessário especificar explicitamente para quais domínios habilitar o SSL Proxying. Isso é feito intencionalmente para não sobrecarregar a interface com dados desnecessários.
Como habilitar o SSL Proxying
- No menu do Charles, selecione Proxy → Configurações de SSL Proxying
- Marque a opção Habilitar SSL Proxying
- Clique em Adicionar na seção Incluir
- No campo Host, digite
*(asterisco = todos os domínios) - No campo Porta, digite
443 - Clique em OK e reinicie a interceptação
Agora o Charles irá descriptografar o tráfego HTTPS para todos os domínios. Se você estiver interessado em um serviço específico — especifique seu domínio em vez do asterisco. Por exemplo, para analisar o Instagram, digite *.instagram.com, para o Facebook — *.facebook.com.
O que é visível após habilitar o SSL Proxying
No painel esquerdo do Charles, você verá uma árvore de domínios. Clique em qualquer solicitação — na parte direita, abrirá informações detalhadas: URL, método (GET/POST), cabeçalhos da solicitação, corpo da solicitação (se houver) e resposta do servidor. As abas Solicitação e Resposta mostram os dados em formato bruto ou em um formato conveniente (JSON, XML, HTML).
Os cabeçalhos da solicitação são especialmente valiosos — é lá que são transmitidos os tokens de autorização, identificadores de dispositivo, versão do aplicativo e outros dados que as plataformas usam para verificação. Se você vê parâmetros suspeitos nas solicitações para Facebook Ads ou TikTok — esse é o primeiro passo para entender por que a conta está sendo banida.
Ferramentas de análise: Breakpoints, Rewrite e Map Local
O Charles não é apenas um visualizador de tráfego, mas também uma poderosa ferramenta para sua modificação. Três ferramentas-chave que são usadas com mais frequência:
Breakpoints — pontos de interrupção
Breakpoints permitem interceptar uma solicitação ou resposta no momento em que ela passa e editar manualmente os dados antes que cheguem ao destinatário. Esta é uma ferramenta poderosa para testes: você pode alterar os parâmetros da solicitação, inserir outro token ou modificar a resposta do servidor.
Para definir um Breakpoint: clique com o botão direito na solicitação na lista → Breakpoint. Agora, na próxima vez que o aplicativo acessar essa URL, o Charles interromperá a transmissão e abrirá uma janela de edição. Você pode alterar qualquer parâmetro e clicar em Executar para continuar.
Rewrite — substituição automática de dados
Rewrite funciona automaticamente: você define a regra "se na solicitação aparecer X — substitua por Y", e o Charles aplica isso a todas as solicitações adequadas sem sua intervenção. Isso é conveniente para testes em massa: por exemplo, substituir o valor de um cabeçalho específico em todas as solicitações para um domínio específico.
Configuração: Ferramentas → Rewrite → Adicionar → defina um nome para o conjunto de regras → Adicione uma regra → especifique o tipo (Cabeçalho, Corpo, URL etc.), o que procurar e por o que substituir.
Map Local — substituição da resposta por um arquivo local
Map Local permite substituir a resposta do servidor pelo conteúdo de um arquivo local. Isso é indispensável para testar aplicativos sem um backend real: você cria um arquivo JSON com os dados necessários, e o aplicativo os recebe em vez da resposta real da API.
Configuração: Ferramentas → Map Local → Adicionar → especifique a URL para interceptação e o caminho para o arquivo local. Agora, cada solicitação para essa URL retornará o conteúdo do seu arquivo. Isso permite testar casos limite: lista de produtos vazia, erro de servidor 500, formato de dados não padrão.
| Ferramenta | Quando usar | Dificuldade |
|---|---|---|
| Breakpoints | Edição manual única de solicitação/resposta | Baixa |
| Rewrite | Substituição automática por regras | Média |
| Map Local | Substituição da resposta da API por um arquivo local | Baixa |
| Map Remote | Redirecionamento da solicitação para outro servidor | Média |
| Throttle | Simulação de conexão lenta | Baixa |
Como conectar um servidor proxy externo através do Charles
O Charles Proxy pode funcionar não apenas como um interceptador local, mas também como um intermediário entre o dispositivo e um servidor proxy externo. Isso é especialmente útil quando você precisa analisar o tráfego e direcioná-lo através de um endereço IP específico — por exemplo, para verificar como o aplicativo se comporta ao se conectar de outro país ou através de um IP móvel.
Esse esquema se parece com isso: Smartphone → Charles Proxy (computador) → Servidor proxy externo → Internet. Você vê todo o tráfego no Charles, mas as solicitações são enviadas através do IP desejado.
Configuração do proxy externo no Charles
- Abra Proxy → Configurações de Proxy Externo
- Marque a opção Usar servidores proxy externos
- Para tráfego HTTP: ative Proxy Web (HTTP), insira o host e a porta do proxy
- Para tráfego HTTPS: ative Proxy Web Seguro (HTTPS), insira os mesmos dados
- Se o proxy exigir autenticação — insira o login e a senha
- Clique em OK
O Charles suporta proxies HTTP e SOCKS5. Para SOCKS5, use a aba Proxy SOCKS nas mesmas configurações. Se você estiver trabalhando com proxies residenciais com rotação de IP — cada nova solicitação será enviada através de um endereço diferente, o que é conveniente para testar o comportamento das plataformas ao mudar de IP.
Exceções para tráfego local
Se você precisar que parte do tráfego vá diretamente (sem proxy externo), adicione exceções no campo Ignorar proxies externos para os seguintes hosts. Por exemplo, endereços locais localhost e 127.0.0.1 geralmente devem ser excluídos para não quebrar serviços locais.
Quando um proxy externo é necessário no Charles:
- Testes de geolocalização do aplicativo (como ele se comporta dos EUA, Alemanha, Brasil)
- Verificação da disponibilidade de conteúdo em diferentes regiões
- Análise de solicitações ao trabalhar com proxies móveis — para entender como a plataforma reage a um IP móvel
- Contornar bloqueios regionais durante os testes
Cenários práticos: arbitragem, SMM e testes de aplicativos
Vamos considerar tarefas específicas para as quais o Charles Proxy é usado no trabalho real — sem teoria desnecessária.
Cenário 1. Arbitragem — análise de fingerprint do Facebook Ads
Uma das principais tarefas de um arbitrador é entender por que o Facebook banir contas logo após o login. O Charles permite interceptar as primeiras solicitações do aplicativo Facebook durante a autenticação e ver quais dados sobre o dispositivo são enviados para os servidores da Meta.
Nas solicitações para graph.facebook.com, você verá parâmetros como device_id, hardware_id, advertiser_id e outros identificadores. Isso ajudará a entender quais dados precisam ser isolados em navegadores anti-detect como Dolphin Anty ou AdsPower ao trabalhar com várias contas.
Também é útil interceptar a resposta do servidor ao ser banido — geralmente contém um código de erro e às vezes a razão do bloqueio, que o Facebook não mostra na interface do aplicativo.
Cenário 2. SMM — estudo da API do Instagram e TikTok
Especialistas em SMM que gerenciam de 10 a 50 contas de clientes frequentemente enfrentam limites das plataformas: o Instagram limita o número de curtidas, seguidores e comentários por hora. O Charles permite medir esses limites com precisão, interceptando solicitações ao trabalhar com a conta manualmente.
Interceptando solicitações para i.instagram.com, você verá a estrutura da API: endpoints, parâmetros, tokens de autorização. Isso ajuda a configurar a automação para imitar o comportamento de um usuário real e não ser bloqueado. O mesmo se aplica ao TikTok — a análise de solicitações para api16-normal-c-useast1a.tiktokv.com mostra quais parâmetros a plataforma verifica.
Cenário 3. E-commerce — análise da API de marketplaces
Vendedores na Wildberries, Ozon e Avito usam ativamente o monitoramento de preços da concorrência. O Charles permite interceptar solicitações do aplicativo móvel do marketplace e ver através de quais endpoints os dados de preços e estoque são carregados. Isso ajuda a configurar um parser que imita o comportamento do aplicativo móvel — tais solicitações passam muito mais facilmente do que solicitações de um parser de navegador.
Por exemplo, no aplicativo Wildberries, você pode interceptar solicitações para catalog.wb.ru e ver a estrutura exata dos parâmetros de filtragem e paginação. Isso fornece um modelo pronto para construir um parser que contornará a proteção de forma muito mais eficaz do que tentativas de reproduzir solicitações de navegador. Para uma raspagem estável, serão necessários proxies de data center com alta velocidade e estabilidade de conexão.
Cenário 4. Testes de QA em aplicativos móveis
Testadores usam o Charles para verificar o comportamento do aplicativo em situações não padrão. Com o Map Local, é possível substituir a resposta do servidor por um erro 500 e verificar como o aplicativo lida com a falha do backend. O Throttle permite simular uma internet lenta (3G, Edge) e verificar se o aplicativo não trava durante um carregamento longo. Os Breakpoints permitem alterar manualmente os dados e verificar casos limite — por exemplo, o que acontece se o servidor retornar um array vazio em vez de uma lista de produtos.
Problemas comuns e suas soluções
Ao trabalhar com o Charles Proxy, iniciantes frequentemente enfrentam os mesmos problemas. Vamos analisar os mais comuns.
Problema 1: Charles mostra "unknown" em vez do conteúdo das solicitações HTTPS
Causa: SSL Proxying não está habilitado ou o certificado não está instalado no dispositivo.
Solução: Verifique se em Proxy → Configurações de SSL Proxying o SSL Proxying está habilitado e o host *:443 está adicionado. Certifique-se de que o certificado Charles está instalado no dispositivo e que ele tem confiança total (no iOS — através das configurações de confiança em certificados).
Problema 2: O tráfego não é interceptado, a lista de solicitações está vazia
Causa: O dispositivo não está direcionando o tráfego através do Charles, ou o Charles não está aceitando conexões.
Solução: Verifique se o dispositivo e o computador estão na mesma rede Wi-Fi. Certifique-se de que nas configurações de proxy no dispositivo está o IP correto do computador e a porta 8888. Verifique se o Charles está em modo de gravação: Proxy → Iniciar Gravação (ou o botão com o ponto vermelho na barra de ferramentas).
Problema 3: O aplicativo não funciona com o Charles habilitado
Causa: O aplicativo usa Certificate Pinning — verifica não apenas a cadeia de confiança, mas também o certificado específico do servidor. O certificado Charles não coincide com o esperado.
Solução para Android com root: Instale o módulo Magisk TrustUserCerts ou use o Frida para contornar o SSL Pinning. Para iOS com jailbreak — SSL Kill Switch 2. Sem root/jailbreak, contornar o Certificate Pinning é extremamente difícil.
Problema 4: Charles intercepta tráfego demais, a interface está lenta
Causa: Todo o tráfego de todos os aplicativos no dispositivo está sendo gravado, incluindo serviços do sistema.
Solução: Use filtragem. No campo Filter (na parte inferior do painel esquerdo), insira o domínio do serviço de interesse. Ou configure o Controle de Acesso em Proxy → Configurações de Controle de Acesso, para que o Charles aceite conexões apenas de aplicativos específicos através de Proxy → Configurações de Gravação → Incluir/Excluir.
Problema 5: Internet não funciona após fechar o Charles
Causa: As configurações de proxy permaneceram no dispositivo, mas o Charles já não está em execução — o tráfego não tem para onde ir.
Solução: Sempre remova as configurações de proxy no dispositivo após terminar de usar o Charles. Volte a configuração do proxy para "Nenhum" ou "Desligado" nas configurações de Wi-Fi.
| Problema | Solução rápida |
|---|---|
| HTTPS mostra "unknown" | Ativar SSL Proxying + instalar certificado |
| Lista de solicitações vazia | Verificar IP, porta e se o Charles está em modo de gravação |
| Aplicativo não abre | Certificate Pinning — precisa de root/jailbreak |
| Interface lenta | Adicionar filtro por domínio no campo Filter |
| Sem internet após fechar | Remover configurações de proxy no dispositivo |
Conclusão
O Charles Proxy é uma das ferramentas mais úteis para todos que trabalham com aplicativos móveis: seja um arbitrador que deseja entender os mecanismos de verificação do Facebook Ads, um especialista em SMM estudando a API do Instagram, ou um desenvolvedor testando o comportamento de seu aplicativo em condições não padrão. A instalação leva de 15 a 20 minutos, e as possibilidades que se abrem após a configuração são difíceis de superestimar.
O principal a lembrar: o Charles é uma ferramenta de análise e depuração, não de anonimização. Para trabalhar com várias contas, testar de diferentes geolocalizações ou contornar restrições de plataformas, é necessário um nível separado de proteção — servidores proxy com endereços IP reais.
Se você está analisando o tráfego de aplicativos móveis para arbitragem ou trabalho com contas em redes sociais, recomendamos combinar o Charles com proxies residenciais — eles fornecem IPs reais de usuários domésticos, o que minimiza o risco de bloqueios durante testes e trabalho com contas. Para tarefas onde alta velocidade e estabilidade são importantes — como raspagem em massa da API de marketplaces — são adequados proxies de data center com alta taxa de uptime.
```