CURL : 16 exemples d’utilisation de la commande CURL

curl est un outil de transfert de données en ligne de commandes et terminal pour Linux ou Windows.
Il prend en charge les protocoles pris en charge (DICT, FILE, FTP, FTPS, GOPHER, HTTP, HTTPS, IMAP, IMAPS, LDAP, LDAPS, POP3, POP3S, RTMP, RTSP, SCP, SFTP, SMB, SMBS, SMTP, SMTPS, TELNET et TFTP).
curl offre une multitude d'astuces utiles telles que la prise en charge du proxy, l'authentification des utilisateurs, le téléchargement FTP, la publication HTTP, les connexions SSL, les cookies, la reprise du transfert de fichiers, Metalink, etc.

Elle est une commande pratique pour télécharger des fichiers, interroger un serveur WEB.
On peut l'utiliser autant pour récupérer des ressources que pour débugueur la configuration d'un serveur WEB.

Dans ce tutoriel, vous trouverez 16 exemples d'utilisation de la commande curl.

16 exemples d'utilisation de la commande curl

16 exemples d'utilisation de la commande Curl

Télécharger un fichier

Voici comment utiliser curl pour télécharger un fichier.
On utilise l'option -o pour spécifier le nom du fichier, on peut tout à fait spécifier un chemin complet.

curl –o monfichier.iso https://lesupersite.com/telecharger/fichier.iso

L'option -O donne la possibilité d'écrire la sortie dans un fichier local nommé comme le fichier distant que nous obtenons.
Le fichier sera enregistré dans le répertoire de travail actuel. Si vous voulez que le fichier soit enregistré dans un répertoire différent, assurez-vous de changer le répertoire de travail actuel avant d'appeler curl avec cette option.

curl -O https://lesupersite.com/telecharger/fichier.iso

Il existe beaucoup d'autres commandes sur Linux pour télécharger des fichiers depuis un terminal :

Télécharger plusieurs fichiers

Si vous spécifiez plusieurs URL de fichiers à télécharger, curl va les télécharger successivement.
Cela permet de télécharger plusieurs fichiers à la suite.

curl -O https://lesupersite.com/download/fichier.iso -O http://autresupersite.com/download/autrefichier.iso 

Télécharger des fichiers à partir d'un fichier list

La commande xargs permet de parser un fichier contenant une liste d'URL pour télécharger chaque fichier avec curl.
Voici la syntaxe à utiliser :

 xargs -n 1 curl -O < /tmp/liste-url.txt

On peut aussi le faire avec la boucle for comme ceci :

for url in cat /tmp/liste-url.txt`; do curl $url ; done

Reprendre un téléchargement

Si un téléchargement a été interrompu pour une raison quelconque (par exemple, en utilisant Ctrl + c), vous pouvez reprendre le télécahrgement très facilement. L'utilisation de -C indique à curl de reprendre le téléchargement en commençant là où il s'était arrêté.

curl –c –o monfichier.iso https://lesupersite.com/telecharger/fichier.iso

Limiter la vitesse de téléchargement

L'option --limit-rate vous permet de limiter le taux de transfert de données.
La valeur peut être exprimée en octets, en kilo-octets avec le suffixe k, en mégaoctets avec le suffixe m et en gigaoctets avec le suffixe g.

Dans l'exemple suivant, curl téléchargera le binaire Go et limitera la vitesse de téléchargement à 1 Mo:

curl --limit-rate 1m -O https://www.malekal.com/superiso.iso

Effectuer une requête HTTP GET

Il suffit d'utiliser la commande sans aucune option spécifique comme ceci :

curl https://www.malekal.com

Obtenir l'en-tête d'une URL

Par défaut, les en-têtes de réponse sont masqués dans la sortie de curl. Pour les montrer, utilisez l'option -i:

curl -i https://www.malekal.com

Pour afficher seulement l'en-tête :

curl -I https://www.malekal.com

Inspecter tous les détails de la demande et de la réponse

Pour obtenir la réponse complète du serveur WEB avec son en-tête, utilisez l'option --verbose :

curl --verbose -I https://www.malekal.com

Suivre les redirections

Par défaut, lorque curl contacte un serveur WEB qui retourne un code 3XX ou un en-tête Location:, il ne suit pas ce dernier.
Pour forcer à suivre les redirections, vous devez utiliser l'option -L :

curl -L https://www.malekal.com

Faire un POST

L'option X vous permet de modifier la méthode HTTP utilisée. Par défaut, GET est utilisé, et c'est la même chose que l'écriture :

curl -X GET https://www.malekal.com

Vous pouvez effectuer une requête POST en passant des données URL encodées avec le paramètre -d.
Saisissez ensuite les données à envoyer via la méthode POST.

curl -d "option=valeur&champs=autrevaleur" -X POST https://www.malekal.com

Effectuer une requête HTTP POST en envoyant JSON

Au lieu de publier des données encodées en URL, comme dans l'exemple ci-dessus, vous souhaiterez peut-être envoyer du JSON.

Dans ce cas, vous devez définir explicitement l'en-tête Content-Type, en utilisant l'option -H :

curl -d '{"option": "value", "queqluechose": "autrevaleur"}' -H "Content-Type: application/json" -X POST https://www.malekal.com

Vous pouvez également envoyer un fichier JSON depuis votre disque:

curl -d "@my-file.json" -X POST https://www.malekal.com

Changer le user agent

L'agent utilisateur indique au serveur quel client exécute la demande. Par défaut, curl envoie l'agent utilisateur curl / , comme: curl / 7.54.0.

Vous pouvez spécifier un agent utilisateur différent à l'aide de l'option --user-agent ou -A :

curl --user-agent "Le user agent" https://www.malekal.com

Par exemple pour utiliser le user-agent de Google Chrome de Windows 7 :

curl -A "Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/27.0.1453.110 Safari/537.36" https://www.malekal.com

Enregistrer ou envoyer des cookies

Vous souhaitez voir quels cookies sont téléchargés sur votre ordinateur lorsque vous naviguez sur https://www.malekal.com
Utilisez la commande suivante pour enregistrer le cookie dans monfichiercookie.txt.
Vous pouvez ensuite utiliser la commande cat pour afficher le fichier.

 curl --cookie-jar monfichiercookie.txt https://www.malekal.com -O

Pour envoyer un cookie avec curl, vous devez créer ou récupérer le fichier cookie.
Ensuite, on utilise l'option --cookie ou -b pour le spécifier.

curl --cookie monfichiercookie.txt https://www.malekal.com

Utilisation de l'authentification HTTP

Si une ressource nécessite une authentification HTTP de base, vous pouvez utiliser l'option u pour transmettre les valeurs utilisateur: motdepasse :

curl -u utilisateur:motdepasse https://www.malekal.com

Utiliser un proxy

Voici comment se connecter derrière un serveur proxy avec curl.
Par exemple pour se cacher derrière un proxy écoutant sur le port 8080 à proxy.votredomaine.com :

curl -x proxy.votredomaine.com:8080 -U utilisateur:motdepasse -O https://www.malekal.com
  • -x : pour spéficier l'(adresse du serveur proxy avec le port
  • -U : pour s'authentifier sur le serveur proxy

Envoyer un fichier par FTP

Curl gère sans problème le protocole FTP.
Ainsi, il est possible d'envoyer un fichier par FTP :

  • -u : pour spécifier les identifiants avec le couple utilisateur et mot de passe comme sous la forme utilisateur:motdepasse
  • -T : le nom du fichier à uploader

Par exemple pour envoyer le fichier fichier.iso par FTP avec curl :

curl -u utilisateur:motdepasse -T fichier.iso ftp://yourftpserver

Les principales options de la commande Curl

OptionsDescriptions
-A, --user-agentSpécifier un user-agent
-b, --cookieTransmettez les données au serveur HTTP dans l'en-tête Cookie. Ce sont supposément les données précédemment reçues du serveur dans une ligne "Set-Cookie:". Les données doivent être au format "NAME1 = VALUE1; NAME2 = VALUE2".
--connect-timeoutSpécifier un timeout (délai de connexion)
-C, --continue-atRésumer un téléchargement
-F, --formÉmuler un formulaire rempli dans lequel un utilisateur a appuyé sur le bouton d'envoi.
-H, --headersEn-tête supplémentaire à inclure dans la requête lors de l'envoi de HTTP à un serveur.
-i, --include
Incluez les en-têtes de réponse HTTP dans la sortie. Les en-têtes de réponse HTTP peuvent inclure des éléments tels que le nom du serveur, les cookies, la date du document, la version HTTP et plus encore ...
-I, --headRécupérez uniquement les en-têtes! Les serveurs HTTP comportent la commande HEAD que celle-ci utilise pour n'obtenir que l'en-tête d'un document.
Lorsqu'il est utilisé sur un fichier FTP ou FILE, curl affiche la taille du fichier et le dernier mod‐ temps de ification seulement.
-L, --locationSuit l-en-tête Location et un code de réponse 3XX
-X, --requestSpécifie une méthode de demande personnalisée à utiliser lors de la communication avec le serveur HTTP (POST, PUT, DELETE, ...).
-Y, --speed-limitArrête les transferts plus lentement que cela
Les principales options de la commande Curl