Maitriser la commande cURL avec ces 10 exemples
Qu'avons-nous dans la boîte ?
Lorsqu’il est question de récupérer des informations sur une application Web à partir de la ligne de commande, que ce soit sous Linux, Windows ou macOS, l’outil cURL est tout simplement indispensable. C’est un outil gratuit, utile à la fois pour les développeurs et les sysadmins. Voici une sélection d’exemples pour vous permettre de bien prendre en main cet outil !
cURL est très souvent utilisé pour requête sur les protocoles HTTP et HTTPS, mais il supporte de nombreux protocoles comme le précise le site officiel : DICT, FILE, FTP, FTPS, GOPHER, GOPHERS, HTTP, HTTPS, IMAP, IMAPS, LDAP, LDAPS, MQTT, POP3, POP3S, RTMP, RTMPS, RTSP, SCP, SFTP, SMB, SMBS, SMTP, SMTPS, TELNET, TFTP.
Saviez-vous que cURL signifie Client URL ?
- Linux : 3 commandes pour identifier le processus qui écoute sur un port particulier
- Linux : 8 exemples pratiques de la commande touch
1. Comment installer cURL sur Debian ?
Alors qu’il est intégré à Windows 10, Windows 11 et aux versions récentes de Windows Server, sur Linux, cURL doit être installé par le gestionnaire de paquets. Par exemple, sur Debian 11, cela donne :
sudo apt-get update
sudo apt-get install curl
L’installation est très simple, mais je souhaitais apporter la précision.
2. Récupérer le contenu d’une page avec cURL
La mission première de cURL, c’est de récupérer des informations sur un serveur Web. Ainsi, si l’on invoque la commande « curl » suivie d’un nom de domaine ou d’une adresse Web, le code source de la page sera retourné. Faites un essai :
curl tutobox.fr
Dans la console, le code source de la page d’accueil de Tutobox s’affiche. Lorsque l’adresse est introuvable, le message suivant s’affiche :
curl: (6) Could not resolve host: http://tutibox.fr
Maintenant, explorons les options de cURL…
3. Stocker le contenu d’une page dans un fichier avec cURL
Dans le cas où vous avez la nécessité de stocker le contenu d’une page dans un fichier de sortie, vous pouvez utiliser cURL. Dans l’exemple ci-dessous, le code source de la page « https://tutobox.fr » sera stocké dans le fichier « /home/tutobox/tutobox.fr.html« .
curl https://tutobox.fr > /home/tutobox/tutobox.fr.html
4. Afficher la requête et la réponse HTTP avec cURL
Quand on se connecte sur une page avec le protocole HTTP (ou HTTPS), le client HTTP émet une requête HTTP et le serveur lui retourne un réponse HTTP, avec diverses informations dont le contenu de la page. Pour voir à la fois la requête et la réponse avec cURL, l’option « -v » doit être utilisée.
curl -v https://tutobox.fr
5. Afficher l’en-tête HTTP avec cURL
Dans une réponse HTTP, l’en-tête du serveur contient des informations importantes : la version de HTTP utilisée, le code de retour (par exemple : « 200 OK » lorsque la requête est traitée avec succès), la date et l’heure, le type de serveur, etc… Parfois, le contenu de la page n’est pas intéressant et on cherche à analyser l’en-tête HTTP uniquement.
Pour récupérer uniquement l’en-tête, l’option « –head » ou son raccourci « -I » doit être utilisé. Par exemple :
curl --head https://tutobox.fr
curl -I https://tutobox.fr
6. Utiliser cURL au travers d’un proxy
Besoin de passer par un proxy pour accéder à Internet ? Ce n’est pas un problème puisque cURL supporte très bien l’utilisation d’un proxy. L’option « –proxy » suivi de l’adresse du proxy et de son port (séparé par « : ») permettent de préciser les informations.
curl --proxy <serveur proxy>:<port proxy> https://tutobox.fr
7. cURL : utiliser un user-agent différent
Quand on se connecte sur un serveur Web avec le protocole HTTP(S), la requête HTTP contient un champ nommé « User-Agent » qui permet au client HTTP de se présenter au serveur. Avec cURL, le « User-Agent » est « curl/7.74.0 » : une manière de dire « Bonjour, moi c’est cURL et je souhaite effectuer la requête…. ».
Chaque logiciel peut avoir sa propre valeur : Mozilla Firefox, Google Chrome, Microsoft Edge, etc… Mais aussi d’autres logiciels comme Nikto, un scanner de vulnérabilités pour site Web. Si l’on veut tester qu’un site Web bloque bien Nikto, on peut demander à cURL d’utiliser « Nikto » comme valeur pour le User-Agent.
Ce qui donne la commande suivante, si l’on veut en plus afficher uniquement le header :
curl -I tutobox.fr -H "User-Agent: Nikto"
Ici, on voit que l’accès est refusé grâce au code de retour 403 :
8. Ignorer l’erreur de certificat avec cURL
Lorsque cURL détecte une erreur de certificat sur une page Web, il n’est pas très content. Toutefois, c’est fréquent sur les pages d’administration d’un équipement réseau, un site local, etc… A cause du certificat auto-signé. Avec l’option « –insecure » on peut ignorer cette erreur.
curl --insecure https://192.168.1.254
9. Télécharger un fichier avec cURL
Au-delà d’afficher le contenu d’une page Web, cURL peut permettre de télécharger un fichier : une vidéo, un script, une image, etc… Il est très fréquent de l’utiliser pour télécharger un script sur GitHub. On peut aussi utiliser cURL pour télécharger un fichier sur un serveur FTP, en s’authentifiant avec un nom d’utilisateur et un mot de passe.
Voici un exemple pour le FTP :
curl -u <utilisateur>:<mot de passe> -O ftp://serveur-ftp.tutobox.fr/video.avi
Voici un exemple pour télécharger un script sur GitHub :
curl -O https://raw.githubusercontent.com/tutobox/script.sh
10. Utiliser cURL avec une version SSL/TLS spécifique
Lors de la configuration d’un site Web, on peut activer la prise en charge d’une ou plusieurs versions de SSL/TLS. Pour assurer la compatibilité avec des navigateurs anciens, il faut activer certains protocoles. À l’inverse, pour sécuriser son site, il convient de désactiver certaines versions. Avec cURL, on va pouvoir tenter une connexion avec une version spécifique des protocoles SSL/TLS, de quoi tester sa configuration.
curl --sslv3 https://tutobox.fr
curl --tlsv1 https://tutobox.fr
curl --tlsv1.0 https://tutobox.fr
curl --tlsv1.1 https://tutobox.fr
curl --tlsv1.2 https://tutobox.fr
curl --tlsv1.3 https://tutobox.fr
Ainsi, vous pouvez obtenir une erreur, ou une réponse correcte, selon la version du protocole spécifiée et la configuration du serveur en face.
11. Requêter plusieurs sites en même temps avec cURL
Terminons par une dernière astuce : la possibilité de requêter plusieurs sites, ou adresses si vous préférez, en même temps avec cURL. Par exemple, pour cibler « tutabox.fr », « tutibox.fr » et « tutebox.fr », plutôt que de faire les requêtes une par une, on peut faire :
curl https://{tutabox,tutibox,tutebox}.fr
12. Conclusion
Suite à la lecture de cet article de la boîte à tutoriels informatique, vous êtes en mesure de bien prendre en main l’outil cURL ! Envie de tester encore plus de commandes cURL ? Consultez l’aide avancée :
curl --help all
Ressources :