curl : comprendre et utiliser cet outil
Auteur : Rédaction Domeny.ForSale Publié le
En bref : curl est un outil en ligne de commande qui permet de transférer des données entre un ordinateur et un serveur. Il sert notamment à télécharger un fichier, à vérifier la réponse d’un site et à envoyer des données à une API, une interface permettant à des programmes de communiquer entre eux. Il fonctionne sans navigateur graphique, ce qui le rend utile pour le diagnostic et l’automatisation.
À quoi sert curl et en quoi diffère-t-il d’un navigateur ?
curl s’exécute dans un terminal : vous saisissez une commande, une adresse et, si nécessaire, des paramètres qui définissent son comportement. L’outil prend en charge différents protocoles de communication, dont HTTP et HTTPS, utilisés par les sites web. En pratique, il sert souvent à tester des services web et à interagir avec des API.
Un navigateur télécharge la page, interprète son code et affiche son interface. Par défaut, curl affiche les données reçues dans le terminal : par exemple, du code HTML ou une réponse au format JSON, un format de données textuel utilisé par de nombreuses API. Il n’exécute pas de JavaScript et n’effectue pas le rendu de la page. Il ne remplace donc pas les tests de son apparence et de son fonctionnement dans un navigateur.
Par exemple, si un formulaire sur un site ne fonctionne pas, curl peut aider à vérifier si le serveur accepte la requête et comment il y répond. En revanche, il ne permet pas de savoir si le bouton du formulaire est correctement relié au code JavaScript.
curl est associé à la bibliothèque libcurl, que les développeurs peuvent utiliser dans leurs propres applications. La commande curl est un programme prêt à l’emploi ; libcurl est un ensemble de fonctions permettant de créer des logiciels qui transfèrent des données.
Comment vérifier la disponibilité de l’outil et envoyer une première requête ?
Ouvrez un terminal et saisissez :
curl --version
Si curl est disponible, vous verrez son numéro de version et des informations sur les fonctionnalités prises en charge. Si le système ne reconnaît pas la commande, installez l’outil avec le gestionnaire de paquets de votre système ou en suivant les instructions officielles du projet curl. Les protocoles et les options disponibles peuvent dépendre de la version et de la manière dont le programme a été compilé.
Dans certains environnements anciens de Windows PowerShell, le nom curl peut désigner une autre commande. Dans ce cas, utilisez curl.exe pour appeler le bon programme.
Voici la forme la plus simple d’une requête :
curl https://example.com
Pour une adresse HTTP ou HTTPS, curl envoie par défaut une requête GET, c’est-à-dire une demande de récupération d’une ressource. Il écrit la réponse sur la sortie standard, généralement dans le terminal. Placez entre guillemets les adresses contenant des caractères spéciaux, comme &, afin que le shell ne les interprète pas comme des éléments de sa propre syntaxe.
Comment vérifier les en-têtes et les redirections ?
Les en-têtes HTTP sont des informations qui accompagnent une requête ou une réponse, par exemple le type de contenu transféré et les instructions de mise en cache. Pour demander au serveur uniquement les en-têtes de la réponse, utilisez :
curl -I https://example.com
L’option -I envoie une requête HEAD. Tous les serveurs ne la traitent pas de la même manière qu’une requête GET. Si vous souhaitez voir les en-têtes de la réponse à une requête normale de récupération de page, ainsi que son contenu, utilisez -i.
Par défaut, curl ne suit pas les redirections HTTP. L’option -L permet de suivre l’adresse indiquée par le serveur :
curl -i -L https://example.com
Le code 200 indique généralement une réponse réussie, 404 l’absence de la ressource et 500 une erreur côté serveur. Le code seul ne prouve toutefois pas que la page fonctionne correctement : une réponse 200 peut contenir un message signalant un problème plutôt que les données attendues.
Pour un diagnostic plus précis, utilisez -v, qui affiche notamment les détails de la connexion et les en-têtes échangés. Avant de partager cette trace, supprimez les jetons, les cookies et toute autre information confidentielle.
Comment télécharger un fichier et envoyer des données à une API ?
Pour enregistrer la réponse dans un fichier plutôt que de l’afficher dans le terminal, utilisez l’option -o :
curl -f -L -o document.pdf https://example.com/dokument.pdf
Il s’agit d’un exemple de syntaxe : le fichier indiqué n’existe pas nécessairement. -o définit le nom du fichier local, -L suit les redirections et -f signale une erreur lorsque les réponses HTTP indiquent un échec, généralement à partir du code 400. Sans -f, curl peut se terminer avec succès même s’il a reçu une page d’erreur. L’enregistrement dans un fichier existant peut écraser son contenu.
L’envoi de données à une API peut prendre cette forme :
curl -i https://api.example.com/items -H "Content-Type: application/json" --data '{"name":"test"}'
L’option -H ajoute un en-tête, tandis que --data fournit le corps de la requête et sélectionne par défaut la méthode POST, souvent utilisée pour envoyer des données. Cet exemple suppose un terminal compatible avec la syntaxe du shell Bash ; les règles d’utilisation des guillemets peuvent être différentes sous Windows. Consultez la documentation de l’API concernée pour connaître l’adresse réelle, les champs requis et la méthode d’authentification.
Comment utiliser curl en toute sécurité ?
curl peut non seulement lire des données, mais aussi effectuer des opérations qui modifient l’état d’un service. Avant d’exécuter une commande fournie par quelqu’un d’autre, vérifiez l’adresse de destination, les données envoyées et les options. Un appel à une API peut créer un enregistrement, supprimer une ressource ou déclencher une opération payante.
N’utilisez pas systématiquement l’option -k ou --insecure : elle désactive la vérification du certificat TLS, qui aide à confirmer l’identité du serveur. Mieux vaut comprendre une erreur de certificat que la masquer. N’exécutez pas non plus un script téléchargé sans en vérifier le contenu, surtout avec une commande qui relie directement curl au shell.
Pour commencer, récupérez une ressource publique avec curl -i et examinez le code de réponse ainsi que les en-têtes. Passez ensuite seulement aux requêtes qui envoient des données.
Voir aussi : Qu’est-ce qu’une API ?
