Was ist der Unterschied zwischen Curl und Wget? [geschlossen]

38

Beide curlund wgetwerden zum Herunterladen von Dateien usw. verwendet. Gibt es einen Grund, eine über die andere zu verwenden?

schnüffeln
quelle
1
Definieren Sie "ordnungsgemäße Verwendung"
AB
12
In Bezug auf den Abschluss der Abstimmung als meinungsbasiert: Wie fördert die Frage nach dem Unterschied zwischen zwei Instrumenten meinungsbasierte Antworten?
Michael Martin-Smucker
1
@ MichaelMartin-Smucker "Angenommen, ich muss eine Webseite herunterladen, sagen wir mal www.google.com. Soll ich nach wget oder curl suchen?" Was ist das, wenn nicht meinungsbasiert?
Muru
2
@muru, Es hängt davon ab, was Sie unter "Herunterladen einer Webseite" verstehen. Wenn Sie eine http-Anfrage senden und die Ergebnisse zurückerhalten möchten, ist Curl ideal. Wenn Sie eine Seite herunterladen möchten, andere Seiten, auf die sie verweist, und verwandte Elemente, funktioniert Curl nicht, und Wget ist die einzige Option. Es gibt sachliche Unterschiede zwischen ihnen, die diese Ansicht nicht begründen.
Barbecue
3
@muru Ich denke, wir haben nur unterschiedliche Interpretationen des Gefühls hinter der Frage. In meiner Interpretation lautet das Gefühl: "Ich habe von diesen beiden Werkzeugen gehört, die anscheinend dasselbe tun. Was ist der Unterschied zwischen ihnen und wann sollte ich eines vor dem anderen wählen? Was ist in diesem speziellen Fall?" ... das scheint mir eine vernünftige Frage zu sein.
Michael Martin-Smucker

Antworten:

33

Nachdem Sie "ordnungsgemäße Verwendung" definiert haben, verwenden Sie wget.

Warum? Deshalb:

Rekursiv! Die größte Stärke von wget im Vergleich zu curl ist die Möglichkeit, rekursiv oder einfach alles herunterzuladen, worauf von einer Remote-Ressource verwiesen wird, sei es eine HTML-Seite oder eine FTP-Verzeichnisliste.


Schamlos von hier kopiert

curl

  • Bibliothek . curlwird angetrieben von libcurl- einer plattformübergreifenden Bibliothek mit einer stabilen API, die von jedem verwendet werden kann. Dieser Unterschied ist gravierend, da er eine völlig andere Einstellung zur internen Arbeitsweise erzeugt. Es ist auch etwas schwieriger, eine Bibliothek zu erstellen als ein "bloßes" Befehlszeilenprogramm.

  • Rohre . curlFunktioniert eher wie der traditionelle Unix- catBefehl, sendet mehr Daten an stdoutund liest mehr stdinauf "Alles ist eine Pipe" Weise. wgetist eher cpmit dem gleichen analogen.

  • Einzelschuss . curlist im Grunde genommen für die einmalige Übertragung von Daten gedacht. Sie überträgt nur die vom Benutzer angegebenen URLs und enthält weder eine rekursive Download-Logik noch eine Art HTML-Parser.

  • Weitere Protokolle . curlUnterstützt FTP, FTPS, Gopher, HTTP, HTTPS, SCP, SFTP, TFTP, TELNET, DICT, LDAP, LDAPS, DATEI, POP3, IMAP, SMB / CIFS, SMTP, RTMP und RTSP. Wget unterstützt nur HTTP, HTTPS und FTP.

  • Tragbarer . curlbaut und läuft auf viel mehr Plattformen als wget. Zum Beispiel: OS / 400, TPF und andere "exotische" Plattformen, die keine einfachen Unix-Klone sind.

  • Weitere SSL-Bibliotheken und SSL-Unterstützung . curlkann mit einer von elf (11!) verschiedenen SSL / TLS-Bibliotheken erstellt werden und bietet mehr Kontrolle und umfassendere Unterstützung für Protokolldetails. curlunterstützt das Pinning von öffentlichen Schlüsseln.

  • HTTP Auth . curlunterstützt mehr HTTP-Authentifizierungsmethoden, insbesondere über HTTP-Proxys: Basic, Digest, NTLM und Negotiate

  • Socken . curlunterstützt mehrere SOCKS-Protokollversionen für den Proxy-Zugriff

  • Bidirektional . curlBietet Upload- und Sendefunktionen. wgetBietet nur einfache HTTP-POST-Unterstützung.

  • HTTP-Multipart- / Formulardaten-Versand , mit dem Benutzer HTTP-Uploads durchführen und im Allgemeinen Browser emulieren und HTTP-Automatisierung in größerem Umfang durchführen können

  • curlunterstützt gzipund bläst Content-Encoding auf und dekomprimiert es automatisch

  • curl bietet und dekomprimiert transfercodiertes HTTP, wget nicht

  • curl Unterstützt HTTP / 2 und Dual-Stack-Verbindungen mit Happy Eyeballs

  • Viel mehr Entwickleraktivität . Während dies diskutiert werden kann, betrachte ich hier drei Metriken: Aktivität der Mailing-Liste, Häufigkeit des Commits des Quellcodes und Häufigkeit der Veröffentlichung. Jeder, der diese beiden Projekte verfolgt, kann feststellen, dass das Curl-Projekt in all diesen Bereichen ein viel höheres Tempo aufweist, und das schon seit über 10 Jahren. Vergleiche auf openhub


wget

  • wgetist nur Befehlszeile. Es gibt keine Bibliothek.

  • Rekursiv ! wgetDie größte Stärke im Vergleich zu Curl ist die Möglichkeit, rekursiv oder einfach alles, worauf Bezug genommen wird, von einer Remote-Ressource herunterzuladen, sei es eine HTML-Seite oder eine FTP-Verzeichnisliste.

  • Älter . wgethat Spuren bis 1995, während curlfrühestens Ende 1996 zurückverfolgt werden können.

  • GPL . wgetist 100% GPL v3. curl ist MIT lizensiert.

  • GNU . wgetist Teil des GNU-Projekts und alle Urheberrechte liegen bei FSF. Das Curl-Projekt ist völlig eigenständig und unabhängig, und es gibt überhaupt keine Eltern von Organisationen, die fast alle Urheberrechte von Daniel besitzen.

  • wgeterfordert keine zusätzlichen Optionen zum einfachen Herunterladen einer Remote-URL in eine lokale Datei, während curlerfordert -ooder -O.

  • wget unterstützt die öffentliche Suffix-Liste für die Behandlung von Cookie-Domänen, Curl nicht.

  • wget unterstützt nur GnuTLS oder OpenSSL für SSL / TLS-Unterstützung

  • wget unterstützt nur Basic-Authentifizierung als einzigen Authentifizierungstyp über HTTP-Proxy

  • wget hat keine SOCKS-Unterstützung

  • Seine Fähigkeit, sich von einer vorzeitig unterbrochenen Übertragung zu erholen und den Download fortzusetzen, hat keine Entsprechung.

  • wget Kann nur mit der linken Hand auf einer QWERTY-Tastatur eingegeben werden!

AB
quelle
1
Ja, wget eignet sich hervorragend zum Spiegeln!
Joeytwiddle
1
"Das Curl-Projekt ist völlig eigenständig und unabhängig, und es gibt überhaupt keine Eltern von Organisationen, die fast alle Urheberrechte von Daniel besitzen." Ich bin mir nicht sicher, ob das eine schlechte Sache ist ...
Barbecue
"Seine Fähigkeit, sich von einer vorzeitig unterbrochenen Übertragung zu erholen und den Download fortzusetzen, hat kein Gegenstück." Habe ich diesen Satz falsch verstanden? Wird curl -C -der Download nicht unterbrochen?
Siyuan Ren
1
Warum empfehlen Sie wget ? Selbst wenn Sie sich die Vergleiche ansehen, die Sie selbst geschrieben haben, klingt Curl weit überlegen. 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
Größe zählt zu: auf einem frischen ubuntu Bild, wget Größe 2M gegen curl 5M verpackt (mit deps, x3 total ausgepackt)
Eran W
19

Es gibt viele Tools , die wie herunterladen curl, snarf, wget, pavuk, fget, fetch, lftp, aria2, HTTrackusw. Verwenden Sie es entsprechend Ihrer Anforderung und welche Funktion , die Sie mit dem Download verwenden , zusammen wollen. Überprüfen Sie die Merkmalstabelle und verwenden Sie sie entsprechend.

Locke:

  • Curl unterstützt mehr Protokolle wie FTP, FTPS, HTTP, HTTPS, SCP, SFTP, TFTP, TELNET, DICT, LDAP, LDAPS, DATEI, POP3, IMAP, SMTP, RTMP und RTSP
  • Curl unterstützt mehr SSL-Bibliotheken
  • Curl unterstützt mehr HTTP-Authentifizierungsmethoden, insbesondere über HTTP-Proxys: Basic, Digest, NTLM und Negotiate
  • Curl wird von libcurl unterstützt - einer plattformübergreifenden Bibliothek mit einer stabilen API, die von jedem verwendet werden kann

Wget:

  • Während wget HTTP, HTTPS und FTP unterstützt
  • Wget unterstützt nur GnuTLS oder OpenSSL für die SSL / TLS-Unterstützung
  • Wget unterstützt nur Basic-Authentifizierung als einzigen Authentifizierungstyp über HTTP-Proxy
  • Wget ist nur ein Kommandozeilen-Tool, es hat keine Bibliothek.

Wichtige Ressourcen für weitere Informationen:

pl_rock
quelle
msgstr "wget ​​ist ein Kommandozeilenprogramm, das nur die Bibliothek kennt." Ich verstehe diese Zeile nicht.
Lucio
3

Sie haben viele Funktionen gemeinsam, curlbieten jedoch mehr Optionen. Denn wgetgelegentlich kann es ausreichen zu blättern man wget, aber curlich muss diese Webseite in einem Browser studieren . Ich glaube, alles, was Ihr Browser kann, curlkann es auch.

Jos
quelle
2

Es gibt einen weiteren Unterschied zwischen Wet und Curl, den ich für bedeutend halte.

Wget ist ein eigenständiges Befehlszeilenprogramm, mit dem hauptsächlich Internetinhalte schnell und einfach abgerufen werden können.

Curl hingegen ist im Grunde genommen ein Terminal-Frontend für die leistungsstarke libcurl-Bibliothek. Libcurl bietet eine Reihe sehr leistungsfähiger Tools für die Arbeit mit URLs in all ihren Formen und Varianten und ist für fast alle Sprachen und Plattformen verfügbar. Mit Curl haben Sie grundsätzlich die Möglichkeit, diese Bibliothek in Shell-Skripten zu verwenden.

Grill
quelle