Sitedetout - Tutoriels informatiques

Comment utiliser la commande Linux curl + Exemples

Introduction

Curl (abréviation de client URL request library ou  bibliothèque de requêtes aux URL pour les clients ) est un outil en ligne de commande permettant d’envoyer ou de télécharger des ressources accessibles par le réseau. Curl est disponible sur Linux, MAC et Windows et peut servir aussi d’outil de diagnostic. En plus, Curl supporte une large variété des protocoles réseau comme HTTP, HTTPS, FTP, FTPS, SFTP etc…, la valeur par défaut étant HTTP.

Curl offre plusieurs fonctionnalités à savoir : Le support de proxy, l’authentification, la connection en SSL, les cookies…

Installation de la commande curl

Si curl n’existe pas sur votre machine, vous pouvez l’installer comme suit :

sudo yum install curl

Exemples d’utilisation de la commande curl

1- Afficher la version de curl et ses protocols supportés

L’option -V permet d’afficher plusieurs informations utiles comme la version, protocoles supportés et les fonctionnalités de la commande curl installée.

[[email protected] ~]# curl -V
curl 7.29.0 (x86_64-redhat-linux-gnu) libcurl/7.29.0 NSS/3.36 zlib/1.2.7 libidn/1.28 libssh2/1.4.3
Protocols: dict file ftp ftps gopher http https imap imaps ldap ldaps pop3 pop3s rtsp scp sftp smtp smtps telnet tftp
Features: AsynchDNS GSS-Negotiate IDN IPv6 Largefile NTLM NTLM_WB SSL libz unix-sockets
2- Télécharger un fichier en gardant son nom d’origine

L’option -O permet de dire à curl de garder le nom d’origine du fichier téléchargé.

[[email protected] ~]# curl -O http://sitedetout.com/wp-content/uploads/2016/02/sitedetout.png
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100  8226  100  8226    0     0  44174      0 --:--:-- --:--:-- --:--:-- 44225
[[email protected] ~]# ls
sitedetout.png

3- Télécharger plusieurs fichiers

[[email protected] ~]# curl -O http://sitedetout.com/wp-content/uploads/2016/02/sitedetout.png -O http://www.sitedetout.com/wp-content/uploads/2019/10/ruby-300x180.png
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100  8226  100  8226    0     0    99k      0 --:--:-- --:--:-- --:--:--  100k
100  6049  100  6049    0     0  47345      0 --:--:-- --:--:-- --:--:-- 47345
[[email protected] ~]# ls
ruby-300x180.png  sitedetout.png
4- Afficher la barre de progression du tééchargement

[[email protected] ~]# curl -# -O http://sitedetout.com/wp-content/uploads/2016/02/sitedetout.png
######################################################################## 100,0%
5- Récupérer les entêtes http d’une url

[[email protected] ~]# curl -I http://sitedetout.com/wp-content/uploads/2016/02/sitedetout.png
HTTP/1.1 200 OK
Date: Sun, 27 Oct 2019 21:50:28 GMT
Server: Apache
Last-Modified: Sat, 28 Jul 2018 13:03:46 GMT
Accept-Ranges: bytes
Content-Length: 8226
Cache-Control: max-age=2592000, public
Expires: Mon, 26 Oct 2020 21:50:28 GMT
Access-Control-Allow-Origin: *
Access-Control-Allow-Methods: GET
Access-Control-Allow-Headers: Content-Type, Authorization
Vary: User-Agent
Content-Type: image/png

Cependant, vous pouvez avoir parfois un message de type 301 comme le cas de google.fr

[[email protected] ~]# curl -I http://google.fr
HTTP/1.1 301 Moved Permanently
Location: http://www.google.fr/
Content-Type: text/html; charset=UTF-8
Date: Sun, 27 Oct 2019 21:52:09 GMT
Expires: Tue, 26 Nov 2019 21:52:09 GMT
Cache-Control: public, max-age=2592000
Server: gws
Content-Length: 218
X-XSS-Protection: 0
X-Frame-Options: SAMEORIGIN

En effet, google redirige une requête http vers une requête https. Dans ce cas on peut dire à curl de suivre la redirection grâce à l’option -L.

[[email protected] ~]# curl -I -L http://google.fr
HTTP/1.1 301 Moved Permanently
Location: http://www.google.fr/
Content-Type: text/html; charset=UTF-8
Date: Sun, 27 Oct 2019 21:52:18 GMT
Expires: Tue, 26 Nov 2019 21:52:18 GMT
Cache-Control: public, max-age=2592000
Server: gws
Content-Length: 218
X-XSS-Protection: 0
X-Frame-Options: SAMEORIGIN

HTTP/1.1 200 OK
Date: Sun, 27 Oct 2019 21:52:18 GMT
Expires: -1
Cache-Control: private, max-age=0
Content-Type: text/html; charset=ISO-8859-1
P3P: CP="This is not a P3P policy! See g.co/p3phelp for more info."
Server: gws
X-XSS-Protection: 0
X-Frame-Options: SAMEORIGIN
Set-Cookie: 1P_JAR=2019-10-27-21; expires=Tue, 26-Nov-2019 21:52:18 GMT; path=/; domain=.google.fr; SameSite=none
Set-Cookie: NID=190=J_LUSy_BW_jXlhLaxDESAxR0-0R9I5HIGq5TbooujFboMsJr_gNxugMIy_RYyNNsCaZXteQRSMUVUqTie2o1oXHc1lWvvrq5eiUo4fTK3ybFZBBJ9b9vCBWM_fAB72LTQAQ34YsFjkTkpeugkMbtQXCkqmpzZDC72FrPLEOabAQ; expires=Mon, 27-Apr-2020 21:52:18 GMT; path=/; domain=.google.fr; HttpOnly
Transfer-Encoding: chunked
Accept-Ranges: none
Vary: Accept-Encoding
6- Limiter le débit maximum de transfert

L’option –limit-rate permet de fixer le taux de transfert maximum. En effet, remarquez la différence du temps d’exécution des deux requêtes suivantes.

[[email protected] ~]# curl --limit-rate 1k -O http://sitedetout.com/wp-content/uploads/2016/02/sitedetout.png
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100  8226  100  8226    0     0   1001      0  0:00:08  0:00:08 --:--:--  1169
[[email protected] ~]# curl --limit-rate 3k -O http://sitedetout.com/wp-content/uploads/2016/02/sitedetout.png
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100  8226  100  8226    0     0   4289      0  0:00:01  0:00:01 --:--:--  4288
7- Télécharger un fichier depuis un serveur FTP avec ou sans authentification

Pour télécharger un fichier avec authentification, vous pouvez utiliser l’option -u :

curl -u user:password ftp://speedtest.tele2.net/5MB.zip
[[email protected] ~]# curl -O ftp://speedtest.tele2.net/5MB.zip
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100 5120k  100 5120k    0     0  1541k      0  0:00:03  0:00:03 --:--:-- 1541k
[[email protected] ~]# ls
5MB.zip 
8- Envoyer un fichier vers un serveur ftp avec ou sans authentification

Pour envoyer un fichier vers un serveur ftp, on utilisera l’option -T.

curl -T Fichier_A_Envoyer -u user:password ftp://speedtest.tele2.net
9- Relancer un téléchargement interrompu

Si vous avez commencer un téléchargement et que ce dernier a été interrompu pour une raison quelconque, vous pouvez le relancer avec l’option -C. Dans l’exemple suivant, j’ai interrompu moi même le téléchargement avec un crtl+c.

[[email protected] ~]# curl --limit-rate 1k -O http://sitedetout.com/wp-content/uploads/2016/02/sitedetout.png
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
 44  8226   44  3685    0     0   1325      0  0:00:06  0:00:02  0:00:04  1325^C
[[email protected] ~]# curl -C - --limit-rate 1k -O http://sitedetout.com/wp-content/uploads/2016/02/sitedetout.png
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100  8226  100  8226    0     0    981      0  0:00:08  0:00:08 --:--:--  1090

10- Gestion des certificats SSL avec curl

Si vous essayer de récupérer une ressource en SSL depuis https://www.sitedetout.com, alors vous aurez l’erreur suivante.

[[email protected] ~]# curl -O https://sitedetout.com/wp-content/uploads/2016/02/sitedetout.png
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
  0     0    0     0    0     0      0      0 --:--:-- --:--:-- --:--:--     0
curl: (60) Peer's Certificate has expired.
More details here: http://curl.haxx.se/docs/sslcerts.html

curl performs SSL certificate verification by default, using a "bundle"
 of Certificate Authority (CA) public keys (CA certs). If the default
 bundle file isn't adequate, you can specify an alternate file
 using the --cacert option.
If this HTTPS server uses a certificate signed by a CA represented in
 the bundle, the certificate verification probably failed due to a
 problem with the certificate (it might be expired, or the name might
 not match the domain name in the URL).
If you'd like to turn off curl's verification of the certificate, use
 the -k (or --insecure) option.

Dans ce cas, vous pouvez utiliser l’option -k pour dire à curl de ne pas vérifier le certificat ssl.

[[email protected] ~]# curl -O -k https://sitedetout.com/wp-content/uploads/2016/02/sitedetout.png
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100  8226  100  8226    0     0  13354      0 --:--:-- --:--:-- --:--:-- 13375
11- Envoyer des paramètre POST dans la requête curl

Afin d’envoyer des paramètre POST dans une commande curl, vous pouvez utiliser l’option -X et spécifier des données grâce à l’option –data.

[[email protected] ~]# curl -O -k -X POST --data "data1:valeur1,data2:valeur2" https://sitedetout.com/wp-content/uploads/2016/02/sitedetout.png
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100  8253  100  8226  100    27  24422     80 --:--:-- --:--:-- --:--:-- 24482
12- Récupérer et réutiliser un coockie de session avec curl

Supposons que vous ayez un formulaire d’authentification avec un utilisateur et un mot de passe dont les attributs name sont username et password et ayant une action nommé formaction. on peut utiliser curl pour s’y authentifier et récupérer le cookie de session généré.

curl -i -c cookieFile --data 'username=user&password=password'
  https://host:port/application/formaction

Le cookie est alors enregistré dans le fichier cookieFile. On peut l’utiliser dans les prochaines requêtes comme suit :

curl -b cookieFile http://host:port/application/protected/protected.jsp

Conclusion

Vous voilà prêts à utiliser la commande curl dans vos tâches quotidiennes. N’oubliez pas de partager cet article et voir les autres articles Linux.


Laisser un commentaire

Votre adresse e-mail ne sera pas publiée.

Menu Title
Chargement...

Powered by sitedetout.com