vendredi 25 septembre 2026

À propos

Contact

Outils & workflow

mitmproxy pour inspecter les appels sortants d’un WordPress en développement

Une extension appelle une API tierce et le comportement semble incohérent : intercepter et lire ces requêtes sortantes en local, sans deviner.

Par Clément Hadrot • 12 juillet 2022 • 4 min de lecture • Aucun commentaire
mitmproxy pour inspecter les appels sortants d'un WordPress en développement

Une extension WordPress tierce appelle une API de paiement, de synchronisation CRM ou de service de messagerie, et le résultat observé ne correspond pas à ce que la documentation de l’API laisse attendre. Sans visibilité sur ce qui part réellement du serveur, il ne reste que la spéculation : ajouter des error_log à des endroits choisis au hasard, espérer tomber sur la bonne ligne de code. mitmproxy propose une approche plus directe : intercepter physiquement chaque requête HTTP sortante du serveur de développement, avant qu’elle n’atteigne réellement le service distant, et en lire le contenu exact.

Ce n’est pas un outil de débogage PHP comme Xdebug : mitmproxy travaille au niveau réseau, entre le serveur WordPress et le monde extérieur, ce qui le rend utile indépendamment du langage ou de la bibliothèque HTTP utilisée par l’extension pour émettre ses appels.

Installer et lancer mitmproxy

pip install mitmproxy
mitmproxy --listen-port 8888

Cette commande démarre une interface en mode terminal listant chaque requête interceptée en temps réel. Une variante web, mitmweb, propose la même chose dans une interface de navigateur, plus confortable pour parcourir un historique de requêtes avec de longs corps JSON.

Rediriger le trafic sortant de WordPress vers le proxy

L'essentiel à retenir : Intercepte les requêtes HTTP sortantes, pas seulement entrantes ; Lecture claire du corps et des en-têtes échangés ; Fonctionne même en HTTPS avec un certificat local

Sur un environnement de développement local, la variable d’environnement http_proxy et https_proxy peut être positionnée pour le processus PHP-FPM, ou WordPress peut être configuré pour passer par le proxy via les constantes dédiées aux requêtes HTTP internes :

define( 'WP_PROXY_HOST', '127.0.0.1' );
define( 'WP_PROXY_PORT', '8888' );
define( 'WP_PROXY_BYPASS_HOSTS', 'localhost' );

Ces constantes s’appuient sur la classe interne WP_Http, utilisée par toutes les fonctions de requêtes HTTP de WordPress comme wp_remote_get() et wp_remote_post(). Toute extension qui utilise ces fonctions natives plutôt que cURL directement voit donc son trafic redirigé sans modification de son propre code.

Gérer le certificat HTTPS local

La plupart des API modernes exigent HTTPS, ce qui pose un problème d’interception classique : mitmproxy résout ce point en générant sa propre autorité de certification locale, à installer une seule fois sur la machine de développement :

# Après le premier lancement de mitmproxy
open ~/.mitmproxy/mitmproxy-ca-cert.pem
# Puis ajouter ce certificat aux autorités de confiance du système

Une fois ce certificat approuvé par le système d’exploitation, mitmproxy peut déchiffrer et afficher en clair le contenu des requêtes HTTPS, alors même qu’elles restent chiffrées de bout en bout vis-à-vis de tout autre observateur du réseau.

Lire une requête interceptée

Une fois une requête sélectionnée dans l’interface, mitmproxy affiche les en-têtes, le corps de la requête et celui de la réponse, dans un format lisible :

POST /v1/transactions HTTP/1.1
Host: api.paiement-exemple.com
Content-Type: application/json
Authorization: Bearer sk_test_...

{"amount": 4200, "currency": "eur", "customer": "cus_abc123"}

Dans un cas réel de débogage, on découvre parfois que l’extension envoie un montant mal converti (en euros au lieu de centimes), une clé d’API de test au lieu de production, ou un en-tête d’authentification manquant : autant de détails invisibles depuis l’interface WordPress elle-même, mais évidents une fois la requête brute affichée.

Points de vigilance

  • mitmproxy affiche des données potentiellement sensibles (clés d’API, jetons d’authentification) : à réserver strictement à un environnement de développement, jamais à activer sur un site en production.
  • Le certificat d’autorité local doit être retiré des autorités de confiance une fois l’usage terminé, pour éviter de laisser une porte d’interception active sur la machine.
  • Certaines bibliothèques HTTP dans des extensions n’utilisent pas les constantes WP_PROXY_* et nécessitent une configuration système du proxy plus large pour être interceptées.

Face à un comportement d’extension tierce inexplicable, la première question à se poser est toujours : qu’envoie-t-elle réellement, et pas seulement ce que sa documentation prétend envoyer.

En résumé

mitmproxy comble un angle mort que les outils de débogage PHP classiques ne couvrent pas : la vérité du contenu réseau échangé avec un service tiers. Pour diagnostiquer une extension qui communique mal avec une API externe, il évite les hypothèses et affiche directement ce qui part et ce qui revient, en clair, même en HTTPS.

Partager :

À propos de l'auteur

Clément Hadrot

Développeur WordPress, passionné par Elementor, le FSE et l’automatisation par IA.

Voir tous ses articles

Dans la même veine

À lire aussi