[Linux] Wget ou Curl?

Avant tous, pour ceux qui ne connaissent pas Wget et Curl (Client URL Request Library), se sont deux commandes Linux développées pour télécharger des fichiers depuis INTERNET. Le principe est simple, ces deux commandes se comportent comme le navigateur mais gardent le contenus en sortie qui sera principalement affiché dans le navigateur mais là dans le terminal.
Il existe plusieurs outils qui nous permettent de télécharger un fichier depuis un lien mais wget et curl se sont implantés par défaut dans les noyaux Linux car ils sont libres et open-sources (voici le lien du code source de CURL) donc c’est quoi la différence entre ces deux commandes?
Ces deux commandes peuvent:

  • Télécharger un contenu depuis un lien FTP, HTTP ou bien HTTPS
  • Envoyer des requêtes HTTP/POST vers un serveur web.
  • Les deux supportent les Cookies
  • Les deux supportent les META LINKs

La différence?

Wget est un outil libre avec une licence GPL v3 par contre curl est sous la licence MIT ce qui lui permet d’adopter des protocoles qui ne sont pas libres et bien sous la même licence.

  • Curl est une bibliothèque, libcurl- dont on peut l’utiliser dans un projet C++
  • Curl utilise la sortie stdout dont on peut créer un PIPE avec cette commande, par exemple je récupère un fichier texte depuis un lien et la sortie dont c’est le contenu du fichier, je peux l’utiliser comme paramètre dans une autre commande ou bien télécharger un script shell et l’exécuter.
  • Curl supporte beaucoup de protocols comme FTP, FTPS, Gopher, HTTP, HTTPS, SCP, SFTP, TFTP, TELNET, DICT, LDAP, LDAPS, FILE, POP3, IMAP, SMB/CIFS, SMTP, RTMP et RTSP. Wget supporte que HTTP, HTTPS and FTP.
  • CURL supporte beaucoup de méthodes d’authentification, spécialement en HTTP: Basic, Digest, NTLM et Negotiate
  • Curl nous offre une connexion bidirectionnelle. il offre l’upload et l’envoie des fichiers en multipart/form-data
  • Curl supporte la compression du contenu gzip et deflate et réalise la décompression automatiquement.
  • curl supporte le HTTP/2 et réalise en dual-stack connects en utilisant le Happy Eyeballs

Pourquoi Gnu/Linux  n’adopte pas curl par défaut?

La question est simple car GNU/Linux est un projet qui vise à créer un OS 100% libre et sous la licence GPL v3, c’est pour cela qu’on trouve wget par défaut.
En 19 Novembre 1997, une compagnie japonaise CURL Corporation a enregistré son nom et son nom de domaine curl.com et obtient sa trademark en 18 Mai 1998 sous l’immatricule N° 75487363. Le suédois Daniel Stenberg le chef du projet cURL a continué son travail avec le nom cURL car au suède le terme “varumärke” n’existait même pas. Ce dernier a été contacté par la compagnie Curl Corporation en 11 Aout 2001 pour lui mentionner la collision de deux noms lors du publication de son projet en 6 Aout 2001 dont il a publié une lettre au grand publique pour expliquer cette collision.
[Source + la lettre]
On conclu alors que les deux outils sont des outils trop cool et simples à utiliser sur un terminal. On peut les utiliser afin de tester un serveur web don’t au lieu de créer un formulaire pour tester la réception des données, on envoie directement les données par une commande curl.
Par exemple: envoyer un tableau de deux variables vers un script PHP

curl -d "username=admin&password=admin&submit=Login" --dump-header headers http://localhost/Login.php

ou bien envoyer les données sous format d’un JSON,

curl -i -H "Accept: application/json" -H "Content-Type: application/json" -X GET http://hostname/resource | json

 

You Might Also Like

Leave a Reply