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`) :
~~~
$ 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`) :
~~~
$ 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`) :
~~~
$ 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`) :
~~~
$ 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`) :
~~~
$ curl http://www.example.com -H 'Accept: text/plain'
$ curl -H 'Accept-Language: en' https://example.com
$ curl http://www.example.com --header 'Accept: text/plain'
$ curl --header 'Accept-Language: en' https://example.com
~~~
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` :
~~~
$ 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).
@ -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`) :
~~~
$ 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`) :
@ -181,15 +181,15 @@ $ curl -XPUT 'http://localhost:9200/_snapshot/foo' --json '{"foo": "bar"}'
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
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
@ -238,10 +238,10 @@ timelookup: %{time_namelookup}\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
@ -265,7 +265,7 @@ $ curl --url "imaps://mail.example.com" --user "bar@example.com:password"
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 :
@ -277,9 +277,9 @@ $ curl ftp://ftp.example.com/foo/bar/
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
@ -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.
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'
~~~
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'
~~~
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`