Comment ApiCatcher capture les fichiers volumineux via HTTP
J'ai essayé de nombreux outils de capture HTTPS pour iOS, et aucun ne prend en charge la capture de fichiers statiques — ou plus précisément, ils abandonnent les requêtes dès que le corps dépasse un certain seuil. Il m'est parfois arrivé de vouloir diagnostiquer un problème de permission de téléchargement en capturant l'URL complète pour identifier le domaine et le projet concernés, sans pouvoir y parvenir.
En développant ApiCatcher, nous avons découvert qu'iOS impose une limite mémoire aux processus d'extension réseau. D'après diverses sources, le système plafonne ces processus à environ 50 Mo de mémoire ; au-delà, le processus est tué. Ce seuil peut toutefois varier selon la version du système — lors de nos tests, le processus continuait de fonctionner normalement jusqu'à environ 80 Mo.
À cause de cette contrainte, la plupart des outils de capture implémentent leur propre stratégie d'abandon des paquets, rejetant les requêtes dont le corps dépasse une certaine taille.
Comment ApiCatcher résout-il ce problème ?
L'astuce est que les fichiers statiques n'ont généralement pas besoin de réécriture du corps ni de modification par script. Il n'est donc pas nécessaire de stocker leur contenu en mémoire. ApiCatcher écrit plutôt les données directement sur disque : les octets lus depuis le tampon de réception sont immédiatement écrits dans un fichier, sans mise en mémoire tampon.
Un détail important : les charges utiles HTTP volumineuses sont fragmentées au niveau TCP. Un transfert de fichier de 1 Mo peut arriver en segments TCP de 64 Ko. En écrivant chaque segment sur disque dès son arrivée, seuls 64 Ko de mémoire sont consommés à tout moment — pas le fichier entier. Une fois la requête ou la réponse terminée, le chemin du fichier est stocké dans la base de données à la place du contenu brut.
Le compromis est que lors de la suppression des enregistrements, nous devons localiser et supprimer les fichiers de corps correspondants, ce qui nécessite de gérer nous-mêmes la cohérence des données. C'est pourquoi la suppression dans ApiCatcher est légèrement plus lente — les enregistrements sont supprimés un par un. Mais nous pensons que ce compromis en vaut la peine : la suppression n'est pas une opération fréquente, et même 10 000 enregistrements peuvent être effacés en environ 5 secondes.
Au-delà de la capture de fichiers volumineux, ApiCatcher va plus loin en affichant les images, vidéos et audio directement dans l'application, avec lecture en un clic. Nous avons également créé des pages dédiées de prévisualisation et d'export par lot pour faciliter l'extraction des ressources de test.
Nous appliquons la même approche d'écriture directe sur disque sur iOS, Windows et macOS — même si les plateformes de bureau n'ont pas les mêmes contraintes mémoire, cette conception offre de meilleures performances partout.
Capture d'écran ApiCatcher for iOS :

Capture d'écran ApiCatcher for macOS :
