Qual'è la differenza tra curl e wget? [chiuso]


38

Entrambi curle wgetvengono utilizzati per il download di file, ecc. C'è qualche motivo per usarne uno rispetto all'altro?


1
Definisci "uso corretto"
AB

12
Considerare il voto da chiudere come basato sull'opinione: in che modo chiedere informazioni sulla differenza tra due strumenti incoraggia le risposte basate sull'opinione?
Michael Martin-Smucker,

1
@ MichaelMartin-Smucker "Supponiamo che dovrei scaricare una pagina web diciamo www.google.com, dovrei cercare wget o curl?" che cos'è se non basato sull'opinione?
muru,

2
@muru, dipende da cosa intendi per "scaricare una pagina web". Se intendi inviare una richiesta http e ricevere i risultati, l'arricciatura è l'ideale. Se intendi scaricare una pagina, altre pagine a cui si collega e risorse correlate, l'arricciatura non funzionerà e wget è l'unica opzione. Ci sono differenze fattuali tra loro che rendono questo non basato sull'opinione.
barbecue,

3
@muru Immagino che abbiamo solo diverse interpretazioni del sentimento dietro la domanda. Nella mia interpretazione, il sentimento è: "Ho sentito parlare di questi due strumenti che sembrano fare la stessa cosa. Qual è la differenza tra loro, e quando dovrei scegliere l'uno rispetto all'altro? Che dire in questo caso specifico?" ... che mi sembra una domanda ragionevole.
Michael Martin-Smucker,

Risposte:


33

Dopo aver definito "uso corretto", utilizzare wget.

Perché? Ecco perchè:

Ricorsivo! Il principale punto di forza di wget rispetto all'arricciatura è la sua capacità di scaricare in modo ricorsivo, o anche semplicemente scaricare tutto ciò che viene indicato da una risorsa remota, sia essa una pagina HTML o un elenco di directory FTP.


Senza vergogna copiato da qui

curl

  • biblioteca . curlè alimentato da libcurl: una libreria multipiattaforma con un'API stabile che può essere utilizzata da tutti. Questa differenza è importante poiché crea un atteggiamento completamente diverso su come fare le cose internamente. È anche leggermente più difficile creare una libreria che un "semplice" strumento da riga di comando.

  • tubi . curlfunziona più come il tradizionale catcomando Unix , invia più roba a stdout, e legge di più da stdin"tutto è un tubo". wgetè più simile cp, usando lo stesso analogo.

  • Colpo singolo . curlè fatto essenzialmente per eseguire trasferimenti di dati a colpo singolo. Trasferisce solo gli URL specificati dall'utente e non contiene alcuna logica di download ricorsiva né alcun tipo di parser HTML.

  • Altri protocolli . curlsupporta FTP, FTPS, Gopher, HTTP, HTTPS, SCP, SFTP, TFTP, TELNET, DICT, LDAP, LDAPS, FILE, POP3, IMAP, SMB / CIFS, SMTP, RTMP e RTSP. Wget supporta solo HTTP, HTTPS e FTP.

  • Più portatile . curlcostruisce e funziona su molte più piattaforme di wget. Ad esempio: OS / 400, TPF e altre piattaforme "esotiche" che non sono cloni Unix diretti.

  • Altre librerie SSL e supporto SSL . curlpuò essere costruito con una su undici (11!) librerie SSL / TLS diverse e offre un maggiore controllo e un supporto più ampio per i dettagli del protocollo. curlsupporta l'inserimento di chiavi pubbliche.

  • HTTP auth . curlsupporta più metodi di autenticazione HTTP, in particolare su proxy HTTP: Basic, Digest, NTLM e Negotiate

  • CALZE . curlsupporta diverse versioni del protocollo SOCKS per l'accesso proxy

  • Bidirezionale . curloffre funzionalità di upload e invio. wgetoffre solo il semplice supporto POST HTTP.

  • Invio HTTP multipart / form-data , che consente agli utenti di eseguire "upload" HTTP e in generale di emulare i browser e di eseguire l'automazione HTTP in misura maggiore

  • curlsupporta gzipe gonfia la codifica dei contenuti e esegue la decompressione automatica

  • curl offre ed esegue la decompressione di HTTP con codifica di trasferimento, wget no

  • curl supporta HTTP / 2 e esegue connessioni dual-stack utilizzando Happy Eyeballs

  • Molto più attività per gli sviluppatori . Mentre questo può essere discusso, considero tre parametri qui: attività della mailing list, frequenza di commit del codice sorgente e frequenza di rilascio. Chiunque segua questi due progetti può vedere che il progetto curl ha un ritmo molto più alto in tutte queste aree, ed è stato così per oltre 10 anni. Confronta su openhub


wget

  • wgetè solo riga di comando. Non c'è biblioteca.

  • Ricorsivo ! wgetIl principale punto di forza rispetto all'arricciatura è la sua capacità di scaricare in modo ricorsivo, o anche solo di scaricare tutto ciò a cui si fa riferimento da una risorsa remota, che si tratti di una pagina HTML o di un elenco di directory FTP.

  • Più vecchio . wgetrisale al 1995, mentre curlpuò essere rintracciato non prima della fine del 1996.

  • GPL . wgetè 100% GPL v3. curl è concesso in licenza dal MIT.

  • GNU . wgetfa parte del progetto GNU e tutti i diritti d'autore sono assegnati a FSF. Il progetto curl è completamente autonomo e indipendente, senza alcuna organizzazione genitoriale con quasi tutti i diritti d'autore di proprietà di Daniel.

  • wgetnon richiede opzioni extra per scaricare semplicemente un URL remoto in un file locale, mentre curlrichiede -oo -O.

  • wget supporta l'elenco dei suffissi pubblici per la gestione dei domini dei cookie, curl no.

  • wget supporta solo GnuTLS o OpenSSL per il supporto SSL / TLS

  • wget supporta solo l'autent di base come unico tipo di autenticazione su proxy HTTP

  • wget non ha supporto SOCKS

  • La sua capacità di recuperare da un trasferimento interrotto prematuramente e continuare a scaricare non ha alcuna controparte in arricciatura.

  • wget può essere digitato usando solo la mano sinistra su una tastiera qwerty!


1
Sì, wget è ottimo per il mirroring!
joeytwiddle,

1
"Il progetto curl è completamente autonomo e indipendente, senza alcuna organizzazione genitoriale con quasi tutti i diritti d'autore di proprietà di Daniel." Non sono sicuro che sia una brutta cosa ...
barbecue,

"La sua capacità di recuperare da un trasferimento prematuramente interrotto e continuare a scaricare non ha alcuna controparte in arricciamento." Ho capito male questa frase? Il curl -C -download non viene interrotto?
Siyuan Ren,

1
Perché mi consiglia wget ? Anche dopo aver esaminato i confronti che hai scritto tu stesso, il ricciolo sembra essere di gran lunga superiore. 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 l'

2
Anche le dimensioni contano: su una nuova immagine di Ubuntu, la dimensione di wget è 2 M vs. arricciatura 5 M imballata (con deps, x3 totale non imballato)
Eran W

19

Ci sono molti strumenti che possono scaricare come curl, snarf, wget, pavuk, fget, fetch, lftp, aria2, HTTrackecc Usa secondo il vostro requisito e che funzione che si desidera utilizzare con il download. Controllare la tabella delle caratteristiche e utilizzare di conseguenza.

Ricciolo:

  • Il ricciolo supporta più protocolli FTP, FTPS, HTTP, HTTPS, SCP, SFTP, TFTP, TELNET, DICT, LDAP, LDAPS, FILE, POP3, IMAP, SMTP, RTMP e RTSP
  • Curl supporta più librerie SSL
  • Curl supporta più metodi di autenticazione HTTP, in particolare su proxy HTTP: Basic, Digest, NTLM e Negotiate
  • Curl è alimentato da libcurl -una libreria multipiattaforma con un'API stabile che può essere utilizzata da tutti

Wget:

  • Mentre wget supporta HTTP, HTTPS e FTP
  • Wget supporta solo GnuTLS o OpenSSL per il supporto SSL / TLS
  • Wget supporta solo l'autent di base come unico tipo di autenticazione su proxy HTTP
  • Wget è solo uno strumento da riga di comando, non ha libreria.

Risorse importanti per maggiori informazioni:


"wget ​​è solo uno strumento da riga di comando che ha una libreria nota." Non capisco quella linea.
Lucio,

3

Hanno molte funzionalità in comune, ma curlha più opzioni. Perché wgeta volte può essere sufficiente sfogliare man wget, ma per curlho bisogno di studiare questa pagina web in un browser. Credo che qualsiasi cosa possa fare il tuo browser, curlanche.


2

C'è un'altra differenza tra wget e curl che penso sia significativa.

Wget è un'utilità della riga di comando autonoma destinata principalmente al recupero di contenuti Internet in modo rapido e semplice.

D'altra parte, Curl è fondamentalmente un front-end terminale per la potente libreria libcurl. Libcurl offre un potente set di strumenti per lavorare con gli URL in tutte le loro forme e varianti ed è disponibile per quasi tutte le lingue e piattaforme. Fondamentalmente Curl ti dà la possibilità di usare questa libreria negli script di shell.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.