Prise en main d’ApiCatcher
ApiCatcher capture, affiche et analyse le trafic HTTP/HTTPS et WebSocket d’une application, en local.
Cette page couvre le quotidien : certificats, filtres, historique, exports et documentation d’API. Réécriture, scripts, rejeu combiné et le reste sont dans les documents ci-dessous.
Pour aller plus loin :
- Réécriture et scripts
- Guide des scripts
- CA personnalisée
- Décodage Protobuf
- Rejeu combiné
- Tâches planifiées
- Synchronisation temps réel
- Synchronisation cloud
Sommaire
- Certificats
- Filtres de trafic
- Sessions de capture et recherche
- Trouver un Cookie
- Exporter HAR, fichiers et une requête
- Documentation d’API générée
- API Scan
1. Certificats
1.1 Installer et faire confiance au certificat CA (indispensable pour HTTPS)
La plupart des échanges passent en HTTPS. Par défaut, ApiCatcher ne capture pas le HTTPS : sans certificat, rien n’est déchiffrable, donc rien d’utile à inspecter. Installez le CA et accordez-lui une confiance complète avant de capturer du HTTPS.
Deux façons de configurer un certificat :
- Utiliser le CA généré par ApiCatcher (recommandé dans la majorité des cas). Suivez les étapes ci-dessous.
- Importer le vôtre (certificat d’entreprise). Passez à 1.2.
CA par défaut :
- Touchez Installer le certificat dans l’app. iOS ouvre Safari et télécharge un profil de configuration.
- Allez dans Réglages → Général → VPN et gestion de l’appareil et installez le profil ApiCatcher.
- Puis Réglages → Général → Informations → Réglages des certificats, trouvez le certificat dont le nom commence par
ApiCatcher CA, et activez la confiance complète.
Si ça coince
- Timeouts ou codes de statut bizarres : en général, l’étape 3 n’a pas été faite.
- Après une suppression / réinstallation de l’app, l’ancien profil ne sert plus. Supprimez-le dans Réglages et recommencez.
1.2 Certificats d’entreprise
Certaines applis internes ne font confiance qu’au CA de l’entreprise.
- Rôle : importer un
.pemou.p12fourni par l’orga et le lier à des hôtes internes (par ex.*.corp.internal) pour que la poignée TLS locale aboutisse. - À noter : importez ou modifiez pendant que la capture est arrêtée, puis relancez.
1.3 Certificat auto-signé
Sans CA d’entreprise, et si vous ne voulez pas celui d’ApiCatcher, importez le vôtre via le même flux « certificat d’entreprise ». Voir CA personnalisée.
2. Filtres de trafic
Système et applis en arrière-plan font beaucoup de bruit. Les filtres décident ce qui est enregistré.
- Liste noire : les hôtes correspondants ne sont pas enregistrés. Liste blanche vide = tout le reste est enregistré.
- Liste blanche : dès qu’elle contient une règle, seules les requêtes correspondantes sont enregistrées.
- Joker :
*fonctionne.*.example-api.comcouvre les sous-domaines de test de cet hôte.
Si ça coince
- Trafic manquant : l’hôte est peut-être en liste noire, ou la liste blanche est active sans cet hôte.
- Utilisez une étoile simple (
*.api.com). Pas d’expressions régulières ici.
3. Sessions de capture et recherche
Listes noire / blanche : ce qui est stocké. Ensuite, sur Historique, Session et recherche restreignent ce qui a déjà été capturé.
3.1 Session de capture
Une session = une passe de capture VPN. L’interface l’affiche par l’heure de début (yyyy-MM-dd HH:mm:ss). Pas de nom libre.
Démarrer la capture VPN crée une session. L’arrêt écrit l’heure de fin et le nombre de requêtes. Zéro requête = la session est supprimée. Pendant la capture, la fin affiche Capturing....
Le filtre Session de l’historique peut figer une passe ou afficher Tout. Le sélecteur montre aussi la plage, la durée, le nombre de requêtes et jusqu’à cinq hôtes vus. Supprimer une session enlève ses enregistrements.
3.2 Filtres
La barre de filtres de l’historique se configure. Configurer les filtres choisit les pastilles ; Réinitialiser les filtres les vide.
| Filtre | Correspondance |
|---|---|
| Session | Une passe, ou toutes |
| Host | Hôte exact |
| App (UA) | Nom d’app extrait du User-Agent, correspondance exacte |
| Méthode | GET / POST / PUT / DELETE / PATCH / OPTIONS / HEAD |
| Schéma | HTTP / HTTPS / WS / WSS |
| Type | Tous, HTML, JSON, XML, image, vidéo, audio, Protobuf (Content-Type) |
| Statut | 1xx–5xx, plus Sans réponse |
| Temps | 15 dernières minutes, dernière heure, aujourd’hui, 7 derniers jours, 30 derniers jours, plage perso |
3.3 Recherche par mot-clé
Le champ cherche dans URL par défaut (placeholder : Search url...). Sous-chaîne, insensible à la casse. Ni regex, ni AND / OR.
Changez la cible via Historique … → Changer la cible de recherche :
| Cible | Zone |
|---|---|
| URL | URL de la requête |
| En-têtes de requête | Noms ou valeurs |
| En-têtes de réponse | Noms ou valeurs |
| Body de requête | Texte du corps |
| Body de réponse | Texte du corps |
La recherche dans le body ne lit que les Content-Type texte (HTML / XML / JSON / texte brut / form-urlencoded / form-data). Images, vidéo et autres binaires sont ignorés.
4. Trouver un Cookie
Trouver un Cookie lit l’en-tête Cookie de la dernière requête vers un hôte. Pas de Set-Cookie, pas de fusion entre requêtes.
- Ouvrez Historique.
- En haut à droite … → Trouver un Cookie.
- Saisissez un Host (obligatoire ; liste déjà capturée ou saisie libre).
- Session optionnelle. Vide = toutes les sessions.
- Touchez Rechercher le Cookie.
Trouvé : Cookie récent et les paires. Sinon : Aucune requête avec Cookie.
5. Exporter HAR, fichiers et une requête
5.1 Export HAR
Fichier HAR 1.2 JSON, ouvrable dans Charles, Fiddler, Burp, etc. Nom du type apicatcher-export-yyyyMMddHHmmss.har.
| Entrée | Contenu | Suit les filtres en cours |
|---|---|---|
| Historique Exporter en HAR | Toutes les requêtes du résultat filtré (pas seulement la page visible) | Oui (Session, Host, temps, méthode, type, statut, mot-clé — comme la liste) |
| Sélection multiple puis partager / exporter | Requêtes cochées seulement | Non |
| Dossier de favoris → export HAR | Requêtes de ce dossier | Non |
L’UI indique : Total requests to export: N. You can modify filters to change the requests to export. Ne quittez pas la page pendant l’export.
5.2 Images / vidéo / audio
Depuis Historique, gestion des fichiers (icône dossier).
- Trois familles : Image, Vidéo, Audio.
- Restreindre par Session et Host.
- Les morceaux
Range/Content-Rangesont fusionnés avant export. - Un fichier isolé, ou un ZIP groupé par hôte.
Dans le détail d’une requête, Exporter le fichier sur le corps requête / réponse ; le type suit le Content-Type.
5.3 Une seule requête
Dans le détail, Exporter la requête :
- Raw : HTTP brut requête + réponse (
.txt) - cURL : commande rejouable en terminal (
.sh) - Markdown : aperçu Markdown (
.md)
6. Documentation d’API générée
Dès qu’une requête HTTP/HTTPS éligible est capturée, l’app crée ou met à jour la doc en local, groupée par Host. Si le même endpoint revient, seuls les champs encore absents sont ajoutés ; les noms déjà là ne sont pas écrasés.
6.1 Périmètre et fusion
Uniquement les HTTP/HTTPS avec une réponse et un statut hors 301–308. Content-Type de requête JSON / XML / multipart/form-data / x-www-form-urlencoded, ou réponse JSON / XML. Images, vidéo, HTML, texte brut : ignorés.
Une requête modifiée par une règle de réécriture ou un script n’entre pas dans la doc. Clé : méthode + host + path (ex. GET + api.example.com + /v1/user).
Règles de fusion :
- Query, Header, Body : ajouter les noms manquants seulement.
- Exemple de body : mis à jour seulement si cette réponse est 200.
- Cookie, User-Agent et autres en-têtes standard courants restent hors paramètres. Authorization, Content-Type et en-têtes custom sont conservés.
6.2 Export vers Postman / Apifox / Bruno
Où partir :
- Export depuis la liste d’API d’un Host (tous les endpoints de cet hôte).
- Export depuis le détail d’une API (cet endpoint seul).
- Réglages → API favorites → Exporter pour les favoris uniquement.
| Cible | Comment |
|---|---|
| Exporter vers Postman | Clé API Postman → charger un Workspace → créer une Collection ou en choisir une |
| Exporter vers Apifox | Clé API Apifox et ID projet ; ID dossier optionnel (vide = racine) |
| Exporter vers Bruno | ZIP avec bruno.json et .bru ; Open Collection dans Bruno |
Captures d’écran pas à pas :
- Comment exporter les requêtes HTTPS capturées vers Postman
- Comment exporter les requêtes HTTPS capturées vers Apifox
7. API Scan
API Scan relit le trafic déjà capturé : qualité, fuites évidentes, latence. Tout reste sur l’appareil.
7.1 Moteurs intégrés
- Données sensibles : téléphone, numéro d’identité, e-mail, identifiants cloud (clé AWS, clé OpenAI) en clair.
- Stacks : traces Java, Python ou SQL oubliées dans un corps de réponse.
- Appels trop fréquents : intervalle moyen sous un seuil que vous fixez — souvent une boucle ou un retry mal parti.
- Latence : p95 / p99 par endpoint.
7.2 Custom Scan
Un script JS pour vos règles métier.
nullsi la requête est saine. Sinon une note courte (≤200 caractères) : trop gros body, en-tête de sécu manquant, etc. Elle entre dans le rapport.
Si ça coince
- Résultat vide : le périmètre (Host / Session) contient-il vraiment du JSON/API, ou seulement des statiques ? Chaque passe a un plafond d’enregistrements.