--- title: Howto cURL categories: tips ... * * **cURL** est un outil s'appuyant sur une bibliothèque (libcurl) pour transférer des données à l'aide de différents protocol. Il peut être utilisé en ligne de commande ou dans scripts. Il support une multitude de protocols comme notamment HTTP, HTTPS, IMAP, IMAPS, LDAP, LDAPS, POP3, POP3, SSCP, SFTP, SMB, SMTP, SMTPS, Telnet… ## Utilisation de base ~~~ $ curl https://www.example.com ~~~ Enregistrer en local : ~~~ $ curl -O https://www.example.com/ ~~~ Ignorer le certificat : ~~~ $ curl -k https://www.example.com/ ~~~ Suivre les redirect 301 : ~~~ $ curl -L http://www.example.com ~~~ Spécifier la méthode (par défaut GET) POST/PUT/DELETE : ~~~ $ curl -X POST https://www.example.com ~~~ ## Outrepasser le nom de domaine Avec cette astuce, inutile de modifier `/etc/hosts`, ce qui est très pratique. En HTTP classique : ~~~ $ curl http://192.0.2.1:8080/foo/bar -H 'Host: www.example.com' ~~~ En HTTPS (SNI) : ~~~ $ curl --resolve www.example.com:443:192.0.2.1 https://www.example.com/foo/bar ~~~ ## Authentification ~~~ $ curl -u username:password https://www.example.com ~~~ ## SMTP Envoyer un email : ~~~ $ curl --mail-from foo@example.com --mail-rcpt bar@example.com smtp://example.com/ ~~~ ## FTP Récupérer le fichier Debian.iso via FTP : ~~~ $ curl -u ftpuser:ftppass -O ftp://ftp.example.com/foo/bar/Debian.iso ~~~ Lister le contenu d'un dossier : ~~~ $ curl ftp://ftp.example.com/foo/bar/ ~~~ Envoyer des fichiers : ~~~ $ curl -u ftpuser:ftppass -T fichier ftp://ftp.example.com/ $ curl -u ftpuser:ftppass -T "{fichier1,fichier2}" ftp://ftp.example.com/ ~~~ ## Divers Afficher uniquement le header : ~~~ $ curl -I www.example.com ~~~ Afficher le header et le contenu : ~~~ $ curl -i www.example.com ~~~ Obtenir le contenu gzipé : ~~~ $ curl www.example.com -H 'Accept-Encoding:gzip, deflate' ~~~ Récupérer le contenu seulement si celui-ci a été modifié après le 17 Mers 2017 : ~~~ $ curl -z 17-Mar-17 www.example.com ~~~ Récupérer le contenu seulement si celui-ci a été modifié avant le 17 Mers 2017 : ~~~ $ curl -z -17-Mar-17 www.example.com ~~~