Quelle est la différence entre curl et wget? [fermé]

38

Ces deux curlet wgetsont l' utilisation pour le téléchargement de fichiers, etc. Y at - il raison d'utiliser un sur l'autre?

fouiner
la source
1
Définir "bon usage"
AB
12
Considérer le vote sur la clôture comme étant basé sur une opinion: comment poser des questions sur la différence entre deux outils encourage-t-il les réponses basées sur une opinion?
Michael Martin-Smucker
1
@ MichaelMartin-Smucker "Supposons que je doive télécharger une page Web, disons www.google.com. Devrais-je rechercher wget ou curl?" qu'est-ce que c'est si pas basé sur l'opinion?
Muru
2
@muru, cela dépend de ce que vous entendez par "télécharger une page Web". Si vous voulez dire envoyer une requête http et recevoir les résultats, curl est idéal. Si vous voulez dire télécharger une page, d’autres pages auxquelles elle renvoie, et des ressources associées, curl ne fonctionnera pas et wget est la seule option. Il y a des différences factuelles entre eux qui font que ceci n'est pas basé sur une opinion.
Barbecue
3
@muru Je suppose que nous avons juste différentes interprétations du sentiment qui sous-tend la question. Dans mon interprétation, le sentiment est le suivant: "J'ai entendu parler de ces deux outils qui semblent faire la même chose. Quelle est la différence entre eux et quand devrais-je choisir l'un plutôt que l'autre? Et dans ce cas précis?" ... ce qui me semble une question raisonnable.
Michael Martin-Smucker le

Réponses:

33

Après avoir défini "bon usage", utilisez wget.

Pourquoi? Voilà pourquoi:

Récursif! Le principal atout de wget par rapport à curl est sa capacité à télécharger de manière récursive, ou même simplement à télécharger tout ce qui est référencé depuis une ressource distante, qu'il s'agisse d'une page HTML ou d'une liste de répertoires FTP.


Shameless copié d' ici

curl

  • bibliothèque . curlest alimenté par libcurl- une bibliothèque multiplate-forme avec une API stable qui peut être utilisée par tout un chacun. Cette différence est majeure car elle crée une attitude complètement différente sur la manière de faire les choses en interne. Il est également légèrement plus difficile de créer une bibliothèque qu'un "simple" outil de ligne de commande.

  • des pipes . curlfonctionne plus comme la catcommande Unix traditionnelle , il envoie plus de choses à stdout, et lit plus de stdinmanière "tout est une pipe". wgetest plus comme cp, en utilisant le même analogue.

  • Coup unique . curlest essentiellement fait pour faire des transferts de données en un seul coup. Il transfère uniquement les URL spécifiées par l'utilisateur et ne contient aucune logique de téléchargement récursif ni aucun type d'analyseur HTML.

  • Plus de protocoles . curlprend en charge FTP, FTPS, Gopher, HTTP, HTTPS, SCP, SFTP, TFTP, TELNET, DICT, LDAP, LDAPS, FILE, POP3, IMAP, SMB / CIFS, SMTP, RTMP et RTSP. Wget ne supporte que HTTP, HTTPS et FTP.

  • Plus portable . curlconstruit et fonctionne sur beaucoup plus de plates-formes que wget. Par exemple: OS / 400, TPF et d'autres plates-formes plus "exotiques" qui ne sont pas des clones Unix simples.

  • Plus de bibliothèques SSL et support SSL . curlpeut être construit avec une bibliothèque SSL / TLS parmi onze (11!), et offre plus de contrôle et une prise en charge plus étendue des détails de protocole. curlprend en charge l'épinglage de clés publiques.

  • Authentification HTTP . curlprend en charge davantage de méthodes d'authentification HTTP, en particulier sur les serveurs proxy HTTP: Basic, Digest, NTLM et Negotiate

  • CHAUSSETTES . curlprend en charge plusieurs versions du protocole SOCKS pour l'accès proxy

  • Bidirectionnel . curloffre des fonctionnalités de téléchargement et d'envoi. wgetoffre uniquement un support HTTP POST simple.

  • Envoi multipart / formulaire-données HTTP , qui permet aux utilisateurs de "télécharger" HTTP et en général d'émuler les navigateurs et de faire l'automatisation HTTP dans une plus large mesure

  • curl les soutiens gzip et gonfle l'encodage de contenu et effectue la décompression automatique

  • curl offre et effectue la décompression de HTTP encodée par transfert, wget ne le fait pas

  • curl prend en charge HTTP / 2 et se connecte par double pile à l'aide de Happy Eyeballs

  • Beaucoup plus d'activité de développeur . Bien que cela puisse être débattu, j’envisage trois paramètres ici: l’activité de la liste de diffusion, la fréquence de validation du code source et la fréquence de publication. Tous ceux qui suivent ces deux projets peuvent voir que le projet Curl est beaucoup plus rapide dans tous ces domaines, et ce depuis 10 ans. Comparer sur openhub


wget

  • wgetest en ligne de commande uniquement. Il n'y a pas de bibliothèque.

  • Récursif !wgetLe principal atout de Curl par rapport à curl est sa capacité à télécharger de manière récursive, ou même simplement à télécharger tout ce qui est référencé depuis une ressource distante, qu’il s’agisse d’une page HTML ou d’une liste de répertoires FTP.

  • Plus vieux . wgeta des traces remontant à 1995, alors qu’on curlne peut en retrouver la trace avant la fin de 1996.

  • GPL . wgetest 100% GPL v3. curl est licencié MIT.

  • GNU . wgetfait partie du projet GNU et tous les droits d’auteur sont attribués à la FSF. Le projet Curl est entièrement autonome et indépendant, sans organisation parentale avec presque tous les droits d'auteur détenus par Daniel.

  • wgetne nécessite aucune option supplémentaire pour simplement télécharger une URL distante dans un fichier local, alors que curlnécessite -oou -O.

  • wget prend en charge la liste des suffixes publics pour la gestion des domaines de cookie, contrairement à curl.

  • wget prend en charge uniquement GnuTLS ou OpenSSL pour SSL / TLS

  • wget prend en charge uniquement l'authentification de base en tant que seul type d'authentification sur un proxy HTTP

  • wget n'a pas de support SOCKS

  • Sa capacité à récupérer d'un transfert prématurément rompu et à poursuivre le téléchargement n'a pas d'équivalent en boucle.

  • wget peut être saisi en utilisant uniquement la main gauche sur un clavier qwerty!

UN B
la source
1
Oui, wget est idéal pour la mise en miroir!
joeytwiddle
1
"Le projet Curl est entièrement autonome et indépendant, sans organisation parentale avec presque tous les droits d'auteur détenus par Daniel." Pas sûr que ce soit une mauvaise chose ...
barbecue le
"Sa capacité à récupérer d'un transfert prématurément rompu et à poursuivre le téléchargement n'a pas d'équivalent en boucle." Ai-je bien compris cette phrase? Ne curl -C -continue pas le téléchargement interrompu?
Siyuan Ren
1
Pourquoi recommandez-vous wget ? Même après avoir regardé les comparaisons que vous avez écrites vous-même, curl semble bien supérieur. wget can be typed in using only the left hand on a qwerty keyboard!, WTF ?? wget requires no extra options to simply download a remote URL to a local file, while curl requires -o or -O.
Anmol Singh Jaggi
2
La taille compte aussi: sur une nouvelle image ubuntu, la taille wget est 2M par rapport à boucle 5M emballé (avec DEPS, x3 totale décompressé)
Eran W
19

Il existe de nombreux outils qui peuvent télécharger comme curl, snarf, wget, pavuk, fget, fetch, lftp, aria2, HTTracketc. Utilisez - le selon vos besoins et qui fonction que vous souhaitez utiliser avec le téléchargement. Vérifier la table des fonctionnalités et utilisez-la en conséquence.

Curl:

  • Curl supporte plus de protocoles FTP, FTPS, HTTP, HTTPS, SCP, SFTP, TFTP, TELNET, DICT, LDAP, LDAPS, FILE, POP3, IMAP, SMTP, RTMP et RTSP
  • Curl supporte plus de librairies SSL
  • Curl prend en charge davantage de méthodes d'authentification HTTP, en particulier via les serveurs proxy HTTP: Basic, Digest, NTLM et Negotiate
  • Curl est alimenté par libcurl, une bibliothèque multi-plateforme avec une API stable qui peut être utilisée par tout le monde.

Wget:

  • Bien que wget supporte HTTP, HTTPS et FTP
  • Wget prend en charge uniquement GnuTLS ou OpenSSL pour SSL / TLS
  • Wget prend en charge uniquement l'authentification de base en tant que seul type d'authentification sur un proxy HTTP.
  • Wget n’est qu’un outil en ligne de commande, il n’a pas de bibliothèque.

Ressources importantes pour plus d'informations:

pl_rock
la source
"wget ​​est un outil en ligne de commande seulement il possède une bibliothèque connue." Je ne comprends pas cette ligne.
Lucio
3

Ils ont beaucoup de fonctionnalités en commun, mais curlont plus d'options. Car wgetil peut parfois être suffisant de feuilleter man wget, mais curlje dois étudier cette page Web dans un navigateur. Je crois que tout ce que votre navigateur peut faire, curlpeut faire aussi bien.

Jos
la source
2

Il y a une autre différence entre wget et curl qui, à mon avis, est significative.

Wget est un utilitaire de ligne de commande autonome destiné principalement à récupérer du contenu Internet rapidement et simplement.

Curl, d’autre part, est fondamentalement un frontal pour la puissante bibliothèque libcurl. Libcurl fournit un ensemble très puissant d’outils permettant de travailler avec des URL sous toutes leurs formes et variantes, et est disponible pour presque toutes les langues et plates-formes. Curl vous donne fondamentalement la possibilité d'utiliser cette bibliothèque dans des scripts shell.

barbecue
la source