Comment commencer à utiliser Curl et pourquoi: une introduction pratique

Qu'il s'agisse de tester la sortie d'une API avant de la déployer en production, ou simplement de récupérer une réponse d'un site Web (par exemple, pour vérifier qu'elle n'est pas en panne), Curl est pratiquement omniprésent.

En tant que Data Scientist, j'ai dû l'utiliser de temps en temps. Cependant, le plus souvent, j'ai fini par simplement remplacer les paramètres d'une commande curl copiée et collée qui faisait le tour du canal Slack de mon équipe.

J'ai décidé que je devais mieux comprendre cet outil puissant si je voulais l'utiliser à son plein potentiel, et maintenant je suis ici pour partager certaines des choses les plus intéressantes que j'ai trouvées dans ce didacticiel curl.

Si vous avez des conseils ou des astuces que vous souhaitez ajouter, veuillez le faire dans les commentaires, car ma compréhension de cet outil en est encore à ses débuts.

Curl: A quoi ça sert?

Curl est un outil en ligne de commande qui nous permet de faire des requêtes HTTP à partir du shell. Il couvre également de nombreux autres protocoles, comme FTP, bien qu'ils dépassent le cadre de ce didacticiel.

Son nom signifie «URL client», et il a été développé par le développeur suédois Daniel Stenberg. C'est un projet open source, et son code peut être trouvé ici, au cas où vous auriez envie de contribuer.

Vous pouvez l'invoquer depuis votre terminal préféré, et il est généralement pré-installé dans les systèmes d'exploitation Linux. Sinon, il peut normalement être téléchargé via apt-get sur Linux et brasser sur Mac.

Appel d'une méthode GET

Dans sa forme la plus basique, une commande curl ressemblera à ceci:

curl //www.dataden.tech

Le comportement par défaut de curl est d'appeler une méthode HTTP GET sur l'URL donnée. De cette façon, la sortie du programme pour cette commande sera le corps entier de la réponse HTTP (dans ce cas, HTML) que le site renvoie sur un GET, qui sera écrit comme indiqué sur stdout .

Si vous souhaitez lire une réponse sans quitter le shell, je vous recommande au moins de la rediriger vers une commande moins , pour pouvoir faire défiler facilement la sortie.

Plusieurs fois, nous souhaitons diriger le contenu de la réponse dans un fichier. Ceci est fait avec l' argument -o , comme ceci:

curl -o output.html www.dataden.tech

ce qui équivaut à:

curl www.dataden.tech > output.html

En option, vous pouvez spécifier l'URL du site sur lequel vous souhaitez appeler curl avec un argument -s , comme ceci:

curl -s //www.dataden.tech

vous permettant de changer l'ordre de vos arguments.

Vous pouvez également utiliser –next pour spécifier plus d'une URL, bien que la documentation officielle conseille d'appeler à la place curl sur chaque URL dans une commande différente.

Faire un POST sur une URL

Parfois, vous voudrez tester si une API fonctionne correctement, et cela nécessitera généralement l'envoi d'arguments.

Nous le ferons généralement via la méthode POST, en passant du JSON avec tous les paramètres requis. Il existe de nombreuses façons de faire cela avec curl.

Vous pouvez transmettre les valeurs de vos arguments comme ceci:

curl --data "name=John&surname=Doe" //www.dataden.tech

Ou comme un JSON classique:

curl --data '{"name":"John","surname":"Doe"}' \//www.dataden.tech

L'utilisation de –data équivaut à l'utilisation de -d, et les deux modifieront automatiquement la méthode en POST. Cependant, nous pouvons également utiliser l' indicateur -X ( –request ) pour spécifier la méthode que nous voulons appeler:

curl -X "POST" \-d "name=John&surname=Doe" //www.example.com

Récupérer les en-têtes du site

Parfois, nous avons juste besoin de voir rapidement si le site est toujours actif, sans vraiment vouloir charger l'ensemble de la réponse, potentiellement lourde. D'autres fois, les en-têtes stockent des configurations importantes.

Ces deux cas d'utilisation sont également traités par curl. Nous pouvons utiliser le paramètre –include ( -i ) pour inclure les en-têtes, et –head ( -I -qui est un «i» majuscule) pour n'inclure que les en-têtes (appelant la méthode HEAD).

Définition de la valeur de votre agent utilisateur

Maintenant que j'ai couvert les bases, permettez-moi de vous expliquer certaines des choses les plus cool que j'ai trouvées que nous pouvons faire avec curl.

L' argument user-agent vous permet de spécifier les versions de périphérique et de navigateur que vous utilisez, au cas où cela rendrait le site différent.

Avec cela, vous pouvez voir la version mobile d'un site à partir de votre ordinateur portable, ou vice versa.

Du point de vue de la sécurité, cela soulève probablement des problèmes. Je ne savais pas à quel point il était facile de prétendre utiliser un appareil différent (sans même utiliser de machine virtuelle) jusqu'à présent, et en travaillant dans la prévention de la fraude, je peux voir pourquoi cela pourrait être un problème.

Cela dit, tant que vous l'utilisez pour de bon, c'est un moyen formidable de voir à quoi ressemble un site Web à partir d'une tablette, d'un appareil mobile ou d'un ordinateur portable, pour n'en nommer que quelques-uns.

Voici un exemple, tiré directement de la documentation officielle (bien que des listes d'agents utilisateurs soient facilement disponibles en ligne).

curl --user-agent "Mozilla/4.73 [en] (X11; U; Linux 2.2.15 i686)" www.example.com

Chronométrage d'une connexion avec Curl

Une autre raison pour laquelle j'ai commencé à en apprendre davantage sur curl était que je voulais voir combien de temps exactement il fallait à mon site Web pour répondre.

Bien que la documentation de base ne le couvre pas, un peu de recherche sur Google a découvert cette commande, que j'ai trouvée très utile:

curl -w "%{time_total}\n" -o /dev/null -s www.example.com

Cela affichera simplement le temps total nécessaire pour récupérer la réponse du domaine donné.

Plus généralement, l' argument -w (–write-out) prend une chaîne de formatage spéciale et remplit les mots-clés réservés avec différentes propriétés de la réponse, de manière formatée. Tous les mots-clés et leurs valeurs respectives sont disponibles dans la page de manuel de la commande.

Lectures complémentaires

Voici quelques liens que vous pourriez trouver intéressants, au cas où vous souhaiteriez en savoir plus sur ce vaste sujet:

  • Liste des agents utilisateurs Une compilation d'arguments d'agent utilisateur pour différents périphériques et navigateurs.
  • Documentation officielle de Curl.
  • Page de manuel de Curl.

De conclure

J'espère que vous avez trouvé cette introduction utile et que vous quittez ce tutoriel en connaissant au moins les bases de cette commande pratique.

Comme je l'ai déjà dit, j'apprends toujours aussi et j'apprécierai tout autre élément intéressant de connaissance sur l'utilisation du programme. Il en va de même pour tout commentaire sur ce que j'ai écrit jusqu'à présent.

Si j'ai fait des erreurs, ou s'il y a une partie que vous pensez que j'aurais pu formuler plus clairement, veuillez m'en informer.

J'espère que je vous reverrai bientôt, bon codage!

Suivez-moi sur Medium et Twitter pour me tenir au courant de mes tutoriels, astuces et articles. Pensez à partager cet article avec un ami développeur Web si vous l'avez aimé (ou comme moyen passif et agressif de lui dire d'apprendre le curl).

Publié à l'origine sur www.dataden.tech le 7 octobre 2018.