Como domar Charles Proxy?

Olá! Muitos daqueles que nos procuram para entrevistas para uma posição de testador garantem com orgulho que podem usar o Charles Proxy. Mas quando você mergulha na parte técnica, fica óbvio que o candidato só ouviu falar dessa ferramenta. Vamos domar este vaso finalmente!







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 AjudaSSL ProxyingInstalar Charles Root Certificate (veja 1) → Instalar certificadoImportar 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 ProxyConfiguraçõ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 AjudaEndereç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çõesPerfil carregadoInstalar . Em seguida, vá para ConfiguraçõesGeralSobre este dispositivoCertificados confiáveis ​​→ encontre o certificado instalado e torne-o "Confiável".



Funcionalidade Charles Proxy



  1. Substituição de dados:

  2. Proxy:

  3. Ferramentas:

  4. Configurações de gravação
  5. Foco
  6. Repetir
  7. 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 ProxyConfigurações de ponto de interrupção . Em seguida, marque a caixa de seleção Habilitar pontos de interrupçãoAdicionar 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 FerramentasReescrever → 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 LocalAdicionarpreencha 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 ProxyConfiguraçõ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: FerramentasEspelho ou FerramentasSalvar 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.



All Articles