wiki/HowtocURL.md

123 lines
2.2 KiB
Markdown
Raw Normal View History

2016-10-06 11:04:37 +02:00
---
2017-03-17 17:00:17 +01:00
title: Howto cURL
2016-10-06 11:04:37 +02:00
categories: tips
...
2017-03-17 17:00:17 +01:00
* <https://curl.haxx.se/>
* <https://github.com/curl/curl/>
**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
~~~
2016-10-06 11:04:37 +02:00
## Outrepasser le nom de domaine
2017-03-17 17:00:17 +01:00
Avec cette astuce, inutile de modifier `/etc/hosts`, ce qui est très pratique.
2016-10-06 11:04:37 +02:00
En HTTP classique :
2017-01-20 10:51:37 +01:00
~~~
2016-10-06 11:04:37 +02:00
$ curl http://192.0.2.1:8080/foo/bar -H 'Host: www.example.com'
2017-01-20 10:51:37 +01:00
~~~
2016-10-06 11:04:37 +02:00
2017-03-23 15:43:40 +01:00
En HTTPS (SNI) :
2016-10-06 11:04:37 +02:00
2017-01-20 10:51:37 +01:00
~~~
2016-10-06 11:04:37 +02:00
$ curl --resolve www.example.com:443:192.0.2.1 https://www.example.com/foo/bar
2017-01-20 10:51:37 +01:00
~~~
2016-10-06 11:04:37 +02:00
2017-03-17 17:00:17 +01:00
## 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/
~~~
2016-10-06 11:04:37 +02:00
## Divers
Afficher uniquement le header :
2017-01-20 10:51:37 +01:00
~~~
2016-10-06 11:04:37 +02:00
$ curl -I www.example.com
2017-03-08 20:12:55 +01:00
~~~
2017-03-17 17:00:17 +01:00
Afficher le header et le contenu :
2017-03-08 20:22:28 +01:00
~~~
$ curl -i www.example.com
~~~
2017-03-08 20:12:55 +01:00
Obtenir le contenu gzipé :
~~~
$ curl www.example.com -H 'Accept-Encoding:gzip, deflate'
2017-03-08 20:22:28 +01:00
~~~
2017-03-17 17:00:17 +01:00
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
~~~