L’abré­via­tion cURL signifie « Client for URLs » ou « Curl URL Request Library ». Il s’agit d’un programme d’invite de commande dotée d’une bi­blio­thèque associée per­met­tant de trans­mettre des données entre des or­di­na­teurs connectés ensemble. Le logiciel cURL a été codé par le pro­gram­meur Daniel Stenberg. Son objectif premier était de mettre à dis­po­si­tion des par­ti­ci­pants d’un chat des données sur les taux de change actuels consultés par dif­fé­rents sites Internet. Du fait de sa licence MIT ouverte, cURL peut être utilisé librement et a été intégré dans de nombreux systèmes d’ex­ploi­ta­tion. C’est également le cas de Windows 10 qui dispose de cURL depuis avril 2018 avec la mise à jour 1803. Le guide complet Eve­ry­thing curl offre un aperçu des pos­si­bi­li­tés offertes aux dé­ve­lop­peurs grâce à cet outil. Vous dé­cou­vri­rez ci-dessous de quoi est capable cURL pour Windows à travers des exemples pratiques. Vous pourrez même appliquer certains d’entre eux im­mé­dia­te­ment.

cURL pour Windows : de quoi s’agit-il exac­te­ment ?

Comme dans d’autres systèmes d’ex­ploi­ta­tion, cURL pour Windows se compose du fichier exé­cu­table curl.exe et de la bi­blio­thèque libcurl, une API codée dans le langage de pro­gram­ma­tion C qui met en œuvre les nom­breuses pos­si­bi­li­tés de cURL. Les commandes sont exécutées à l’aide de l’invite de commandes de Windows et suivent une structure fixe :

C:\Users\Utilisateurtype>curl [options …] <url>

Dans cette commande, <url> est l’adresse du site Internet avec lequel on souhaite interagir. Les [options …] per­met­tent de spécifier les ins­truc­tions de façon à pouvoir exécuter des processus tels que des con­sul­ta­tions de page, des char­ge­ments et des té­lé­char­ge­ments, des pu­bli­ca­tions, l’uti­li­sa­tion de for­mu­laires et bien d’autres choses encore. Pour de nom­breuses options, il existe deux variantes de for­mu­la­tion :

  • la première avec un signe moins suivi d’une lettre 
  • la seconde avec deux signes moins suivis de la commande

L’option « -G » et l’option « --get » per­met­tent toutes les deux d’utiliser la méthode GET.

Vérifier la dis­po­ni­bi­lité et la version de cURL

Vérifiez tout d’abord si votre version de Windows dispose de cURL et si tel est le cas, de quelle version il s’agit. Pour ce faire, activez l’invite de commandes en sai­sis­sant « cmd » dans la recherche Windows. En sai­sis­sant au curseur

C:\Users\Utilisateurtype>curl --version

vous obtenez des in­for­ma­tions sur la version de cURL dis­po­nible dans votre version de Windows 10.

Au gré du dé­ve­lop­pe­ment de cURL, le nombre de pro­to­coles uti­li­sables n’a cessé de croître. C’est ce que l’on constate en comparant les deux versions con­sul­tées au préalable :

7.55.1 (août 2017) 7.70.0 (avril 2020)
dict dict
file file
ftp ftp
ftps ftps
gopher
http http
https https
imap imap
imaps imaps
ldap
ldaps
mqtt
pop3 pop3
pop3s pop3s
rtsp
scp
sftp
smb
smbs
smtp smtp
smtps smtps
telnet telnet
tftp tftp

Les pos­si­bi­li­tés de transfert de données dans les dif­fé­rents réseaux s’en trouvent également étendues.

Installer la version actuelle de cURL

La version de cURL installée avec Windows est indiquée dans le système sous forme de chemin d’accès auquel l’uti­li­sa­teur actuel et l’ad­mi­nis­tra­teur peuvent accéder. Si vous souhaitez utiliser tous les pro­to­coles de cURL dis­po­nibles, la version actuelle de cURL pour Windows doit être installée. La méthode la plus simple consiste à té­lé­char­ger la version ac­tuel­le­ment dis­po­nible sous forme de fichier ZIP depuis le site Internet du dé­ve­lop­peur. Vous y trouverez également des in­for­ma­tions con­cer­nant les mo­di­fi­ca­tions apportées (journal des mo­di­fi­ca­tions). Dans l’ex­plo­ra­teur, dé­com­pres­sez le fichier vers un ré­per­toire (par ex. « curl »). Créez un ré­per­toire du même nom sur votre disque dur système, par ex. C:\curl\. Copiez-y tous les fichiers et ré­per­toires provenant du dossier de té­lé­char­ge­ment de cURL. Le fichier exé­cu­table curl.exe est situé dans le sous-ré­per­toire \bin dans lequel vous trouverez également le fichier de cer­ti­fi­cat curl-ca-bundle.crt. Vous aurez notamment besoin de ce dernier pour utiliser le protocole SFTP ou HTTPS.

Lancez ensuite l’invite de commandes Windows et saisissez :

# aller 2 niveaux de répertoire au-dessus
C:\Users\Utilisateurtype>cd..
C:\Users>cd..
# passer au répertoire indiqué
C:\cd curl\bin
C:\curl\bin>

À la position de saisie, vous disposez à présent de toute la palette de fonc­tion­na­li­tés de cURL pour Windows qui est utilisée ici pour d’autres af­fi­chages. Pour procéder au test, vérifiez sim­ple­ment la version de la façon décrite ci-dessus. La méthode de mise à jour de cURL décrite ici fonc­tionne pour Windows 7, 8 et 10. Vous pouvez également intégrer la version actuelle de cURL dans le système ; pour cela, vous devez créer un chemin d’accès système ainsi que trouver le chemin d’accès vers les anciennes versions (!) et le dé­sac­ti­ver.

cURL en pratique, à travers des exemples simples

L’uti­li­sa­tion de cURL pour Windows s’effectue en sai­sis­sant des commandes tex­tuelles dans l’invite de commandes. Pour un aperçu rapide, utilisez la commande :

C:\curl\bin>curl --help

L’affichage détaillé du manuel est ac­ces­sible avec :

C:\curl\bin>curl --manual

Pour en­re­gis­trer les deux versions ap­pa­rais­sant dans l’invite de commandes, il suffit de les copier-coller sous forme de fichier txt dans un dossier séparé. De cette façon, vous pouvez accéder fa­ci­le­ment aux commandes avec la recherche dans le document tout en gardant l’invite de commandes dis­po­nible.

Conseil

Utilisez un éditeur de texte dans Windows. Vous pouvez y noter les commandes pour cURL, les vérifier puis les copier dans l’invite de commandes. Si une erreur se glisse dans la commande, vous vous éparg­ne­rez ainsi de la frus­tra­tion et n’aurez pas à réitérer votre saisie. Par ailleurs, vous pouvez en­re­gis­trer vos propres « thé­ma­tiques de commandes » par exemple avec vos données d’accès pour de futures actions.

Cette étape peut être réalisée encore plus ra­pi­de­ment grâce à

C:\curl\bin >curl --help | clip

La commande CMD « clip » avec un « | » antéposé copie im­mé­dia­te­ment la version actuelle de l’invite de commandes dans la mémoire tampon de Windows de façon à pouvoir coller le contenu dans un document vide avec [Ctrl] + [V] et à l’y en­re­gis­trer.

En­re­gis­trer lo­ca­le­ment des in­for­ma­tions sur un site Internet

Il est possible d’en­re­gis­trer des in­for­ma­tions sur un site Internet dans un fichier local à l’aide d’une routine cURL simple. Le fichier avec les in­for­ma­tions doit également contenir le nom de fichier infos.html et être en­re­gis­tré dans le même ré­per­toire que l’ins­tal­la­tion de cURL sur le PC local. Sous Windows, cURL utilise à cet effet l’option « -o » (o minuscule et non un zéro).

curl -o infos.html https://www.20minutes.fr/

Cette requête génère un fichier de plus de 700 ki­looc­tets avec l’état exact du site Internet 20minutes.fr au moment de la requête.

Si vous consultez ce fichier dans un na­vi­ga­teur depuis le support de données local, le site Internet vous sera affiché à l’état dans lequel il a été en­re­gis­tré.

Cela fonc­tionne également avec les fichiers in­di­vi­duels d’un serveur Web. Le fichier ref.pdf doit par ailleurs être renommé en ré­fé­rences.pdf après le té­lé­char­ge­ment :

curl -o références.pdf https://mapage.tld/ref.pdf
ou
curl --output références.pdf https://mapage.tld/ref.pdf

Afficher l’en-tête d’un site Internet

Pour lire le contenu d’un en-tête de site Internet – compris entre les balises HTML <head>…</head> –, nous utilisons une option avant l’adresse Web à appeler (I = i majuscule) :

curl --head https://google.com
#ou
curl -I https://google.com

Lire des in­for­ma­tions dé­tail­lées

Pour lire encore plus d’in­for­ma­tions avec cURL, il est possible de compléter la saisie avec l’option sup­plé­men­taire « -v » ou « --verbose ». De cette façon, vous obtenez notamment des in­for­ma­tions sur l’adresse Ipv6 utilisée, le port, les cer­ti­fi­cats établis et bien d’autres choses encore.

curl -I https://google.com -v
#ou
curl --head https://google.com --verbose

Char­ge­ment de données via le protocole SFTP

La commande cURL devient ici un peu plus complexe, car des iden­ti­fiants uti­li­sa­teur doivent être trans­fé­rés au serveur pour SFTP afin de procéder à la connexion et à la vé­ri­fi­ca­tion. Ce que nous réalisons à présent :

curl -k sftp://serveur-ftp-type:22 --user Utilisateurtype:motdepassetype-T fichiertype.pdf

Dans la fenêtre de l’invite de commandes Windows, vous pouvez suivre le dé­rou­le­ment du char­ge­ment. Le fichier chargé devrait à présent se trouver dans le ré­per­toire racine de votre serveur FTP. Si vous faites une erreur dans la saisie, cURL pour Windows réagit ra­pi­de­ment avec le message « curl: (67) Au­then­ti­ca­tion failure ». Si vous essayez ce transfert avec l’ancienne version de cURL 7.55.1 men­tion­née plus haut, le message suivant apparaît : « curl: (1) Protocol "sftp" not supported or disabled in libcurl ».

Té­lé­char­ge­ment via le protocole SFTP et cURL

Avec la version actuelle de cURL, le té­lé­char­ge­ment fonc­tionne de façon tout aussi simple sans client FTP spé­ci­fique, sous réserve na­tu­rel­le­ment que le fichier pour le té­lé­char­ge­ment existe sur le serveur FTP :

curl -k sftp://serveur-ftp-type:22 --user Utilisateurtype:motdepassetype-o fichiertype.pdf
Note

cURL est devenu un outil puissant. Procédez avec prudence lorsque vous cURLez votre propre en­vi­ron­ne­ment de serveur. Réaliser une sau­ve­garde de vos données et utiliser un support de res­tau­ra­tion de Windows vous permet de vous assurer en cas de problème.

cURLer le bulletin météo

L’appel du bulletin de météo local montre que les ca­rac­tères ASCII per­met­tent de préparer les in­for­ma­tions de façon plus at­trayante (et plus pratique) :

curl http://wttr.in/LOCATION

La même opération peut être réalisée avec n’importe quel lieu.

cURL et PHP – un duo efficace

Afin de permettre l’uti­li­sa­tion de cURL dans la pro­gram­ma­tion quo­ti­dienne, cURL est également dis­po­nible en PHP. Vérifiez votre serveur Web avec la requête PHP :

<?php
phpinfo();
?>

En­re­gis­trez ce code sous forme de fichier phpinfo.php et placez-le dans le ré­per­toire racine de votre serveur Web. En con­sul­tant ce fichier dans le na­vi­ga­teur avec "https://mapage.tld/phpinfo.php", vous obtenez toutes les in­for­ma­tions sur les options dis­po­nibles dans votre version de PHP, ainsi que la dis­po­ni­bi­lité de cURL.

Pour consulter un site Internet avec des in­for­ma­tions sup­plé­men­taires, il suffit de quelques lignes de code PHP. Nous prenons ici comme exemple le site français de Microsoft :

<?php
$site = curl_init(); //initialiser le gestionnaire de cURL
curl_setopt($site, CURLOPT_URL, "https://www.microsoft.com/fr-fr/"); //indiquer l’URL
curl_setopt($site,CURLOPT_RETURNTRANSFER,true); // définir les paramètres optionnels
curl_setopt($site,CURLOPT_HEADER, true); //Afficher l’en-tête; supprimer avec « false »
$result=curl_exec($site); //exécuter le cURL à proprement parler
curl_close($site);
echo $result;
?>

En­re­gis­trez par exemple ce code sous forme de curlinfo.php dans le ré­per­toire racine de votre serveur Web.

Comme seul le code PHP se trouve dans le fichier, les in­for­ma­tions de l’en-tête sont indiquées sous une forme non formatée dans la police du na­vi­ga­teur. Une routine de ce type constitue la base pour intégrer des données de sites Internet dans votre propre présence Web avec PHP et cURL.

Po­wer­Shell vs. invite de commandes

Sous Windows 10, un autre outil de dé­ve­lop­pe­ment puissant a été im­plé­menté : Po­wer­Shell. Cette suite lo­gi­cielle est re­con­nais­sable aux lettres « PS » avant le chemin d’accès Windows après avoir cliqué droit sur le symbole Windows. Windows Po­wer­Shell est appelé à remplacer l’invite de commandes mise à dis­po­si­tion sous le terme « Console » et offre des pos­si­bi­li­tés plus vastes pour ad­mi­nis­trer les sites Internet et les serveurs. Cependant, seule une partie des commandes cURL est uti­li­sable dans Po­wer­Shell. D’autres commandes doivent être « traduites ».

Le « tra­duc­teur » est intégré par défaut et est activé dans Po­wer­Shell avec « GetAlias » suivi de la commande cURL.

PS C:\WINDOWS\system32> Get-Alias curl
# génère la saisie
CommandType	Name	Version	Source
-----------	----	-------	------
Alias	curl -> Invoke-WebRequest

Cette commande permet de savoir avec quelle commande Po­wer­Shell un site Internet peut être cURLé :

PS C:\WINDOWS\system32> Invoke-WebRequest https://google.com/
Aller au menu principal