Beide curlund wgetwerden zum Herunterladen von Dateien usw. verwendet. Gibt es einen Grund, eine über die andere zu verwenden?
Beide curlund wgetwerden 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
curlBibliothek . 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
wgetwgetist 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!
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, 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:
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, 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.
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.