¿Cuál es la diferencia entre curl y wget?

258

Estoy interesado en saber la diferencia entre curly wget. Ambos se utilizan para obtener archivos y documentos, pero cuál es la diferencia clave entre ellos.

¿Por qué hay dos programas diferentes?

Lakesh
fuente
55
La principal diferencia es que wget se usa para descargar cosas mientras que curl se usa para probar la comunicación mediante un protocolo específico.
Pithikos
99
Un hecho interesante sobre wget:> ¡ Wget se puede escribir usando solo la mano izquierda en un teclado qwerty!
Habeeb Perwad
2
Del curlautor: daniel.haxx.se/docs/curl-vs-wget.html
Vanni

Respuestas:

265

Las principales diferencias son:

  • wgetEl principal lado fuerte en comparación con curlsu capacidad para descargar de forma recursiva.
  • wgetes solo línea de comando. No hay lib ni nada, pero curllas funciones de libcurl funcionan.
  • curlapoya FTP, FTPS, HTTP, HTTPS, SCP, SFTP, TFTP, TELNET, DICT, LDAP, LDAPS, FILE, POP3, IMAP, SMTP, RTMPy RTSP. wgetapoya HTTP, HTTPSy FTP.
  • curlconstruye y corre en más plataformas que wget.
  • wgetse publica bajo una licencia de software libre copyleft (GNU GPL). curlse publica bajo una licencia permisiva de software libre (un derivado del MIT).
  • curlofrece capacidades de carga y envío. wgetsolo ofrece soporte HTTP POST simple.

Puede ver más detalles en el siguiente enlace:

rizo vs Wget

Saeed Zarinfam
fuente
1
Gracias, esto es exactamente lo que me he estado preguntando durante unas horas. Solía ​​wget para hacer una araña recursiva en un sitio, parece estancado en una página que tiene once mil millones de enlaces. La realidad es que está funcionando al 100% de CPU en un núcleo. Tenía la esperanza de que hubiera algo mejor que hiciera esa nueva cosa multinúcleo de la que he estado escuchando.
Brian Topping
1
Una de las cosas wgetque queda fuera de esta respuesta es la capacidad de duplicación de http (o 'spidering'). curles muy bueno en lo que hace, pero por sí solo no está destinado a utilizarse para reflejar un sitio web.
jsbillings
¿Qué pasa con wput siendo un alias, soportando ftp.
mckenzm
1
Estas frases no tienen sentido: "y todos los derechos de autor se asignan a FSF", "es completamente independiente e independiente, sin ninguna organización de padres". Es obvio que el autor de cURL es el propietario de los derechos de autor. Es obvio que el autor de wget es el propietario de los derechos de autor. Pero ambos son gratuitos como en el software Freedom. En su lugar, puede decir que wget está bajo una licencia copyleft y cURL bajo una licencia permisiva.
Valerio Bozz
1
@ValerioBozz: en realidad no. Tanto curl como wget son proyectos comunitarios. Con curl, cada persona posee los derechos de autor del código que contribuyen. Con Wget, como con la mayoría de los otros programas de GNU, los diversos autores regalan sus derechos de autor a la FSF. Es decir, ya no son dueños de ese código. Esto es para permitir que la FSF haga cumplir estrictamente el copyleft y vuelva a licenciar el código si es necesario.
darnir el
57

En pocas palabras:

  • wget es una herramienta para descargar archivos de servidores
  • curl es una herramienta que te permite intercambiar solicitudes / respuestas con un servidor

wget

Wget únicamente le permite descargar archivos de una HTTP/ HTTPSo FTPservidor. Le da un enlace y descarga automáticamente el archivo al que apunta el enlace. Construye la solicitud automáticamente.

rizo

Curl en contraste con wget le permite crear la solicitud como desee . Esto le da mucha libertad al usuario y es una herramienta de depuración increíble. Agregue a eso la otra diferencia clave entre los dos: la gran cantidad de protocolos compatibles. Soportes de enrollamiento FTP, FTPS, Gopher, HTTP, HTTPS, SCP, SFTP, TFTP, Telnet, DICT, LDAP, LDAPS, IMAP, POP3, SMTP, RTSPy URI. Combine estos dos puntos clave y tendrá una herramienta increíble para probar protocolos, probar la configuración del servidor, etc.

Como muchos dicen, puedes descargar un archivo con curl. Sin embargo, eso solo es útil si desea descargar un archivo de un servidor que utiliza un protocolo que wget no admite.

Pithikos
fuente
2
En realidad wgettambién sigue la redirección y luego guarda la respuesta a diferencia curl. Ambos pueden lograr lo contrario al comportamiento predeterminado wget -qO - http://google.co.uk/ ocurl http://google.co.uk/ > index.html
Matt
1
Sin embargo, @mtm curl http://google.co.uk/ > index.htmlno está utilizando una funcionalidad incorporada. De todos modos, la distinción principal es el propósito para el que se hizo cada herramienta. No se puede negar que las herramientas evolucionan y muchas veces se desvían de su trayectoria inicial.
Pithikos
1
@mtm curl http://google.co.uk -o index.htmlusaría los componentes internos de curl en lugar de la redirección de salida de shell con >.
Petrus Repo
19

En realidad, la principal diferencia es que curlincluye una biblioteca ( libcurl), y esa biblioteca es ampliamente utilizada por otras aplicaciones. wgetes independiente

sendmoreinfo
fuente