‚ŹĪ Time to read: 3 mins 3 secs

[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

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