Comment apprivoiser Charles Proxy?

salut! Beaucoup de ceux qui viennent Ă  nous pour des entretiens pour un poste de testeur assurent fiĂšrement qu'ils peuvent utiliser Charles Proxy. Mais quand on plonge dans la partie technique, il devient Ă©vident que le candidat n'a entendu parler que de cet outil. Apprivoisons enfin ce vase!







Wikipédia nous dit que:



Charles est une application proxy de dĂ©bogage HTTP multiplateforme Ă©crite en Java. Il permet Ă  l'utilisateur d'afficher le trafic des ports HTTP, HTTPS et TCP activĂ© auquel il accĂšde depuis, vers ou via l'ordinateur local. Cela inclut les demandes et les rĂ©ponses, y compris les en-tĂȘtes HTTP et les mĂ©tadonnĂ©es (telles que les cookies, la mise en cache et les informations de codage), avec des fonctionnalitĂ©s conçues pour aider les dĂ©veloppeurs et les testeurs Ă  analyser les connexions et Ă  Ă©changer des messages.


Une petite explication



Le reniflement est le processus de surveillance et d'interception de tous les paquets passant par le réseau à l'aide d'outils de reniflage (Charles Proxy).



Les premiers pas



1. Installation et lancement



Vous devez d'abord télécharger et installer l'application.



Si vous n'avez pas achetĂ© de licence, une version d'essai de 30 jours avec des restrictions sera disponible (la fonctionnalitĂ© n'est pas bloquĂ©e, mais les fenĂȘtres apparaĂźtront avec un dĂ©lai d'attente de 5 Ă  10 secondes avant de reprendre l'utilisation, et l'application se terminera au bout de 30 minutes).



2. Nous commençons à renifler le trafic



DĂ©marrez Charles Proxy, allez dans le menu Aide → SSL Proxying → Installer le certificat racine Charles (voir 1) → Installer le certificat → Importer le certificat .







Vous voyez maintenant les demandes, mais elles sont chiffrĂ©es et rien n'est visible Ă  l'exception des hiĂ©roglyphes. Pour voir la demande / rĂ©ponse dans sa forme normale, vous devez activer le proxy SSL et configurer les domaines dont nous voulons intercepter les paquets. Et nous voulons recevoir des demandes de tous les sites. Pour ce faire, accĂ©dez Ă  Proxy → ParamĂštres de proxy SSL .







Dans la boßte de dialogue qui s'ouvre, cochez la case Activer le proxy SSL , sélectionnez la section Inclure et cliquez sur Ajouter .







Ensuite, remplissez le champ HÎte avec * (comme indiqué sur la capture d'écran) et cliquez sur OK .







Dans la boĂźte de dialogue ParamĂštres de proxy SSL, cliquez sur OK .







Vous pouvez maintenant regarder les demandes envoyées au serveur et les réponses du serveur.



3. Proxy trafic du navigateur Web



Lorsque vous redémarrez Charles, il vous suffit d'activer Windows Proxy (si vous avez Windows) ou Mac Proxy.







4. Configuration d'un proxy sur Android



Pour afficher les demandes d'application Android, vous devez disposer d'un assembly d'application Android correspondant avec l'autorisation définie dans le manifeste. Supposons que nous ayons une telle application et que nous voulons commencer à en tirer du trafic.



Pour ce faire, nous recherchons l'adresse IP du PC: dans Charles Proxy, allez dans Aide → Adresse IP locale . Nous voyons que votre IP: 192.168.1.50.







Ensuite, dĂ©crochez le tĂ©lĂ©phone, ouvrezPropriĂ©tĂ©s du rĂ©seau → Nom du rĂ©seau WiFi → Serveur proxy → Manuel → Nom d'hĂŽte: * votre IP * / Port: * 8888 * → Enregistrez les propriĂ©tĂ©s de rĂ©seau modifiĂ©es.



Vous devez maintenant suivre le lien chls.pro/ssl ou charlesproxy.com/getssl , puis le téléchargement automatique du certificat commencera. Ouvrez-le, définissez un nom pour le certificat et vous avez maintenant accÚs au trafic de l'application Android.



5. Configurer un proxy sur iOS



Prenez l'iPhone en main, ouvrez PropriĂ©tĂ©s rĂ©seau → Nom du rĂ©seau WiFi → Serveur proxy → Manuel → Nom d'hĂŽte: * Notre IP * / Port: * 8888 * → Enregistrez les propriĂ©tĂ©s rĂ©seau modifiĂ©es.



Maintenant, vous devez suivre le lien chls.pro/ssl ou charlesproxy.com/getssl, "Autoriser" le chargement du profil de configuration. Ensuite, allez dans ParamĂštres → Profil chargĂ© → Installer . Ensuite, allez dans ParamĂštres → GĂ©nĂ©ral → À propos de cet appareil → Certificats de confiance → recherchez le certificat installĂ© et dĂ©finissez-le sur «Approuvé».



Fonctionnalité Charles Proxy



  1. Substitution de données:

  2. Procuration:

  3. Outils:

  4. ParamĂštres d'enregistrement
  5. Concentrer
  6. Répéter
  7. Répéter Advanced


1. Substitution de données



Imaginons que nous devions tester la mise en page sur le client. Vous devez vĂ©rifier comment un grand nombre de bonus utilisateur sera affichĂ©. Une des options que beaucoup vous proposeront: modifier le nombre de bonus dans la base de donnĂ©es et vĂ©rifier le client. Oui, vous aurez raison! Cependant, le serveur peut avoir un cache et vous devez attendre un certain temps jusqu'Ă  ce que le nombre de bonus soit mis Ă  jour, ou simplement vous connecter Ă  la base de donnĂ©es elle-mĂȘme et exĂ©cuter la demande - cela prend un certain temps. Il existe une option plus simple: changer la rĂ©ponse du serveur! Charles Proxy a trois façons d'usurper des donnĂ©es:



1.1 Point d'arrĂȘt



Le point d'arrĂȘt est une sorte de point d'arrĂȘt pour une requĂȘte. Lorsqu'une demande de la liste spĂ©cifiĂ©e est trouvĂ©e, une fenĂȘtre distincte s'ouvre pour une interaction manuelle supplĂ©mentaire avec les paramĂštres de la demande. Dans celui-ci, passez Ă  la modification manuelle des demandes et des rĂ©ponses. Il est pratique d'utiliser cette fonction lors du test de l'API ou de diffĂ©rentes rĂ©ponses de serveur.



Nous avons une application et un profil d'utilisateur qui a actuellement 0 bonus sur son compte:





La demande dans laquelle ce montant de bonus intervient: https://api.youla.io/api/v1/user/5e6222bbbedcc5975d2375f8







Pour "accrocher" Breakpoint Ă  la demande, allez dans la section Proxy → Breakpoint Settings . Ensuite, cochez la case Activer les points d'arrĂȘt → Ajouter , et dans la boĂźte de dialogue "Modifier le point d'arrĂȘt" qui s'ouvre, collez l'URL de la requĂȘte comme indiquĂ© dans la capture d'Ă©cran:







Par exemple, cochez les cases "Demande" et "RĂ©ponse". Cliquez ensuite sur OK , puis Ă  nouveau sur OK dans la fenĂȘtre ParamĂštres des points d'arrĂȘt. Maintenant, exĂ©cutez Ă  nouveau la demande, c'est-Ă -dire que le client rouvrira l'Ă©cran avec le profil utilisateur.



Dans Charles Proxy, nous pouvons voir que la requĂȘte est suspendue:







Ici, vous pouvez modifier les paramÚtres de la demande. Mais maintenant, vous n'avez pas besoin de faire cela, cliquez sur "Exécuter". Ensuite, nous suspendons la réponse déjà reçue du serveur. C'est là que nous devons éditer la "Réponse". Trouvez le paramÚtre requis - bonus_cnt»: 45.







Puis changez la valeur du paramÚtre bonus_cnt, par exemple, à 1 000 000 de bonus, et cliquez sur «Exécuter».







Le client affiche le nouveau montant des bonus. Nous sommes riches!





1.2 RĂ©Ă©crire



Rewrite est un outil qui vous permet de créer des rÚgles qui modifient les demandes et les réponses à mesure qu'elles passent par le proxy Charles. Par exemple, vous pouvez ajouter et modifier un titre, rechercher et remplacer du texte dans le corps d'une réponse ou d'une demande, etc.



Essayons d'utiliser Rewrite pour modifier le montant des bonus de nos utilisateurs. Pour ce faire, ouvrez Outils → RĂ©Ă©crire → cochez la case « Activer la rĂ©Ă©criture » → Ajouter . Dans le champ Nom , vous pouvez entrer n'importe quel nom pour la substitution, par exemple, "Modifier le bonus", ou laisser la valeur par dĂ©faut "Ensemble sans titre".







L'Ă©tape suivante consiste Ă  ajouter le chemin de la requĂȘte Ă  "Location". Pour ce faire, dans la section Emplacement → AjouterRemplissez les champs suivants et enregistrez:



HĂŽte: https://api.youla.io



Chemin: /api/v1/user/5e6222bbbedcc5975d2375f8







AprĂšs avoir ajoutĂ© le chemin de la requĂȘte, vous devez modifier le paramĂštre lui-mĂȘme et sa valeur. Pour ce faire, vous devez crĂ©er une rĂšgle de rĂ©Ă©criture :



Type: Body (car le paramĂštre est dans le corps);



OĂč: RĂ©ponse (car le paramĂštre est dans la rĂ©ponse du serveur);



Section Match: dans "Value" spécifiez la valeur et le paramÚtre que le serveur retourne;



Remplacer la section: dans "Valeur", spécifiez la valeur et le paramÚtre que vous souhaitez voir sur le client.







Ensuite, enregistrez la "rÚgle de réécriture" et cliquez sur OK dans l'onglet "ParamÚtres de réécriture". Sur le client, demandez à nouveau le profil utilisateur. Vous avez automatiquement modifié le nombre de bonus utilisateurs. Nous sommes à nouveau riches!





1.3 Carte locale



Map Local est un outil qui vous permet d'utiliser des fichiers locaux comme s'ils faisaient partie d'un serveur.



Allez dans Outils → Carte locale.







Ensuite, dans la fenĂȘtre ParamĂštres locaux de la carte, cliquez sur Ajouter → HĂŽte: https://api.youla.io/api/v1/user/5e6222bbbedcc5975d2375f8→ Chemin local: le chemin d'accĂšs au fichier sur l'ordinateur. Vous pouvez utiliser des fichiers multimĂ©dias prĂȘts Ă  l'emploi, HTML, CSS, JSON, XML. Plus adaptĂ©, bien sĂ»r, aux dĂ©veloppeurs, afin de ne pas tĂ©lĂ©charger de donnĂ©es sur le serveur pour ses tests ultĂ©rieurs, mais un testeur peut Ă©galement trouver une application compĂ©tente. Nous avons prĂ©parĂ© la rĂ©ponse dont nous aurons besoin Ă  l'avance et l'avons sauvegardĂ©e dans le fichier change_bonus.json:







Sauvegardez les valeurs saisies dans l'onglet "Modifier la cartographie" et dans l'onglet "Mapper les paramĂštres locaux".







Sur le client, demandez à nouveau le profil utilisateur. Vous avez automatiquement modifié le nombre de bonus utilisateurs. Nous sommes à nouveau riches!





Jetons un coup d'Ɠil aux autres fonctionnalitĂ©s de l'outil Charles Proxy. Et commençons par le tout dĂ©but, avec l'onglet "Proxy".



2.1 ParamÚtres de l'accélérateur



Throttle Settings est une fonction qui vous permet de définir différents paramÚtres de vitesse de connexion avec le domaine sélectionné.



Une fonction pour ceux qui aiment tester dans l'ascenseur, dans le mĂ©tro, dans le passage souterrain. Allons Ă  Proxy → ParamĂštres de la rĂ©gulation → la case Ă  cocher Activer la limitation . Si vous ne comprenez pas tous les points ci-dessus, vous pouvez utiliser le prĂ©rĂ©glage Throttle et sĂ©lectionner la vitesse appropriĂ©e pour le test, et le systĂšme remplira automatiquement les autres champs.







Si vous sĂ©lectionnez "Uniquement pour les hĂŽtes sĂ©lectionnĂ©s", vous pouvez dĂ©finir un hĂŽte spĂ©cifique auquel vos paramĂštres s'appliqueront. Ici, vous pouvez utiliser des prĂ©rĂ©glages prĂȘts Ă  l'emploi avec des paramĂštres pour diffĂ©rents types (4G, 3G, etc.). Et vous pouvez Ă©galement dĂ©finir divers paramĂštres, je vais briĂšvement Ă©numĂ©rer certains d'entre eux:



La bande passante est la quantitĂ© maximale de donnĂ©es pouvant ĂȘtre transfĂ©rĂ©es au fil du temps.



L'utilisation est la fraction de la bande passante totale qui peut ĂȘtre fournie Ă  l'utilisateur Ă  un moment donnĂ©.



Latence - latence en millisecondes Ă  la premiĂšre demande entre le client et le serveur distant.



MTU est l'unité de transmission maximale pour le préréglage actuel.



Fiabilité - Une mesure de la probabilité qu'une connexion échoue. Utilisé pour simuler des conditions de réseau non fiables.



La stabilité est une mesure de la probabilité qu'une connexion soit instable et, par conséquent, diminue de qualité. Utile pour simuler des réseaux dans lesquels la qualité de la communication baisse périodiquement, par exemple mobile.



2.2 Proxy inverses



Le proxy inverse est un serveur proxy inverse. Généralement utilisé pour recevoir des demandes d'Internet et les rediriger vers l'un des serveurs Web.







2.3 Redirection de port



La redirection de port , parfois appelĂ©e redirection de port, ou tunneling, est le processus de transfert du trafic adressĂ© Ă  un port rĂ©seau spĂ©cifique d'un nƓud de rĂ©seau Ă  un autre. Cette mĂ©thode permet Ă  un utilisateur extĂ©rieur d'accĂ©der Ă  un port au sein du rĂ©seau local.







2.4 Proxy MacOS / Proxy Windows



MacOS Proxy ou Windows Proxy (selon votre systĂšme d'exploitation) - proxys le trafic de votre navigateur Web.







AprÚs avoir traité la section Proxy, passons à la section Outils.



3.1 Pas de mise en cache



L'outil No Caching empĂȘche la mise en cache en manipulant les en-tĂȘtes HTTP qui contrĂŽlent la mise en cache des rĂ©ponses. Les en-tĂȘtes If-Modified-Sinceet If-None-Matchsont supprimĂ©s des demandes Pragma: no-cacheet ajoutĂ©s Cache-control: no-cache. Les en-tĂȘtes Expires, Last-Modifiedet ETagsont supprimĂ©s de la rĂ©ponse et ajoutĂ©s Expires: 0, et Cache-Control: no-cache.







3.2 Bloquer les cookies



Bloquer les cookies - L'en-tĂȘte de cookie est supprimĂ© des demandes, empĂȘchant l'envoi des valeurs de fichier d'une application cliente (comme un navigateur Web) Ă  un serveur distant. En outre, l'en-tĂȘte Set-Cookie est supprimĂ© des rĂ©ponses, empĂȘchant l'application cliente de recevoir des demandes de configuration de cookies du serveur distant. Dans les paramĂštres, vous pouvez activer la suppression des cookies Ă  la fois pour tous les hĂŽtes et pour ceux sĂ©lectionnĂ©s. L'exemple ci-dessous permet la suppression des cookies pour toutes les demandes.







3.3 Carte Ă  distance



Mapper Ă  distance - Vous permet de rediriger les demandes d'une URL de mappage vers une autre mapper vers. Remplace l'hĂŽte, le chemin complet ou uniquement les paramĂštres, en fonction de votre tĂąche. Dans l'exemple ci-dessous, la requĂȘte du serveur prod au serveur de dĂ©veloppement est remplacĂ©e.







3.4 Liste de blocage



Liste de blocage - vous permet de bloquer des noms de domaine spécifiques. Lorsqu'un navigateur Web tente de demander une page à partir d'un nom de domaine bloqué, il sera bloqué. Vous pouvez choisir soit «Abandonner la connexion» ou renvoyer l'erreur 403.







3.5 Usurpation DNS



L'hĂ©bergement partagĂ© est lorsque vous avez plusieurs sites sur la mĂȘme adresse IP et que le serveur Web dĂ©termine le site que vous demandez en fonction du nom entrĂ© dans le navigateur. Plus prĂ©cisĂ©ment, le serveur regarde l'en-tĂȘte d'hĂŽte envoyĂ© dans la requĂȘte. Par exemple, lorsque vous devez remplacer des hĂŽtes de sorte que lorsque vous entrez une adresse dans le navigateur (par exemple, api.youla.ru), les demandes sont dirigĂ©es vers une autre adresse (par exemple, vers un site de test).



DNS Spoofing - redirige un nom de domaine vers une adresse IP spécifique.







3.6 Miroir



Miroir - Cette fonction vous permet d'enregistrer automatiquement toutes les rĂ©ponses renvoyĂ©es Ă  Charles Proxy. Ils sont disposĂ©s localement dans la mĂȘme hiĂ©rarchie que sur le serveur. Si soudainement il y a un temps d'arrĂȘt sur le backend, l'environnement de test tombe, etc., vous avez dĂ©jĂ  des simulations toutes faites pour Map Local. Vous pouvez activer la fonction comme ceci: Outils → Miroir ou Outils → Enregistrement automatique .







3.7 Composer



Compose est une fonction pour modifier les requĂȘtes que vous avez capturĂ©es.



Par exemple, vous ajoutez un produit à vos favoris, mais pour une raison quelconque, il n'est pas ajouté. Vous pouvez modifier une demande déjà soumise et la renvoyer. Pour ce faire, sélectionnez la demande requise dans la liste, cliquez dessus avec le bouton droit de la souris et sélectionnez Rédiger . L'icÎne de demande changera et vous pouvez maintenant la modifier en toute sécurité.







AprÚs avoir modifié les valeurs requises dans la demande, cliquez sur "Exécuter" ci-dessous pour envoyer la demande au serveur.







4. ParamĂštres d'enregistrement



ParamÚtres d'enregistrement - paramÚtres d'affichage des listes de domaines autorisés et bloqués.



Dans l'onglet "Options", vous pouvez configurer la limite, c'est-Ă -dire le nombre de requĂȘtes que Charles Proxy peut enregistrer.







Dans l'onglet "Inclure", vous pouvez sélectionner un domaine spécifique pour afficher les packages.







Dans l'onglet "Exclure", nous pouvons sĂ©lectionner les domaines qui doivent ĂȘtre masquĂ©s lors du reniflement.







5. Focus



Focus - cette fonction dĂ©place le domaine vers les premiĂšres positions de la liste. 







6. Répéter



Répéter - envoie une demande au serveur qui est identique à celui sélectionné.







7. Répéter Advanced



Répéter Avancé - identique à Répéter, vous seul pouvez sélectionner le nombre de demandes envoyées et le délai entre elles. Cette fonctionnalité est utile lors de la vérification de la réponse du serveur à l'inondation.



Ici, la concurrence est le nombre d'utilisateurs et les itĂ©rations est le nombre de fois que chaque demande est rĂ©pĂ©tĂ©e. Vous pouvez Ă©galement cocher la case "Afficher les rĂ©sultats dans une nouvelle session", auquel cas une nouvelle fenĂȘtre s'ouvrira oĂč les requĂȘtes seront exĂ©cutĂ©es.







Sommaire



Dans cet article, nous avons tenté de décrire les fonctionnalités de Charles Proxy utilisées par les testeurs d'applications mobiles. C'est tout, et n'oubliez pas de joindre la session du sniffer au rapport de bogue.



All Articles