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

38

Ambos curly wgetse usan para descargar archivos, etc. ¿Hay alguna razón para usar uno sobre el otro?

fisgonear
fuente
1
Definir "uso apropiado"
AB
12
Con respecto al voto para cerrar como basado en la opinión: ¿cómo al preguntar sobre la diferencia entre dos herramientas se fomentan las respuestas basadas en la opinión?
Michael Martin-Smucker
1
@ MichaelMartin-Smucker "Supongamos que necesito descargar una página web, digamos www.google.com, ¿debería buscar wget o curl?" ¿Qué es eso si no se basa en la opinión?
muru
2
@muru, depende de lo que quieras decir con "descargar una página web". Si quiere decir enviar una solicitud http y recibir los resultados, curl es ideal. Si quiere decir descargar una página, otras páginas a las que enlaza y activos relacionados, curl no funcionará, y wget es la única opción. Hay diferencias de hecho entre ellos que hacen que esto no se base en opiniones.
barbacoa
3
@muru Supongo que tenemos diferentes interpretaciones del sentimiento detrás de la pregunta. En mi interpretación, el sentimiento es: "He oído hablar de estas dos herramientas que parecen hacer lo mismo. ¿Cuál es la diferencia entre ellas y cuándo debo elegir una sobre la otra? ¿Qué pasa en este caso específico?" ... lo que me parece una pregunta razonable.
Michael Martin-Smucker

Respuestas:

33

Después de haber definido "uso apropiado", use wget.

¿Por qué? Es por eso:

Recursivo! La principal ventaja de wget en comparación con curl es su capacidad de descargar de forma recursiva, o incluso simplemente descargar todo lo que se hace referencia desde un recurso remoto, ya sea una página HTML o una lista de directorios FTP.


Desvergonzado copiado de aquí

curl

  • biblioteca . curlestá alimentado por libcurl: una biblioteca multiplataforma con una API estable que puede ser utilizada por todos y cada uno. Esta diferencia es importante ya que crea una actitud completamente diferente sobre cómo hacer las cosas internamente. También es un poco más difícil crear una biblioteca que una "simple" herramienta de línea de comandos.

  • tuberías . curlfunciona más como el catcomando tradicional de Unix , envía más cosas stdouty lee más de stdinuna manera "todo es una tubería". wgetes más como cpusar el mismo análogo.

  • Un solo disparo . curlbásicamente está hecho para hacer transferencias de datos de un solo disparo. Transfiere solo las URL que especifica el usuario y no contiene ninguna lógica de descarga recursiva ni ningún tipo de analizador HTML.

  • Más protocolos . curladmite FTP, FTPS, Gopher, HTTP, HTTPS, SCP, SFTP, TFTP, TELNET, DICT, LDAP, LDAPS, ARCHIVO, POP3, IMAP, SMB / CIFS, SMTP, RTMP y RTSP. Wget solo es compatible con HTTP, HTTPS y FTP.

  • Más portátil . curlse construye y se ejecuta en muchas más plataformas que wget. Por ejemplo: OS / 400, TPF y otras plataformas más "exóticas" que no son clones directos de Unix.

  • Más bibliotecas SSL y soporte SSL . curlse puede construir con una de once (¡11!) bibliotecas SSL / TLS diferentes, y ofrece más control y un soporte más amplio para los detalles del protocolo. curladmite fijación de clave pública.

  • HTTP auth . curladmite más métodos de autenticación HTTP, especialmente a través de servidores proxy HTTP: Basic, Digest, NTLM y Negotiate

  • SOCKS . curladmite varias versiones de protocolo SOCKS para acceso proxy

  • Bidireccional . curlofrece capacidades de carga y envío. wgetsolo ofrece soporte HTTP POST simple.

  • Envío de datos multiparte / formulario HTTP , que permite a los usuarios realizar "carga" HTTP y, en general, emular navegadores y automatizar HTTP en mayor medida

  • curladmite gzipe infla la codificación de contenido y realiza la descompresión automática

  • curl ofrece y realiza la descompresión de HTTP codificado por transferencia, wget no

  • curl admite HTTP / 2 y se conecta con doble pila utilizando Happy Eyeballs

  • Mucho más actividad de desarrollador . Si bien esto se puede debatir, considero tres métricas aquí: actividad de la lista de correo, frecuencia de confirmación del código fuente y frecuencia de lanzamiento. Cualquiera que siga estos dos proyectos puede ver que el proyecto curl tiene un ritmo mucho más alto en todas estas áreas, y lo ha sido durante más de 10 años. Comparar en openhub


wget

  • wgetes solo línea de comando. No hay biblioteca

  • Recursivo ! wgetEl principal lado positivo en comparación con curl es su capacidad de descargar de forma recursiva, o incluso simplemente descargar todo lo que se hace referencia desde un recurso remoto, ya sea una página HTML o una lista de directorios FTP.

  • Más viejos . wgettiene rastros desde 1995, mientras que curlpuede rastrearse no antes de finales de 1996.

  • GPL . wgetes 100% GPL v3. curl tiene licencia MIT.

  • GNU . wgetes parte del proyecto GNU y todos los derechos de autor se asignan a FSF. El proyecto curl es completamente independiente e independiente, sin ninguna organización de padres, con casi todos los derechos de autor propiedad de Daniel.

  • wgetno requiere opciones adicionales para simplemente descargar una URL remota a un archivo local, mientras que curlrequiere -oo -O.

  • wget admite la Lista de sufijos públicos para manejar dominios de cookies, curl no.

  • wget solo admite GnuTLS u OpenSSL para SSL / TLS

  • wget admite solo autenticación básica como el único tipo de autenticación sobre proxy HTTP

  • wget no tiene soporte SOCKS

  • Su capacidad para recuperarse de una transferencia interrumpida prematuramente y continuar la descarga no tiene contrapartida en curl.

  • wget se puede escribir usando solo la mano izquierda en un teclado qwerty!

AB
fuente
1
Sí, ¡wget es genial para reflejar!
joeytwiddle
1
"El proyecto curl es completamente independiente e independiente, sin ninguna organización de padres y casi todos los derechos de autor son propiedad de Daniel". No estoy seguro de que sea algo malo ...
barbacoa
"Su capacidad para recuperarse de una transferencia interrumpida prematuramente y continuar la descarga no tiene contrapartida en curl". ¿Entendí mal esta oración? ¿No curl -C -continúa la descarga interrumpida?
Siyuan Ren
1
¿Por qué recomiendas wget ? Incluso después de mirar las comparaciones que escribió usted mismo, los rizos parecen ser muy superiores. 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
2
El tamaño importa demasiado: una imagen de ubuntu fresco sobre, tamaño wget es 2M vs rizo 5M lleno (con deps, x3 total de desempaquetado)
Eran W
19

Hay muchas herramientas que pueden descargar como curl, snarf, wget, pavuk, fget, fetch, lftp, aria2, HTTracketc Uso de acuerdo a sus necesidades y que cuentan desea utilizar junto con la descarga. Verifique la tabla de características y utilícela en consecuencia.

Rizo:

  • Curl admite más protocolos FTP, FTPS, HTTP, HTTPS, SCP, SFTP, TFTP, TELNET, DICT, LDAP, LDAPS, ARCHIVO, POP3, IMAP, SMTP, RTMP y RTSP
  • Curl admite más bibliotecas SSL
  • Curl admite más métodos de autenticación HTTP, especialmente a través de servidores proxy HTTP: Basic, Digest, NTLM y Negotiate
  • Curl funciona con libcurl, una biblioteca multiplataforma con una API estable que puede ser utilizada por todos.

Wget:

  • Mientras que wget es compatible con HTTP, HTTPS y FTP
  • Wget solo admite GnuTLS u OpenSSL para SSL / TLS
  • Wget solo admite autenticación básica como el único tipo de autenticación sobre proxy HTTP
  • Wget es solo una herramienta de línea de comandos, no tiene biblioteca.

Recursos importantes para más información:

pl_rock
fuente
"wget ​​es una herramienta de línea de comandos solo que tiene una biblioteca conocida". No entiendo esa línea.
Lucio
3

Tienen mucha funcionalidad en común, pero curltiene más opciones. De wgetvez en cuando puede ser suficiente para hojear man wget, pero curlnecesito estudiar esta página web en un navegador. Creo que cualquier cosa que su navegador pueda hacer, también curlpuede hacerlo.

Jos
fuente
2

Hay otra diferencia entre wget y curl que creo que es significativa.

Wget es una utilidad de línea de comandos independiente destinada principalmente a recuperar contenido de Internet de forma rápida y sencilla.

Curl, por otro lado, es básicamente un extremo frontal de la poderosa biblioteca libcurl. Libcurl proporciona un conjunto muy poderoso de herramientas para trabajar con URL en todas sus formas y sabores, y está disponible para casi todos los idiomas y plataformas. Básicamente, Curl te da la posibilidad de usar esta biblioteca en scripts de shell.

parilla
fuente