HowtoCurl : ajout d'options longues

This commit is contained in:
Jérémy Lecour 2023-12-22 09:30:22 +01:00 committed by Jérémy Lecour
parent 2eceffd267
commit ce53403190
Signed by: jlecour
SSH key fingerprint: SHA256:h+5LgHRKwN9lS0SsdVR5yZPeFlJE4Mt+8UtL4CcP8dY

View file

@ -31,44 +31,44 @@ $ curl -I www.example.com
Pour enregistrer la ressource dans un fichier portant le même nom, utiliser l'option `-O` (ou `--remote-name`) : Pour enregistrer la ressource dans un fichier portant le même nom, utiliser l'option `-O` (ou `--remote-name`) :
~~~ ~~~
$ curl -O https://www.example.com/page.html $ curl --remote-name https://www.example.com/page.html
~~~ ~~~
Dans le cas d'un protocole s'appuyant sur SSL/TLS, pour ne pas vérifier la validité du certificat on ajoute l'option `-k` (ou `--insecure`) : Dans le cas d'un protocole s'appuyant sur SSL/TLS, pour ne pas vérifier la validité du certificat on ajoute l'option `-k` (ou `--insecure`) :
~~~ ~~~
$ curl -k https://www.example.com/ $ curl --insecure https://www.example.com/
~~~ ~~~
Par défaut, curl ne suit pas les redirections HTTP (follow), il faut l'option `-L` (ou `--location`) : Par défaut, curl ne suit pas les redirections HTTP (follow), il faut l'option `-L` (ou `--location`) :
~~~ ~~~
$ curl -L http://www.example.com $ curl --location http://www.example.com
~~~ ~~~
Pour spécifier un User-Agent, utiliser l'option `-A` (ou `--user-agent`) : Pour spécifier un User-Agent, utiliser l'option `-A` (ou `--user-agent`) :
~~~ ~~~
$ curl -A "Mozilla/5.0 (compatible; evolix; http://evolix.com)" http://example.com $ curl --user-agent "Mozilla/5.0 (compatible; evolix; http://evolix.com)" http://example.com
~~~ ~~~
Plus généralement, pour spécifier un en-tête HTTP utiliser l'option `-H` (ou `--header`) : Plus généralement, pour spécifier un en-tête HTTP utiliser l'option `-H` (ou `--header`) :
~~~ ~~~
$ curl http://www.example.com -H 'Accept: text/plain' $ curl http://www.example.com --header 'Accept: text/plain'
$ curl -H 'Accept-Language: en' https://example.com $ curl --header 'Accept-Language: en' https://example.com
~~~ ~~~
Pour envoyer un cookie dans la requête, utiliser l'option `-b` (ou `--cookie`) : Pour envoyer un cookie dans la requête, utiliser l'option `-b` (ou `--cookie`) :
~~~ ~~~
$ curl http://www.example.com -b 'key=value' $ curl http://www.example.com --cookie 'key=value'
~~~ ~~~
Pour l'utilisation d'un proxy : Pour l'utilisation d'un proxy, utiliser l'option `-x` (ou `--proxy`) :
~~~ ~~~
$ curl -x http://localhost:8123 http://www.example.com $ curl --proxy http://localhost:8123 http://www.example.com
~~~ ~~~
@ -80,7 +80,7 @@ L'astuce classique est de modifier le fichier HOSTS (`/etc/hosts` sous Linux et
Première astuce possible, modifier l'en-tête `Host` : Première astuce possible, modifier l'en-tête `Host` :
~~~ ~~~
$ curl http://192.0.2.1:8080/foo/bar -H 'Host: www.example.com' $ curl http://192.0.2.1:8080/foo/bar --header 'Host: www.example.com'
~~~ ~~~
L'inconvénient est qu'il faut modifier l'URL pour mettre l'adresse IP (ce qui ne permet pas de faire des copier/coller facilement) et que cela ne gère par le SNI (dans le cas de la couche SSL/TLS). L'inconvénient est qu'il faut modifier l'URL pour mettre l'adresse IP (ce qui ne permet pas de faire des copier/coller facilement) et que cela ne gère par le SNI (dans le cas de la couche SSL/TLS).
@ -97,7 +97,7 @@ $ curl --resolve www.example.com:443:192.0.2.1 https://www.example.com/foo/bar
Pour envoyer une authentification HTTP, préciser l'option `-u` (ou `--user`) : Pour envoyer une authentification HTTP, préciser l'option `-u` (ou `--user`) :
~~~ ~~~
$ curl -u jdoe:PASSWORD https://www.example.com $ curl --user jdoe:PASSWORD https://www.example.com
~~~ ~~~
Pour spécifier la méthode HTTP POST/PUT/DELETE (par défaut GET), cela se fait avec l'option `-X` (ou `--request`) : Pour spécifier la méthode HTTP POST/PUT/DELETE (par défaut GET), cela se fait avec l'option `-X` (ou `--request`) :
@ -181,15 +181,15 @@ $ curl -XPUT 'http://localhost:9200/_snapshot/foo' --json '{"foo": "bar"}'
Via un fichier : Via un fichier :
~~~ ~~~
$ curl -XPUT 'http://localhost:9200/_snapshot/foo' -d @/path/to/file $ curl -XPUT 'http://localhost:9200/_snapshot/foo' --data @/path/to/file
~~~ ~~~
### Version compressée ### Version compressée
Pour obtenir le contenu gzipé (avec un en-tête HTTP forcé) : Pour obtenir le contenu _gzipé_ (avec un en-tête HTTP forcé) :
~~~ ~~~
$ curl www.example.com -H 'Accept-Encoding:gzip, deflate' $ curl www.example.com --header 'Accept-Encoding:gzip, deflate'
~~~ ~~~
### If-(M|Unm)odified-Since : contrainte sur la date de modification ### If-(M|Unm)odified-Since : contrainte sur la date de modification
@ -238,10 +238,10 @@ timelookup: %{time_namelookup}\n
time_total: %{time_total}\n time_total: %{time_total}\n
~~~ ~~~
Puis faire une requete curl, avec l'option -w, pour utiliser ce fichier de format : Puis faire une requête curl, avec l'option `-w` ou `--write-out`, pour utiliser ce fichier de format :
~~~ ~~~
curl -w "@curl-time.txt" -o /dev/null -s "https://www.example.com/" curl --write-out "@curl-time.txt" --remote-name /dev/null -s "https://www.example.com/"
~~~ ~~~
## Autres protocoles ## Autres protocoles
@ -265,7 +265,7 @@ $ curl --url "imaps://mail.example.com" --user "bar@example.com:password"
Récupérer le fichier Debian.iso via FTP : Récupérer le fichier Debian.iso via FTP :
~~~ ~~~
$ curl -u jdoe:PASSWORD -O ftp://ftp.example.com/foo/bar/Debian.iso $ curl --user jdoe:PASSWORD --remote-name ftp://ftp.example.com/foo/bar/Debian.iso
~~~ ~~~
Lister le contenu d'un dossier : Lister le contenu d'un dossier :
@ -277,9 +277,9 @@ $ curl ftp://ftp.example.com/foo/bar/
Envoyer des fichiers : Envoyer des fichiers :
~~~ ~~~
$ curl -u jdoe:PASSWORD -T fichier ftp://ftp.example.com/ $ curl --user jdoe:PASSWORD --upload-file fichier ftp://ftp.example.com/
$ curl -u jdoe:PASSWORD -T "{fichier1,fichier2}" ftp://ftp.example.com/ $ curl --user jdoe:PASSWORD --upload-file "{fichier1,fichier2}" ftp://ftp.example.com/
~~~ ~~~
## FAQ ## FAQ
@ -302,16 +302,16 @@ On désactive alors le buffer de "curl" avec l'option `-N` (ou `--no-buffer`) af
Selon la version de l'OS où de la clé DH qui a été généré, il se peut qu'on ai une erreur "SSL routines:tls_process_ske_dhe:dh key too small" en faisant une requêtes curl. Selon la version de l'OS où de la clé DH qui a été généré, il se peut qu'on ai une erreur "SSL routines:tls_process_ske_dhe:dh key too small" en faisant une requêtes curl.
Si vous souhaitez bypasser la vérification clé DH on peu utilisé l'option --cipher comme ceci : Si vous souhaitez _bypasser_ la vérification clé DH on peu utiliser l'option `--cipher` comme ceci :
~~~ ~~~
# curl --ciphers 'DEFAULT:!DH' # curl --ciphers 'DEFAULT:!DH'
~~~ ~~~
On peux également utilisé l'option --cipher pour désactivé d'autres cipher lors de la requetes curl, ou de la limité seulement a certains cipher par exemple : On peux également utilisé l'option `--cipher` pour désactivé d'autres cipher lors de la requêtes curl, ou de la limité seulement a certains cipher par exemple :
~~~ ~~~
# curl --ciphers 'ECDHE-RSA-AES128-GCM-SHA256' # curl --ciphers 'ECDHE-RSA-AES128-GCM-SHA256'
~~~ ~~~
ou rajouter l'option `--ciphers ECDHE-RSA-AES128-GCM-SHA256` dans le fichier `.curlrc` ou rajouter l'option `--ciphers ECDHE-RSA-AES128-GCM-SHA256` dans le fichier `.curlrc`