Qual'è la differenza tra curl e wget?


258

Sono desideroso di conoscere la differenza tra curle wget. Entrambi vengono utilizzati per ottenere file e documenti, ma quale sia la differenza fondamentale tra loro.

Perché ci sono due programmi diversi?


5
La differenza principale è che wget è usato per scaricare cose mentre curl è usato per testare la comunicazione usando un protocollo specifico.
Pithikos,


Risposte:


265

Le principali differenze sono:

  • wgetIl principale punto di forza rispetto alla curlsua è la capacità di scaricare ricorsivamente.
  • wgetè solo riga di comando. Non c'è lib o altro, ma curlle funzionalità sono basate su libcurl.
  • curlsostiene FTP, FTPS, HTTP, HTTPS, SCP, SFTP, TFTP, TELNET, DICT, LDAP, LDAPS, FILE, POP3, IMAP, SMTP, RTMPe RTSP. wgetsostiene HTTP, HTTPSe FTP.
  • curlcostruisce e funziona su più piattaforme di wget.
  • wgetè rilasciato con una licenza di copyleft di software libero (GNU GPL). curlè rilasciato con una licenza di software libero (un derivato MIT).
  • curloffre funzionalità di upload e invio. wgetoffre solo il semplice supporto POST HTTP.

Puoi vedere maggiori dettagli al seguente link:

curl vs Wget


1
Grazie, questo è esattamente ciò che mi chiedevo da alcune ore. Ho usato wget per fare un ragno ricorsivo su un sito, sembra bloccato su una pagina che contiene undici link bazillion su di esso. La realtà è che funziona al 100% della CPU su un core. Speravo che ci fosse qualcosa di meglio che fa quella nuova novità multicore di cui ho sentito parlare.
Brian Topping,

1
Una delle cose wgetche viene lasciata fuori da questa risposta è l'abilità di mirroring http (o "spidering"). curlè molto bravo in quello che fa, ma da solo non è destinato a essere utilizzato per il mirroring di un sito web.
jsbillings,

Che dire di wput come alias, che supporta ftp.
mckenzm,

1
Queste frasi non hanno senso: "e tutti i diritti d'autore sono assegnati a FSF", "è completamente autonomo e indipendente senza alcuna organizzazione genitoriale". È ovvio che l'autore di cURL ne sia il proprietario del copyright. È ovvio che l'autore di wget ne è il proprietario del copyright. Ma entrambi sono gratuiti come nei software per la libertà. Puoi invece dire che wget è sotto una licenza copyleft e cURL con una licenza permissiva.
Valerio Bozz,

1
@ValerioBozz: attualmente no. Sia curl che wget sono progetti della community. Con curl, ogni persona possiede il copyright sul codice che contribuisce. Con Wget, come con la maggior parte degli altri programmi GNU, i vari autori cedono i loro diritti d'autore alla FSF. Cioè, non possiedono più quel codice. Questo per consentire a FSF di applicare rigorosamente il copyleft e di rilasciare il codice, se necessario.
darnir,

57

In poche parole:

  • wget è uno strumento per scaricare file dai server
  • curl è uno strumento che ti consente di scambiare richieste / risposte con un server

wget

Wget ti consente esclusivamente di scaricare file da un HTTP/ HTTPSo FTPserver. Gli dai un link e scarica automaticamente il file a cui punta il link. Crea automaticamente la richiesta.

arricciare

Curl in contrasto con wget ti consente di creare la richiesta come desideri . Ciò offre molta libertà all'utente e costituisce uno straordinario strumento di debug. Aggiungete a ciò l'altra differenza chiave tra i due: la pletora di protocolli supportati. Supporti Curl FTP, FTPS, Gopher, HTTP, HTTPS, SCP, SFTP, TFTP, Telnet, DICT, LDAP, LDAPS, IMAP, POP3, SMTP, RTSPe URI. Combina questi due punti chiave e avrai un fantastico strumento per testare protocolli, testare la configurazione del server, ecc.

Come molti dicono, è possibile scaricare un file con arricciatura. Ciò è utile solo se ti capita di voler scaricare un file da un server che utilizza un protocollo che wget non supporta.


2
In realtà wgetsegue anche il reindirizzamento, quindi salva la risposta diversamente curl. Entrambi possono ottenere l'opposto del comportamento predefinito wget -qO - http://google.co.uk/ oppurecurl http://google.co.uk/ > index.html
Matt,

1
@mtm curl http://google.co.uk/ > index.htmlnon utilizza però una funzionalità integrata. Ad ogni modo, la principale distinzione è lo scopo per cui è stato realizzato ogni strumento. Non si può negare che gli strumenti si evolvano e molte volte si discostino dalla loro traiettoria iniziale.
Pithikos,

1
@mtm curl http://google.co.uk -o index.htmluserebbe gli interni di curl invece del reindirizzamento dell'output della shell con >.
Petrus Repo,

19

In realtà, la differenza principale è che curlinclude una libreria ( libcurl) e che la libreria è ampiamente utilizzata da altre applicazioni. wgetè autonomo.

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.