Retour au blog

Charles Proxy pour le débogage des applications mobiles : guide complet pour intercepter le trafic et analyser HTTP/HTTPS

Charles Proxy est un outil puissant pour intercepter et analyser le trafic HTTP/HTTPS des applications mobiles. Découvrez comment le configurer pour le débogage, les tests et l'utilisation de proxy.

📅5 août 2026
```html

Vous lancez une application, et elle se comporte de manière imprévisible : les données ne se chargent pas, les publicités ne s'affichent pas, le compte est banni sans raison apparente. Pour comprendre ce qui se passe « sous le capot », il faut voir les véritables requêtes HTTP entre l'application et le serveur. C'est précisément pour cela qu'existe Charles Proxy — un outil qui permet d'intercepter, d'analyser et de modifier le trafic des applications mobiles en temps réel.

Dans ce guide, nous allons examiner la configuration complète de Charles Proxy pour iOS et Android, le travail avec HTTPS, la modification des réponses du serveur et l'intégration avec des serveurs proxy externes — tout cela sans théorie superflue, uniquement de la pratique.

Qu'est-ce que Charles Proxy et à quoi ça sert

Charles Proxy est une application de bureau pour Windows, macOS et Linux qui fonctionne comme un proxy HTTP/HTTPS entre votre appareil (smartphone, émulateur) et Internet. Lorsque vous dirigez le trafic via Charles, le programme enregistre toutes les requêtes et réponses, vous permettant de voir chaque octet de données que l'application envoie aux serveurs.

En substance, Charles fait la même chose que DevTools dans le navigateur Chrome — mais pour les applications mobiles qui n'ont pas d'inspecteur intégré. Cela est particulièrement important lorsque vous devez comprendre :

  • Quels paramètres l'application transmet lors de l'authentification ou de l'enregistrement d'un compte
  • Quels en-têtes (User-Agent, Device-ID, tokens) sont envoyés au serveur
  • Comment Facebook, TikTok ou Instagram vérifient l'appareil lors de la connexion
  • Pourquoi l'application renvoie une erreur dans certaines conditions
  • Quelles données le marché transmet lors de la demande de prix ou de catalogue

Pour les arbitragistes, Charles Proxy est un outil de renseignement : vous pouvez littéralement voir quelles données de fingerprint Facebook Ads collecte depuis l'appareil et comprendre pourquoi le compte est banni immédiatement après la connexion. Les spécialistes SMM utilisent Charles pour analyser l'API Instagram et TikTok afin de comprendre les limites et les modèles de requêtes. Les développeurs et les testeurs l'utilisent pour simuler des réponses serveur et vérifier le comportement de l'application dans des situations non standards.

Fonctionnalités clés de Charles Proxy :

  • Interception du trafic HTTP et HTTPS (y compris TLS 1.3)
  • Visualisation du corps des requêtes et des réponses dans un format convivial (JSON, XML, texte)
  • Modification des réponses du serveur (Rewrite, Map Local, Map Remote)
  • Points d'arrêt (Breakpoints) pour l'édition manuelle des requêtes
  • Ralentissement de la connexion pour simuler une connexion lente
  • Enregistrement et reproduction de sessions
  • Support des proxies externes (HTTP, SOCKS5)

Installation et configuration initiale de Charles Proxy

Charles Proxy est distribué comme une application payante avec une période d'essai de 30 jours. Vous pouvez le télécharger depuis le site officiel charlesproxy.com. La version pour macOS, Windows et Linux est identique en termes de fonctionnalités.

Étape 1. Installation de l'application

Téléchargez le programme d'installation pour votre système d'exploitation, lancez-le et suivez la procédure d'installation standard. Une fois Charles lancé, il commence immédiatement à écouter le port 8888 sur votre ordinateur. C'est le port par défaut par lequel les appareils dirigeront le trafic.

Étape 2. Vérification de l'adresse IP de l'ordinateur

Pour que l'appareil mobile puisse se connecter à Charles, il doit être sur le même réseau Wi-Fi que l'ordinateur. Découvrez l'adresse IP de votre ordinateur sur le réseau local :

  • macOS : Préférences Système → Réseau → sélectionnez Wi-Fi → Adresse IP
  • Windows : Invite de commandes → ipconfig → Adresse IPv4
  • Dans Charles lui-même : Aide → Adresse IP locale

Notez cette adresse — elle sera nécessaire lors de la configuration du proxy sur le smartphone. En général, cela ressemble à 192.168.1.X.

Étape 3. Autorisation des connexions des appareils

Lors de la première connexion de l'appareil mobile, Charles affichera une boîte de dialogue demandant : « Autoriser la connexion depuis l'IP xxx.xxx.x.x ? ». Cliquez sur Autoriser. Si la fenêtre n'apparaît pas, vérifiez que le pare-feu Windows ou macOS ne bloque pas Charles. Sur macOS, il peut être nécessaire d'autoriser explicitement les connexions entrantes dans Préférences Système → Sécurité → Pare-feu.

Configuration de Charles Proxy pour Android

La configuration sur Android se compose de deux parties : diriger le trafic via Charles et installer le certificat pour déchiffrer HTTPS. Sans certificat, vous ne verrez que des données chiffrées — un ensemble de symboles inutiles.

Configuration du proxy Wi-Fi sur Android

  1. Ouvrez Paramètres → Wi-Fi
  2. Appuyez et maintenez le réseau connecté → Modifier le réseau
  3. Activez Options avancées
  4. Dans le champ Proxy, sélectionnez Manuel
  5. Hôte proxy : adresse IP de votre ordinateur (par exemple, 192.168.1.5)
  6. Port : 8888
  7. Enregistrez les paramètres

Après cela, tout le trafic HTTP de l'appareil passera par Charles. Les enregistrements des requêtes commenceront à apparaître à l'écran de l'application.

Installation du certificat Charles sur Android

  1. Sur l'appareil, ouvrez un navigateur et allez à l'adresse chls.pro/ssl
  2. Un fichier de certificat .pem sera téléchargé
  3. Ouvrez Paramètres → Sécurité → Installer le certificat
  4. Sélectionnez le fichier téléchargé et installez-le comme Certificat CA
  5. Donnez-lui un nom, par exemple « Charles SSL »

Sur Android 7 et supérieur, les applications ne font pas confiance par défaut aux certificats personnalisés. Cela signifie que les applications système et la plupart des applications tierces (Facebook, Instagram, TikTok) bloqueront l'interception. Pour travailler avec de telles applications, un accès root ou l'utilisation d'un émulateur Android (comme Genymotion ou Android Studio Emulator) avec la possibilité d'installer le certificat dans le stockage système sera nécessaire.

⚠️ Important pour Android 7+

À partir d'Android 7 (Nougat), les applications doivent explicitement déclarer leur confiance envers les certificats personnalisés dans le fichier network_security_config.xml. La plupart des applications populaires (Facebook Ads, Instagram) ne le font pas. Pour leur analyse, utilisez un émulateur avec root ou une version modifiée d'Android.

Configuration de Charles Proxy pour iOS

Sur iOS, la procédure est un peu plus simple — Apple fournit un mécanisme standard d'installation des certificats via des profils, et la plupart des applications respectent les paramètres système du proxy.

Configuration du proxy Wi-Fi sur iPhone/iPad

  1. Ouvrez Paramètres → Wi-Fi
  2. Appuyez sur l'icône (i) à côté du réseau connecté
  3. Faites défiler vers le bas jusqu'à la section Proxy HTTP
  4. Sélectionnez Manuel
  5. Serveur : adresse IP de l'ordinateur avec Charles
  6. Port : 8888
  7. Authentification : désactivée (si non configurée dans Charles)

Installation du certificat Charles sur iOS

  1. Sur l'iPhone, ouvrez le navigateur Safari et allez à chls.pro/ssl
  2. Safari proposera d'installer un profil de configuration — cliquez sur Autoriser
  3. Allez dans Paramètres → Général → VPN et gestion de l'appareil
  4. Trouvez le profil Charles et cliquez sur Installer
  5. Entrez le code PIN de l'appareil si nécessaire
  6. Ensuite, allez dans Paramètres → Général → À propos de cet appareil → Faire confiance aux certificats
  7. Activez le commutateur à côté de Charles Proxy CA

Après cela, Charles pourra déchiffrer le trafic HTTPS de la plupart des applications iOS. Les exceptions sont les applications avec Certificate Pinning — par exemple, les applications bancaires et certaines versions d'Instagram. Pour leur analyse, un jailbreak et des tweaks spéciaux comme SSL Kill Switch seront nécessaires.

Interception du trafic HTTPS : configuration du SSL Proxying

Même après l'installation du certificat, Charles ne déchiffre pas par défaut le trafic HTTPS — il faut spécifier explicitement pour quels domaines activer le SSL Proxying. Cela est fait intentionnellement pour ne pas surcharger l'interface avec des données inutiles.

Comment activer le SSL Proxying

  1. Dans le menu Charles, sélectionnez Proxy → Paramètres de SSL Proxying
  2. Cochez la case Activer le SSL Proxying
  3. Cliquez sur Ajouter dans la section Inclure
  4. Dans le champ Hôte, entrez * (astérisque = tous les domaines)
  5. Dans le champ Port, entrez 443
  6. Cliquez sur OK et redémarrez l'interception

Maintenant, Charles déchiffrera le trafic HTTPS pour tous les domaines. Si vous êtes intéressé par un service spécifique, indiquez son domaine au lieu de l'astérisque. Par exemple, pour analyser Instagram, entrez *.instagram.com, pour Facebook — *.facebook.com.

Ce que vous voyez après avoir activé le SSL Proxying

Dans le panneau de gauche de Charles, vous verrez un arbre de domaines. Cliquez sur n'importe quelle requête — dans la partie droite, des informations détaillées s'ouvriront : URL, méthode (GET/POST), en-têtes de la requête, corps de la requête (s'il y en a) et réponse du serveur. Les onglets Request et Response montrent les données sous forme brute ou dans un format convivial (JSON, XML, HTML).

Les en-têtes de la requête sont particulièrement précieux — c'est là que sont transmis les tokens d'autorisation, les identifiants d'appareil, la version de l'application et d'autres données que les plateformes utilisent pour la vérification. Si vous voyez des paramètres suspects dans les requêtes vers Facebook Ads ou TikTok — c'est le premier pas pour comprendre pourquoi le compte est banni.

Outils d'analyse : Breakpoints, Rewrite et Map Local

Charles n'est pas seulement un visualiseur de trafic, mais aussi un puissant outil de modification. Trois outils clés qui sont utilisés le plus souvent :

Breakpoints — points d'arrêt

Les Breakpoints permettent d'intercepter une requête ou une réponse au moment de son passage et de modifier manuellement les données avant qu'elles n'atteignent le destinataire. C'est un outil puissant pour les tests : vous pouvez modifier les paramètres de la requête, substituer un autre token ou modifier la réponse du serveur.

Pour définir un Breakpoint : cliquez avec le bouton droit sur la requête dans la liste → Breakpoint. Maintenant, lors de la prochaine demande de l'application à cette URL, Charles suspendra le transfert et ouvrira une fenêtre d'édition. Vous pouvez modifier n'importe quel paramètre et cliquer sur Exécuter pour continuer.

Rewrite — substitution automatique des données

Le Rewrite fonctionne automatiquement : vous définissez la règle « si la requête contient X — remplacez par Y », et Charles l'applique à toutes les requêtes correspondantes sans votre intervention. C'est pratique pour les tests en masse : par exemple, remplacer la valeur d'un en-tête spécifique dans toutes les requêtes vers un domaine particulier.

Configuration : Outils → Rewrite → Ajouter → donnez un nom à l'ensemble de règles → Ajouter une règle → spécifiez le type (En-tête, Corps, URL, etc.), ce qu'il faut rechercher et par quoi remplacer.

Map Local — substitution de la réponse par un fichier local

Map Local permet de remplacer la réponse du serveur par le contenu d'un fichier local. C'est indispensable pour tester des applications sans backend réel : vous créez un fichier JSON avec les données nécessaires, et l'application les reçoit au lieu de la réponse réelle de l'API.

Configuration : Outils → Map Local → Ajouter → spécifiez l'URL à intercepter et le chemin vers le fichier local. Maintenant, chaque requête vers cette URL renverra le contenu de votre fichier. Cela permet de tester des cas limites : liste de produits vide, erreur serveur 500, format de données non standard.

Outil Quand l'utiliser Difficulté
Breakpoints Modification manuelle ponctuelle de la requête/réponse Faible
Rewrite Remplacement automatique selon les règles Moyenne
Map Local Remplacement de la réponse API par un fichier local Faible
Map Remote Redirection de la requête vers un autre serveur Moyenne
Throttle Simulation d'une connexion lente Faible

Comment connecter un serveur proxy externe via Charles

Charles Proxy peut fonctionner non seulement comme un intercepteur local, mais aussi comme un maillon intermédiaire entre l'appareil et un serveur proxy externe. Cela est particulièrement utile lorsque vous devez analyser le trafic tout en le dirigeant vers une adresse IP spécifique — par exemple, pour vérifier comment l'application se comporte lorsqu'elle est connectée depuis un autre pays ou via une IP mobile.

Ce schéma ressemble à ceci : Smartphone → Charles Proxy (ordinateur) → Serveur proxy externe → Internet. Vous voyez tout le trafic dans Charles, mais les requêtes passent par l'IP souhaitée.

Configuration du proxy externe dans Charles

  1. Ouvrez Proxy → Paramètres du proxy externe
  2. Cochez la case Utiliser des serveurs proxy externes
  3. Pour le trafic HTTP : activez Web Proxy (HTTP), entrez l'hôte et le port du proxy
  4. Pour le trafic HTTPS : activez Secure Web Proxy (HTTPS), entrez les mêmes données
  5. Si le proxy nécessite une authentification — entrez le nom d'utilisateur et le mot de passe
  6. Cliquez sur OK

Charles prend en charge les proxies HTTP et SOCKS5. Pour SOCKS5, utilisez l'onglet SOCKS Proxy dans les mêmes paramètres. Si vous travaillez avec des proxies résidentiels avec rotation IP — chaque nouvelle requête passera par une adresse différente, ce qui est pratique pour tester le comportement des plateformes lors du changement d'IP.

Exceptions pour le trafic local

Si vous souhaitez que certaines parties du trafic passent directement (sans proxy externe), ajoutez des exceptions dans le champ Bypass external proxies for the following hosts. Par exemple, les adresses locales localhost et 127.0.0.1 doivent généralement être exclues pour ne pas perturber les services locaux.

Quand un proxy externe est nécessaire dans Charles :

  • Test de la géolocalisation de l'application (comment elle se comporte depuis les États-Unis, l'Allemagne, le Brésil)
  • Vérification de la disponibilité du contenu dans différentes régions
  • Analyse des requêtes lors de l'utilisation de proxies mobiles — pour comprendre comment la plateforme réagit à une IP mobile
  • Contourner les blocages régionaux lors des tests

Scénarios pratiques : arbitrage, SMM et tests d'applications

Examinons des tâches spécifiques pour lesquelles Charles Proxy est utilisé dans le travail réel — sans théorie superflue.

Scénario 1. Arbitrage — analyse du fingerprint de Facebook Ads

L'un des principaux objectifs d'un arbitragiste est de comprendre pourquoi Facebook bannit des comptes immédiatement après la connexion. Charles permet d'intercepter les premières requêtes de l'application Facebook lors de l'authentification et de voir quelles données sur l'appareil sont transmises aux serveurs de Meta.

Dans les requêtes vers graph.facebook.com, vous verrez des paramètres comme device_id, hardware_id, advertiser_id et d'autres identifiants. Cela aidera à comprendre quelles données doivent être isolées dans des navigateurs anti-détection comme Dolphin Anty ou AdsPower lors de l'utilisation de plusieurs comptes.

Il est également utile d'intercepter la réponse du serveur lors d'un bannissement — elle contient généralement un code d'erreur et parfois la raison du blocage, que Facebook ne montre pas dans l'interface de l'application.

Scénario 2. SMM — étude de l'API Instagram et TikTok

Les spécialistes SMM qui gèrent 10 à 50 comptes clients sont souvent confrontés aux limites des plateformes : Instagram limite le nombre de likes, d'abonnements et de commentaires par heure. Charles permet de mesurer précisément ces limites en interceptant les requêtes lors de l'utilisation manuelle du compte.

En interceptant les requêtes vers i.instagram.com, vous verrez la structure de l'API : les points de terminaison, les paramètres, les tokens d'autorisation. Cela aide à configurer l'automatisation de manière à imiter le comportement d'un utilisateur réel et à ne pas être bloqué. Cela fonctionne de la même manière avec TikTok — l'analyse des requêtes vers api16-normal-c-useast1a.tiktokv.com montre quels paramètres la plateforme vérifie.

Scénario 3. E-commerce — analyse de l'API des marketplaces

Les vendeurs sur Wildberries, Ozon et Avito utilisent activement le suivi des prix des concurrents. Charles permet d'intercepter les requêtes de l'application mobile du marketplace et de voir par quels points de terminaison les données sur les prix et les stocks sont chargées. Cela aide à configurer un parser qui imite le comportement de l'application mobile — ces requêtes passent beaucoup plus facilement que les requêtes d'un parser de navigateur.

Par exemple, dans l'application Wildberries, vous pouvez intercepter les requêtes vers catalog.wb.ru et voir la structure exacte des paramètres de filtrage et de pagination. Cela fournit un modèle prêt à l'emploi pour construire un parser qui contournera la protection beaucoup plus efficacement que les tentatives de reproduire les requêtes de navigateur. Pour un parsing stable, des proxies de datacenter avec une vitesse élevée et une stabilité de connexion seront nécessaires.

Scénario 4. Tests QA des applications mobiles

Les testeurs utilisent Charles pour vérifier le comportement de l'application dans des situations non standards. Avec Map Local, vous pouvez remplacer la réponse du serveur par une erreur 500 et vérifier comment l'application gère la panne du backend. Throttle permet de simuler une connexion lente (3G, Edge) et de vérifier si l'application se bloque lors d'un long chargement. Les Breakpoints permettent de modifier manuellement les données et de vérifier les cas limites — par exemple, que se passe-t-il si le serveur renvoie un tableau vide au lieu d'une liste de produits.

Problèmes courants et leurs solutions

Lors de l'utilisation de Charles Proxy, les débutants rencontrent régulièrement les mêmes problèmes. Examinons les plus courants.

Problème 1 : Charles affiche « unknown » au lieu du contenu des requêtes HTTPS

Raison : Le SSL Proxying n'est pas activé ou le certificat n'est pas installé sur l'appareil.
Solution : Vérifiez que dans Proxy → Paramètres de SSL Proxying, le SSL Proxying est activé et que l'hôte *:443 est ajouté. Assurez-vous que le certificat Charles est installé sur l'appareil et qu'il a été entièrement approuvé (sur iOS — via les paramètres de confiance des certificats).

Problème 2 : Le trafic n'est pas intercepté, la liste des requêtes est vide

Raison : L'appareil ne dirige pas le trafic via Charles, ou Charles n'accepte pas les connexions.
Solution : Vérifiez que l'appareil et l'ordinateur sont sur le même réseau Wi-Fi. Assurez-vous que les paramètres du proxy sur l'appareil indiquent la bonne IP de l'ordinateur et le port 8888. Vérifiez que Charles est en mode d'enregistrement : Proxy → Démarrer l'enregistrement (ou le bouton avec le point rouge dans la barre d'outils).

Problème 3 : L'application ne fonctionne pas lorsque Charles est activé

Raison : L'application utilise le Certificate Pinning — elle vérifie non seulement la chaîne de confiance, mais aussi le certificat spécifique du serveur. Le certificat Charles ne correspond pas à celui attendu.
Solution pour Android avec root : Installez le module Magisk TrustUserCerts ou utilisez Frida pour contourner le SSL Pinning. Pour iOS avec jailbreak — SSL Kill Switch 2. Sans root/jailbreak, contourner le Certificate Pinning est extrêmement difficile.

Problème 4 : Charles intercepte trop de trafic, l'interface est lente

Raison : Tout le trafic de toutes les applications sur l'appareil est enregistré, y compris les services système.
Solution : Utilisez le filtrage. Dans le champ Filtre (en bas du panneau gauche), entrez le domaine du service qui vous intéresse. Ou configurez le contrôle d'accès dans Proxy → Paramètres de contrôle d'accès, afin que Charles n'accepte les connexions que de certaines applications via Proxy → Paramètres d'enregistrement → Inclure/Exclure.

Problème 5 : Internet ne fonctionne pas après la fermeture de Charles

Raison : Des paramètres de proxy sont restés sur l'appareil, mais Charles n'est plus lancé — le trafic n'a nulle part où aller.
Solution : Supprimez toujours les paramètres de proxy sur l'appareil après avoir terminé votre travail avec Charles. Remettez le paramètre proxy sur « Aucun » ou « Désactivé » dans les paramètres Wi-Fi.

Problème Solution rapide
HTTPS affiche « unknown » Activer le SSL Proxying + installer le certificat
Liste des requêtes vide Vérifier l'IP, le port et que Charles est en mode d'enregistrement
L'application ne s'ouvre pas Certificate Pinning — besoin de root/jailbreak
L'interface est lente Ajouter un filtre par domaine dans le champ Filtre
Pas d'internet après la fermeture Supprimer les paramètres de proxy sur l'appareil

Conclusion

Charles Proxy est l'un des outils les plus utiles pour tous ceux qui travaillent avec des applications mobiles : que ce soit un arbitragiste qui souhaite comprendre les mécanismes de vérification de Facebook Ads, un spécialiste SMM étudiant l'API Instagram, ou un développeur testant le comportement de son application dans des conditions non standards. L'installation prend 15 à 20 minutes, et les possibilités qui s'ouvrent après la configuration sont difficiles à surestimer.

La chose principale à retenir : Charles est un outil d'analyse et de débogage, et non d'anonymisation. Pour travailler avec plusieurs comptes, tester depuis différentes géolocalisations ou contourner les restrictions des plateformes, un niveau de protection distinct est nécessaire — des serveurs proxy avec de vraies adresses IP.

Si vous analysez le trafic des applications mobiles pour l'arbitrage ou le travail avec des comptes sur les réseaux sociaux, nous vous recommandons de combiner Charles avec des proxies résidentiels — ils fournissent de vraies IP d'utilisateurs domestiques, ce qui minimise le risque de blocages lors des tests et du travail avec des comptes. Pour des tâches où la vitesse et la stabilité sont importantes — par exemple, le parsing massif des API des marketplaces — des proxies de datacenter avec un temps de disponibilité élevé seront appropriés.

```