Beide curl
und wget
werden zum Herunterladen von Dateien usw. verwendet. Gibt es einen Grund, eine über die andere zu verwenden?
Beide curl
und wget
werden zum Herunterladen von Dateien usw. verwendet. Gibt es einen Grund, eine über die andere zu verwenden?
Antworten:
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 . curl
wird 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 . curl
Funktioniert eher wie der traditionelle Unix- cat
Befehl, sendet mehr Daten an stdout
und liest mehr stdin
auf "Alles ist eine Pipe" Weise. wget
ist eher cp
mit dem gleichen analogen.
Einzelschuss . curl
ist 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 . curl
Unterstü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 . curl
baut 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 . curl
kann mit einer von elf (11!) verschiedenen SSL / TLS-Bibliotheken erstellt werden und bietet mehr Kontrolle und umfassendere Unterstützung für Protokolldetails. curl
unterstützt das Pinning von öffentlichen Schlüsseln.
HTTP Auth . curl
unterstützt mehr HTTP-Authentifizierungsmethoden, insbesondere über HTTP-Proxys: Basic, Digest, NTLM und Negotiate
Socken . curl
unterstützt mehrere SOCKS-Protokollversionen für den Proxy-Zugriff
Bidirektional . curl
Bietet Upload- und Sendefunktionen. wget
Bietet 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
curl
unterstützt gzip
und 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
wget
ist nur Befehlszeile. Es gibt keine Bibliothek.
Rekursiv ! wget
Die 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 . wget
hat Spuren bis 1995, während curl
frühestens Ende 1996 zurückverfolgt werden können.
GPL . wget
ist 100% GPL v3. curl ist MIT lizensiert.
GNU . wget
ist 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.
wget
erfordert keine zusätzlichen Optionen zum einfachen Herunterladen einer Remote-URL in eine lokale Datei, während curl
erfordert -o
oder -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!
curl -C -
der Download nicht unterbrochen?
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.
Es gibt viele Tools , die wie herunterladen curl
, snarf
, wget
, pavuk
, fget
, fetch
, lftp
, aria2
, HTTrack
usw. 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:
Wget:
Wichtige Ressourcen für weitere Informationen:
Hier ist eine gute Erklärung für curl vs Wget .
Funktionsübersicht: Vergleichen Sie cURL-Funktionen mit anderen Download-Tools
Details der von Curl unterstützten Funktionen: Funktionen - Was kann Curl bewirken?
Details der von wget unterstützten Funktionen: wget-Funktionen
Sie haben viele Funktionen gemeinsam, curl
bieten jedoch mehr Optionen. Denn wget
gelegentlich kann es ausreichen zu blättern man wget
, aber curl
ich muss diese Webseite in einem Browser studieren . Ich glaube, alles, was Ihr Browser kann, curl
kann es auch.
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.