cURL (prononcé comme « curl », / kɜːrl / ) est un logiciel libre et open source permettant de transférer des données vers et depuis des serveurs Internet . Il peut télécharger des ressources identifiées par des URL depuis un serveur web via HTTP et prend en charge divers protocoles réseau , schémas d'URI , plusieurs versions de HTTP et le proxy . Le projet comprend une bibliothèque ( libcurl ) et un outil en ligne de commande ( curl ), largement portés sur différentes plateformes informatiques . Il a été créé par Daniel Stenberg , qui en est toujours le développeur principal.
Histoire
Le logiciel a été initialement publié en 1996 , sous le nom de curl httpget, puis est devenu curl urlget, avant d'adopter son nom actuel curl Ce nom signifie « Client et URL » . L'auteur original et développeur principal est le Suédois Daniel Stenberg , qui a créé curl pour alimenter une partie d'un bot IRC , car il souhaitait fournir automatiquement aux utilisateurs d'une salle de discussion IRC des taux de change récupérés sur un site web .
Composants
libcurl
libcurlest une bibliothèque de transfert d'URL côté client qui alimente curl. Elle prend en charge de nombreux protocoles Internet, notamment 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 , WS et WSS .
libcurl prend en charge les versions HTTP 0.9, 1.0, 1.1, HTTP/2 et HTTP/3, y compris h2c, les modes de connaissance préalable, de double connexion et QUIC avec des échanges de clés 0-RTT.
La bibliothèque offre des fonctionnalités telles que la gestion des cookies , les méthodes de requête HTTP standard ( GET , POST , PUT , HEAD , téléchargements de formulaires multipart) et les mécanismes d'authentification, notamment Basic, Digest, NTLM , Negotiate, CRAM-MD5 , SCRAM-SHA, Kerberos, les jetons Bearer, AWS Sigv4, SASL et la lecture des informations d'identification à partir du fichier .netrc.
libcurlprend en charge diverses fonctionnalités de sécurité et de transport, notamment TLS 1.0 - 1.3 , l'authentification mutuelle, STARTTLS , l'agrafage OCSP , Encrypted Client Hello ( ECH ), False Start, l'épinglage de clés, la préparation post-quantique , la reprise de session, les données anticipées, l'import/export de session, HSTS , Alt-Svc, Public Suffix List ( PSL ), les balises d'entité ( ETags ), les requêtes de plage, la compression de transfert ( gzip , Brotli , zstd ), les en-têtes personnalisés, les méthodes personnalisées et le suivi de redirection.
Il offre également une prise en charge des proxys et des réseaux, notamment SOCKS4 , SOCKS5 , HAProxy et les proxys HTTP avec chaînage et les sockets de domaine Unix , ainsi que l'authentification par utilisateur et mot de passe . Les fonctionnalités avancées de résolution de noms incluent DNS sur HTTPS , les serveurs DNS personnalisés , les mappages d'hôtes/ports et la mise en cache DNS.
Des fonctionnalités supplémentaires incluent la reprise des transferts de fichiers, le chargement FTP , le chargement HTTP via formulaire , les certificats HTTPS et des mécanismes de contrôle et de surveillance des transferts tels que des délais d'attente configurables, des tentatives de retransmission automatiques, une limitation du débit et la détection des connexions interrompues. La bibliothèque offre également des fonctionnalités de reporting avancées, notamment des métadonnées au format JSON, la gestion de la disposition du contenu, l'affichage du nom d'hôte IDN et des informations de transfert personnalisables.
La libcurlbibliothèque est portable, car elle se construit et fonctionne de manière identique sur la plupart des plateformes, y compris :
La libcurlbibliothèque est sûre pour les threads et compatible IPv6 . Des liaisons sont disponibles pour plus de 50 langages , dont C , C++ , Java , Julia (fournie avec), PHP et Python .
La libcurlbibliothèque prend en charge SSL/TLS via GnuTLS , mbedTLS , SChannel (sur Windows), OpenSSL , BoringSSL , AWS-LC , QuicTLS , LibreSSL , AmiSSL , wolfSSL et rustls .
boucle
curlest un outil en ligne de commande permettant d'obtenir ou d'envoyer des données, y compris des fichiers, en utilisant la syntaxe URL . curlIl fournit une interface à la libcurlbibliothèque ; il prend en charge tous les protocoles libcurlpris en charge.
curlCe logiciel prend en charge HTTPS et effectue par défaut la vérification des certificats SSL ou TLS. Lors de curlla connexion à un serveur distant via HTTPS, il obtient le certificat du serveur distant, puis vérifie sa validité auprès de son magasin de certificats d'autorité de certification (CA) afin de s'assurer qu'il s'agit bien du serveur annoncé. Certains curllogiciels intègrent un fichier de certificat CA. Plusieurs options permettent de spécifier un certificat CA, telles que `--cacert` --cacertet `--cacert` --capath. L' --cacertoption `--cacert` permet de spécifier l'emplacement du fichier de certificat CA.
À partir de Windows 10 version 1809, Windows est livré avec curl.exe. Sur Microsoft Windows, si un fichier de certificat CA n'est pas spécifié, curl recherchera le curl-ca-bundle.crtfichier aux emplacements suivants, dans l'ordre indiqué :
- Dossier de l'application (où
curl.exeelle se trouve) - Répertoire de travail actuel
C:\Windows\System32annuaireC:\Windowsannuaire- Répertoires spécifiés dans la
PATHvariable d'environnement
curlUn message d'erreur sera renvoyé si le serveur distant utilise un certificat auto-signé ou si son certificat n'est pas signé par une autorité de certification répertoriée dans le fichier de certificats d'autorité de certification. -kL' --insecureoption `--no-certificate` permet d'ignorer la vérification du certificat. Si le serveur distant est approuvé, son certificat d'autorité de certification peut également être ajouté au fichier de certificats d'autorité de certification.
petite boucle
tiny-curlIl s'agit d'une version allégée de libcurl développée par wolfSSL Inc. pour les systèmes embarqués et les appareils aux ressources limitées. Elle implémente la fonctionnalité HTTPS en environ 100 Ko de code sur les architectures 32 bits classiques.
Licence
curl et libcurl sont distribués sous la licence MIT . tiny-curl, une version de curl optimisée pour les systèmes embarqués et prise en charge par wolfSSL, est disponible sous licence GNU GPLv3 ou ultérieure et sous licence commerciale.
curl à toute épreuve, l'édition à support à long terme (LTS), utilise par défaut la même licence curl, avec une option de licence commerciale pour les organisations qui nécessitent un support contractuel ou une couverture de garantie.