web-dev-qa-db-fra.com

Quelle est la différence entre curl et wget?

Ces deux noms curl et wget sont utilisés pour télécharger des fichiers, etc. Y a-t-il une raison pour utiliser l'un sur l'autre?

38
snoop

Une fois que vous avez défini "utilisation appropriée", utilisez wgetname__.

Pourquoi? C'est 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.


Sans vergogne copié de ici

curlname__

  • bibliothèque . curlest optimisé par libcurl- une bibliothèque multiplate-forme avec une API stable pouvant ê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 un peu plus difficile de créer une bibliothèque qu'un "simple" outil de ligne de commande.

  • tuyaux . curlfonctionne plus comme la commande Unix cattraditionnelle, il envoie plus de choses à stdoutet lit davantage à partir de stdinde manière "tout est tuyau". wgetressemble plus à cpname__, en utilisant le même analogue.

  • Seul coup . curlest essentiellement conçu pour effectuer des transferts de données uniques. 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 les protocoles 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 plateformes que wgetname__. 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 de support SSL . curlpeut être construit avec l'une des onze (11!) bibliothèques SSL/TLS différentes. Il offre plus de contrôle et une prise en charge plus étendue des détails de protocole. curlprend en charge l'épinglage de clé publique.

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

  • CHAUSSETTES. curlsupporte 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 d'effectuer un "téléchargement" HTTP et en général d'émuler des navigateurs et de faire une automatisation HTTP plus large

  • curlsupporte gzipet gonfle Content-Encoding et effectue une décompression automatique

  • curloffre et effectue la décompression de HTTP encodé par transfert, wget pas

  • curlsupporte HTTP/2 et se connecte en double pile avec Happy Eyeballs

  • Beaucoup plus d'activité de développement . 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 a un rythme beaucoup plus rapide dans tous ces domaines, et ce depuis 10 ans. Comparer sur openhub


wgetname__

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

  • Récursif ! Le principal atout de wgetname __ 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 ancien . wgeta des traces remontant à 1995, alors que curlne peut être suivi au plus tôt à la fin de 1996.

  • GPL. wgetest 100% GPL v3. curl est MIT sous licence.

  • 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 -o ou -O.

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

  • wgetne prend en charge que GnuTLS ou OpenSSL pour SSL/TLS

  • wgetne prend en charge que l'authentification de base en tant que seul type d'authentification sur le proxy HTTP

  • wgetn'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.

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

33
A.B.

De nombreux outils peuvent être téléchargés, tels que curl, snarf, wget, pavuk, fget, fetch, lftp, aria2, HTTrack, etc. Utilisez-le en fonction de vos besoins et des fonctionnalités que vous souhaitez utiliser avec le téléchargement. Vérifiez table de fonctions et utilisez-le 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 multiplate-forme avec une API stable pouvant ê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:

19
pl_rock

Ils ont beaucoup de fonctionnalités en commun, mais curl a plus d'options. Pour wget, il peut parfois être suffisant de feuilleter man wget, mais pour curl, je dois étudier cette page Web dans un navigateur. Je crois que tout ce que votre navigateur peut faire, curl peut également le faire.

3
Jos

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 essentiellement la possibilité d’utiliser cette bibliothèque dans des scripts Shell.

2
barbecue