cURL est un outil en ligne de commande permettant de récupérer ou de transmettre des informations en utilisant une syntaxe d’URL.
Tout professionnel travaillant dans le développement ou le support technique devrait maîtriser l’utilisation de la commande cURL pour diagnostiquer les problèmes liés aux applications web. cURL est un outil polyvalent compatible avec Windows, macOS et les systèmes UNIX.
Voici quelques exemples des syntaxes les plus utilisées pour vous aider à mieux comprendre son fonctionnement.
Vérification de la connexion à une URL
Si vous utilisez un système UNIX et que vous cherchez à accéder à une URL externe, la première étape consiste à vérifier si vous pouvez l’atteindre en utilisant la commande curl.
curl votreurl.com
Cette commande ne produira aucun résultat visible si la connexion réussit. Cependant, si le serveur est inaccessible, vous recevrez des messages d’erreur, tels que « Impossible de résoudre l’hôte ».
[[email protected] tmp]# curl helloitdoesntexist.com curl: (6) Could not resolve host: helloitdoesntexist.com; Unknown error [[email protected] tmp]#
Enregistrement de la sortie d’une URL/URI dans un fichier
Pour sauvegarder le contenu d’une URL ou d’une URI dans un fichier spécifique, utilisez la syntaxe suivante :
curl https://yoururl.com > votreurl.html
Exemple :
[[email protected] tmp]# curl https://gf.dev > /tmp/gfhtml % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 100 18557 0 18557 0 0 72565 0 --:--:-- --:--:-- --:--:-- 72772 [[email protected] tmp]#
Cet exemple enregistrera l’intégralité du contenu de gf.dev dans le fichier /tmp/gf.html.
Affichage des en-têtes de requête et de réponse
Si vous rencontrez des problèmes et que vous souhaitez analyser les en-têtes de requête et de réponse, utilisez la commande suivante :
curl -v votreurl.com
Exemple:
[[email protected] tmp]# curl -v https://toptips.fr.com * About to connect() to toptips.fr.com port 443 (#0) * Trying 104.25.134.107... * Connected to toptips.fr.com (104.25.134.107) port 443 (#0) * Initializing NSS with certpath: sql:/etc/pki/nssdb * CAfile: /etc/pki/tls/certs/ca-bundle.crt CApath: none * SSL connection using TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256 * Server certificate: * subject: CN=ssl371609.cloudflaressl.com,OU=PositiveSSL Multi-Domain,OU=Domain Control Validated * start date: Nov 07 00:00:00 2019 GMT * expire date: May 15 23:59:59 2020 GMT * common name: ssl371609.cloudflaressl.com * issuer: CN=COMODO ECC Domain Validation Secure Server CA 2,O=COMODO CA Limited,L=Salford,ST=Greater Manchester,C=GB > GET / HTTP/1.1 > User-Agent: curl/7.29.0 > Host: toptips.fr.com > Accept: */* > < HTTP/1.1 200 OK < Date: Sat, 09 Nov 2019 19:41:37 GMT < Content-Type: text/html; charset=UTF-8 < Transfer-Encoding: chunked < Connection: keep-alive < Set-Cookie: __cfduid=d2ce6cd359ebc0b6eb5ff3a454ed042021573328497; expires=Sun, 08-Nov-20 19:41:37 GMT; path=/; domain=.toptips.fr.com; HttpOnly; Secure < Vary: Accept-Encoding < Link: <https://toptips.fr.com/wp-json/>; rel="https://api.w.org/" < Link: <https://toptips.fr.com/>; rel=shortlink < X-SRCache-Fetch-Status: HIT < X-SRCache-Store-Status: BYPASS < X-Frame-Options: SAMEORIGIN < X-Powered-By: EasyEngine v4.0.12 < Via: 1.1 google < CF-Cache-Status: DYNAMIC < Strict-Transport-Security: max-age=15552000; preload < X-Content-Type-Options: nosniff < Alt-Svc: h3-23=":443"; ma=86400 < Expect-CT: max-age=604800, report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct" < Server: cloudflare < CF-RAY: 533243e4bcd4bbf4-LHR <
Téléchargement avec une limite de débit
Si vous testez l’optimisation de téléchargement et que vous voulez observer le temps que prend un téléchargement à une vitesse spécifique, utilisez :
curl --limit-rate 2000B
Exemple :
curl --limit-rate 2000B https://gf.dev
Utilisation d’un proxy pour la connexion
Cette fonctionnalité est très utile lorsque vous travaillez sur un serveur DMZ et que vous devez accéder à des ressources externes via un proxy.
curl --proxy votrerproxy:port https://votreurl.com
Vous pouvez également personnaliser la requête curl en ajoutant des en-têtes pour des tests ou des diagnostics spécifiques. Par exemple, pour définir le Content-Type :
curl --header 'Content-Type: application/json' http://votreurl.com
Cette commande envoie l’en-tête Content-Type avec la valeur application/json.
Si vous souhaitez examiner rapidement l’en-tête de réponse, vous pouvez utiliser la syntaxe suivante :
curl --head http://votreurl.com
Exemple :
[[email protected] tmp]# curl --head https://chandan.io HTTP/1.1 200 OK Date: Sat, 09 Nov 2019 19:51:23 GMT Content-Type: text/html Connection: keep-alive Set-Cookie: __cfduid=d3cb2c7b8e566ad99c870b0af12b0f1eb1573329083; expires=Sun, 08-Nov-20 19:51:23 GMT; path=/; domain=.chandan.io; HttpOnly X-GUploader-UploadID: AEnB2Uo96JhvJmR2zYUL-Ndh2ta3UD_ykQAB5C7O8cjZQhCf-GxHQ0MsodSzRnl3guSN3ywAYNjtWcPXfwDXjLg3bQ-P5vQMOA Expires: Sat, 09 Nov 2019 20:51:23 GMT Cache-Control: public, max-age=3600 Last-Modified: Mon, 06 Aug 2018 10:45:47 GMT x-goog-generation: 1533552347482034 x-goog-metageneration: 1 x-goog-stored-content-encoding: identity x-goog-stored-content-length: 24620 x-goog-hash: crc32c=DpDPAQ== x-goog-hash: md5=cIP/3rusdUx12Zla1kf1yA== x-goog-storage-class: MULTI_REGIONAL Accept-Ranges: bytes CF-Cache-Status: DYNAMIC Expect-CT: max-age=604800, report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct" Server: cloudflare CF-RAY: 53325234dc2fbb9a-LHR [[email protected] tmp]#
Connexion à une URL HTTPS/SSL en ignorant les erreurs de certificat
Lorsque vous tentez d’accéder à une URL sécurisée avec un certificat SSL/TLS incorrect ou une erreur de nom commun, vous obtenez une erreur de ce type :
curl: (51) Unable to communicate securely with peer: requested domain name does not match the server's certificate.
Heureusement, vous pouvez demander à curl d’ignorer les erreurs de certificat en utilisant l’option `–insecure` :
curl --insecure https://votreurl.com
Connexion avec un protocole spécifique (SSL/TLS)
Cette fonctionnalité est utile pour tester si une URL peut établir une connexion via un protocole SSL/TLS spécifique.
Pour se connecter avec SSL v3 :
curl --sslv3 https://votreurl.com
Et pour différentes versions de TLS :
curl --tlsv1 https://example.com curl --tlsv1.0 https://example.com curl --tlsv1.1 https://example.com curl --tlsv1.2 https://example.com curl --tlsv1.3 https://example.com
Téléchargement d’un fichier à partir d’un serveur FTP
Vous pouvez également utiliser curl pour télécharger un fichier à partir d’un serveur FTP en spécifiant votre nom d’utilisateur et votre mot de passe.
curl -u user:password -O ftp://ftpurl/style.css
N’oubliez pas que vous pouvez toujours utiliser l’option `-v` avec n’importe quelle commande pour afficher plus de détails.
L’en-tête Host est utile lorsque vous testez une URL cible via son adresse IP, en particulier si le contenu n’est disponible qu’avec l’en-tête Host correct. Ou, lorsque vous souhaitez tester une application via l’adresse IP/URL d’un équilibreur de charge.
curl --header 'Host: targetapplication.com' https://192.0.0.1:8080/
L’utilisation de cURL en ligne
Oui, c’est tout à fait possible grâce aux outils suivants. Vous pouvez exécuter cURL à distance.
CURL en ligne – un outil simple pour récupérer une URL en ligne, avec la possibilité d’ajouter les options suivantes :
--connect-timeout --cookie --data --header --head --location --max-time --proxy --request --user --url --user-agent
Générateur de ligne de commande cURL – Cet outil vous aide à créer la commande curl en entrant vos informations dans une interface utilisateur intuitive. La commande cURL est ensuite générée en bas de l’écran.
cURL est un outil extrêmement utile pour diagnostiquer les problèmes de connectivité en temps réel. J’espère que les informations ci-dessus vous seront utiles. Si vous désirez approfondir vos connaissances, je vous recommande le cours en ligne Principes de base de la ligne de commande Linux.