A Wikipedia nos diz que:
Charles é um aplicativo proxy de depuração de plataforma cruzada escrito em Java. Ele permite que o usuário visualize o tráfego da porta HTTP, HTTPS e TCP habilitado que é acessado de, para ou através do computador local. Isso inclui solicitações e respostas, incluindo cabeçalhos HTTP e metadados (por exemplo, cookies, armazenamento em cache e informações de codificação), com recursos projetados para ajudar os desenvolvedores e testadores a analisar conexões e trocar mensagens.
Uma pequena explicação
Sniffing é o processo de monitorar e interceptar todos os pacotes que passam pela rede usando ferramentas de sniffing (Charles Proxy).
Os primeiros passos
1. Instalação e lançamento
Primeiro, você precisa baixar e instalar o aplicativo.
Se você não comprou uma licença, uma versão de avaliação de 30 dias com restrições estará disponível (a funcionalidade não é bloqueada, mas o Windows aparecerá com um tempo limite de 5 a 10 segundos antes de retomar o uso, e o aplicativo será encerrado após 30 minutos).
2. Começamos a farejar o tráfego.
Inicie o Charles Proxy, vá ao menu Ajuda → SSL Proxying → Instalar Charles Root Certificate (veja 1) → Instalar certificado → Importar o certificado .
Agora você vê as solicitações, mas elas estão criptografadas e nada fica visível, exceto os hieróglifos. Para ver a solicitação / resposta em sua forma normal, você precisa habilitar o proxy SSL e configurar os domínios cujos pacotes queremos interceptar. E queremos receber pedidos de todos os sites. Para fazer isso, vá para Proxy → Configurações de proxy SSL .
Na caixa de diálogo que é aberta, marque a caixa de seleção Ativar proxy SSL , selecione a seção Incluir e clique em Adicionar .
Em seguida, preencha o campo Host com * (conforme mostrado na imagem) e clique em OK .
Na caixa de diálogo Configurações de proxy SSL, clique em OK .
Agora você pode observar as solicitações enviadas ao servidor e as respostas do servidor.
3. Proxy do tráfego do navegador da Web
Ao reiniciar o Charles, você só precisa ativar o Windows Proxy (se tiver Windows) ou Mac Proxy.
4. Configurando um proxy no Android
Para exibir solicitações de aplicativos Android, você deve ter um assembly de aplicativo Android correspondente com a permissão definida no manifesto. Vamos fingir que temos esse aplicativo e queremos começar a receber tráfego dele.
Para fazer isso, descobrimos o endereço IP do PC: no Charles Proxy, vá para Ajuda → Endereço IP local . Vemos que o seu IP:
192.168.1.50.
Em seguida, pegue o telefone, abraPropriedades de rede → Nome da rede WiFi → Servidor proxy → Manual → Nome do host: * seu IP * / Porta: * 8888 * → Salve as propriedades de rede alteradas.
Agora você precisa seguir o link chls.pro/ssl ou charlesproxy.com/getssl , e então o download automático do certificado será iniciado. Abra-o, defina um nome para o certificado e agora você terá acesso ao tráfego do aplicativo Android.
5. Configurando um proxy no iOS
Pegue seu iPhone, abra Propriedades de rede → Nome da rede WiFi → Servidor proxy → Manual → Nome do host: * Nosso IP * / Porta: * 8888 * → Salve as propriedades de rede alteradas.
Agora você precisa seguir o link chls.pro/ssl ou charlesproxy.com/getssl, "Permitir" o carregamento do perfil de configuração. Em seguida, vá para Configurações → Perfil carregado → Instalar . Em seguida, vá para Configurações → Geral → Sobre este dispositivo → Certificados confiáveis → encontre o certificado instalado e torne-o "Confiável".
Funcionalidade Charles Proxy
- Substituição de dados:
- 1.1 Breakpoint
- 1.2 Reescrever
- 1.3 Mapa local
- Proxy:
- Ferramentas:
- 3.1 Sem cache
- 3.2 Bloquear Cookies
- 3.3 Mapa Remoto
- 3.4 Lista de Bloqueio
- 3.5 DNS Spoofing
- 3,6 espelho
- 3.7 Compor
- Configurações de gravação
- Foco
- Repetir
- Repetir Avançado
1. Substituição de dados
Vamos imaginar que precisamos testar o layout no cliente. Você precisa verificar como um grande número de bônus de usuário será exibido. Uma das opções que muitos vão oferecer: alterar a quantidade de bônus no banco de dados e verificar o cliente. Sim, você vai estar certo! No entanto, o servidor pode ter um cache e você precisa esperar um pouco até que o número de bônus seja atualizado ou apenas se conectar ao próprio banco de dados e executar a solicitação - isso leva um certo tempo. Existe uma opção mais fácil: alterar a resposta do servidor! Charles Proxy tem três maneiras de falsificar dados:
1.1 Breakpoint
O ponto de interrupção é uma espécie de ponto de interrupção para uma solicitação. Quando uma solicitação da lista especificada é encontrada, uma janela separada é aberta para interação manual adicional com os parâmetros da solicitação. Nele, vá para alterar manualmente as solicitações e respostas. É conveniente usar esta função ao testar a API ou respostas de servidor diferentes.
Temos um aplicativo e um perfil de usuário que atualmente tem 0 bônus em sua conta:

A solicitação na qual essa quantidade de bônus vem:
https://api.youla.io/api/v1/user/5e6222bbbedcc5975d2375f8
Para "travar" o ponto de interrupção na solicitação, vá para a seção Proxy → Configurações de ponto de interrupção . Em seguida, marque a caixa de seleção Habilitar pontos de interrupção → Adicionar e, na caixa de diálogo "Editar ponto de interrupção" que se abre, cole a URL da solicitação como mostrado na imagem:
Por exemplo, marque as caixas de seleção "Solicitação" e "Resposta". Em seguida, clique em OK e em OK novamente na janela Breakpoint Settings. Agora execute novamente a solicitação, ou seja, o cliente reabrirá a tela com o perfil do usuário.
No Charles Proxy, podemos ver que a solicitação está pausada:
Aqui você pode alterar os parâmetros do pedido. Mas agora você não precisa fazer isso, clique em "Executar". Em seguida, pausamos a resposta já recebida do servidor. É aqui que precisamos editar a "Resposta". Encontre o parâmetro necessário -
bonus_cnt»: 45.
Em seguida, altere o valor do parâmetro
bonus_cnt, por exemplo, para 1.000.000 de bônus e clique em "Executar".
O cliente exibe a nova quantidade de bônus. Nós somos ricos!

1.2 Reescrever
Rewrite é uma ferramenta que permite criar regras que modificam solicitações e respostas conforme elas passam pelo Charles Proxy. Por exemplo, você pode adicionar e alterar um título, pesquisar e substituir texto no corpo de uma resposta ou solicitação, etc.
Vamos tentar usar Rewrite para alterar o número de bônus de nossos usuários. Para fazer isso, abra Ferramentas → Reescrever → marque a caixa “ Habilitar reescrita “ → Adicionar . No campo Nome , você pode inserir qualquer nome para a substituição, por exemplo, "Alterar bônus" ou deixar o padrão "Conjunto sem título".
A próxima etapa é adicionar o caminho da solicitação ao "Local". Para fazer isso, em Local → Adicionarpreencha os seguintes campos e salve:
Host:
https://api.youla.io
Caminho:
/api/v1/user/5e6222bbbedcc5975d2375f8
Depois de adicionar o caminho da solicitação, você precisa alterar o próprio parâmetro e seu valor. Para fazer isso, você precisa criar uma regra de reescrita :
Tipo: Corpo (porque o parâmetro está no corpo);
Onde: Resposta (porque o parâmetro está na resposta do servidor);
Seção Match: em "Value" especifique o valor e o parâmetro que o servidor retorna;
Seção Substituir: Em "Valor", especifique o valor e o parâmetro que deseja ver no cliente.
Em seguida, salve a "Regra de reescrita" e clique em OK na guia "Configurações de reescrita". No cliente, solicite novamente o perfil do usuário. Você alterou automaticamente o número de bônus de usuário. Somos ricos de novo!

1.3 Mapa local
Map Local é uma ferramenta que permite usar arquivos locais como se fossem parte de um servidor.
Vá para Ferramentas → Mapear local.
Em seguida, na janela Map Local Settings, clique em Add → Host:
https://api.youla.io/api/v1/user/5e6222bbbedcc5975d2375f8→ Local path: o caminho no computador para o arquivo. Você pode usar arquivos de mídia prontos, HTML, CSS, JSON, XML. É mais adequado, claro, para desenvolvedores, de modo que não carreguem dados no servidor para seus testes subsequentes, mas um testador também pode encontrar um aplicativo competente. Preparamos a resposta de que precisaremos com antecedência e a salvamos no arquivo change_bonus.json:
Salve os valores inseridos na guia "Editar mapeamento" e na guia "Configurações locais do mapa".
No cliente, solicite novamente o perfil do usuário. Você alterou automaticamente o número de bônus de usuário. Somos ricos de novo!

Vamos dar uma olhada em outros recursos da ferramenta Charles Proxy. E vamos começar do início, com a guia "Proxy".
2.1 Configurações do acelerador
Configurações de aceleração é uma função que permite definir diferentes parâmetros de velocidade de conexão com o domínio selecionado.
Uma função para quem gosta de testar no elevador, no metrô, na passagem subterrânea. Vamos para Proxy → Configurações de aceleração → a caixa de seleção Ativar aceleração . Se você não entender todos os pontos acima, pode usar a predefinição do acelerador e selecionar a velocidade apropriada para o teste, e o sistema preencherá automaticamente o restante dos campos.
Se você selecionar "Apenas para hosts selecionados", poderá definir um host específico ao qual suas configurações serão aplicadas. Aqui você pode usar predefinições prontas com configurações para vários tipos (4G, 3G, etc.). E você também pode definir vários parâmetros, vou listar brevemente alguns deles:
A largura de banda é a quantidade máxima de dados que pode ser transferida ao longo do tempo.
A utilização é a fração da largura de banda total que pode ser fornecida ao usuário a qualquer momento.
Latência - latência em milissegundos na primeira solicitação entre o cliente e o servidor remoto.
MTU é a unidade de transmissão máxima para o preset atual.
Confiabilidade - Uma medida da probabilidade de falha de uma conexão. Usado para simular condições de rede não confiáveis.
A estabilidade é uma medida da probabilidade de uma conexão ser instável e, portanto, diminuir sua qualidade. Útil para simular redes em que a qualidade da comunicação cai periodicamente, por exemplo, móvel.
2.2 Proxies reversos
O proxy reverso é um servidor proxy reverso. Normalmente usado para receber solicitações da Internet e redirecioná-las para um dos servidores da web.
2.3 Encaminhamento de porta
Encaminhamento de porta , às vezes chamado de encaminhamento de porta ou túnel, é o processo de encaminhamento de tráfego endereçado a uma porta de rede específica de um nó de rede para outro. Este método permite que um usuário externo alcance uma porta na rede local.
2.4 MacOS Proxy / Windows Proxy
MacOS Proxy ou Windows Proxy (dependendo do seu sistema operacional) - faz proxy do tráfego do seu navegador da web.
Tendo lidado com a seção Proxy, vamos prosseguir para a seção Ferramentas.
3.1 Sem cache
A ferramenta No Caching evita o cache ao manipular os cabeçalhos HTTP que controlam o cache de resposta. Os cabeçalhos
If-Modified-Sincee If-None-Matchsão removidos das solicitações Pragma: no-cachee adicionados Cache-control: no-cache. Cabeçalhos Expires, Last-Modifiede ETagsão removidos a partir da resposta e adicionado Expires: 0, e Cache-Control: no-cache.
3.2 Bloquear Cookies
Bloquear cookies - O cabeçalho do cookie é removido das solicitações, evitando que os valores do arquivo sejam enviados de um aplicativo cliente (como um navegador da web) para um servidor remoto. Além disso, o cabeçalho Set-Cookie é removido das respostas, evitando que o aplicativo cliente receba solicitações para definir cookies do servidor remoto. Nas configurações, você pode habilitar a remoção de cookies para todos os hosts e para os selecionados. O exemplo abaixo permite a exclusão de cookies para todas as solicitações.
3.3 Mapa Remoto
Mapa remoto - permite redirecionar solicitações de um mapa de URL para outro mapa para. Substitui o host, o caminho inteiro ou apenas os parâmetros, dependendo da sua tarefa. No exemplo abaixo, a solicitação do servidor de produção para o servidor de desenvolvimento é falsificada.
3.4 Lista de Bloqueio
Lista de bloqueio - permite que você bloqueie nomes de domínio específicos. Quando um navegador da web tenta solicitar qualquer página de um nome de domínio bloqueado, ele será bloqueado. Você pode escolher "Abandonar conexão" ou retornar o erro 403.
3.5 DNS Spoofing
Hospedagem compartilhada é quando você tem vários sites no mesmo endereço IP, e o servidor da web determina qual site você está solicitando com base no nome inserido no navegador. Mais precisamente, o servidor olha o cabeçalho do host enviado na solicitação. Por exemplo, quando você precisa substituir hosts para que, ao inserir um endereço no navegador (por exemplo, api.youla.ru), as solicitações sejam enviadas para outro endereço (por exemplo, para um site de teste).
Spoofing de DNS - redireciona um nome de domínio para um endereço IP específico.
3,6 espelho
Espelho - Este recurso permite que você salve automaticamente todas as respostas retornadas ao Charles Proxy. Eles são dispostos localmente na mesma hierarquia do servidor. Se repentinamente houve um tempo de inatividade no back-end, o ambiente de teste caiu, etc., você já tem mocks prontos para o Map Local. Você pode ativar a função desta forma: Ferramentas → Espelho ou Ferramentas → Salvar automaticamente .
3.7 Compor
Compose é uma função para editar as consultas que você capturou.
Por exemplo, você adiciona um produto aos favoritos, mas por algum motivo ele não é adicionado. Você pode editar uma solicitação já enviada e enviá-la novamente. Para fazer isso, selecione a solicitação necessária na lista, clique com o botão direito sobre ela e selecione Compor . O ícone de solicitação mudará e agora você pode editá-lo com segurança.
Depois de alterar os valores requeridos na solicitação, clique em "Executar" abaixo para enviar a solicitação ao servidor.
4. Configurações de gravação
Configurações de gravação - configurações para exibir as listas de domínios permitidos e bloqueados.
Na guia "Opções", você pode configurar o limite, ou seja, a quantidade de solicitações que o Charles Proxy pode registrar.
Na guia "Incluir", você pode selecionar um domínio específico para exibir os pacotes.
Na guia "Excluir", podemos selecionar os domínios que precisam ser ocultados durante a detecção.
5. Foco
Foco - esta função move o domínio para as primeiras posições na lista.
6. Repita
Repetir - envia uma solicitação ao servidor que é idêntica ao selecionado.
7. Repita Avançado
Repetir avançado - idêntico ao Repetir, apenas você pode selecionar o número de solicitações enviadas e o intervalo entre elas. Este recurso é útil ao verificar a resposta do servidor à inundação.
Aqui, Simultaneidade é o número de usuários e Iterações é o número de vezes que cada solicitação é repetida. Você também pode marcar a caixa "Mostrar resultados em nova sessão", caso em que uma nova janela será aberta onde as solicitações serão executadas.
Resumo
Neste artigo, tentamos descrever os recursos do Charles Proxy que são usados por testadores de aplicativos móveis. Isso é tudo, e não se esqueça de anexar a sessão do sniffer ao relatório de bug.