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.
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!
"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.
"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.
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.
Respuestas:
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 .
curl
está alimentado porlibcurl
: 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 .
curl
funciona más como elcat
comando tradicional de Unix , envía más cosasstdout
y lee más destdin
una manera "todo es una tubería".wget
es más comocp
usar el mismo análogo.Un solo disparo .
curl
bá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 .
curl
admite 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 .
curl
se construye y se ejecuta en muchas más plataformas quewget
. 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 .
curl
se 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.curl
admite fijación de clave pública.HTTP auth .
curl
admite más métodos de autenticación HTTP, especialmente a través de servidores proxy HTTP: Basic, Digest, NTLM y NegotiateSOCKS .
curl
admite varias versiones de protocolo SOCKS para acceso proxyBidireccional .
curl
ofrece capacidades de carga y envío.wget
solo 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
curl
admitegzip
e infla la codificación de contenido y realiza la descompresión automáticacurl
ofrece y realiza la descompresión de HTTP codificado por transferencia, wget nocurl
admite HTTP / 2 y se conecta con doble pila utilizando Happy EyeballsMucho 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
wget
es solo línea de comando. No hay bibliotecaRecursivo !
wget
El 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 .
wget
tiene rastros desde 1995, mientras quecurl
puede rastrearse no antes de finales de 1996.GPL .
wget
es 100% GPL v3. curl tiene licencia MIT.GNU .
wget
es 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.wget
no requiere opciones adicionales para simplemente descargar una URL remota a un archivo local, mientras quecurl
requiere-o
o-O
.wget
admite la Lista de sufijos públicos para manejar dominios de cookies, curl no.wget
solo admite GnuTLS u OpenSSL para SSL / TLSwget
admite solo autenticación básica como el único tipo de autenticación sobre proxy HTTPwget
no tiene soporte SOCKSSu 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!fuente
curl -C -
continúa la descarga interrumpida?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.
Hay muchas herramientas que pueden descargar como
curl
,snarf
,wget
,pavuk
,fget
,fetch
,lftp
,aria2
,HTTrack
etc 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:
Wget:
Recursos importantes para más información:
Aquí hay una buena explicación curl vs Wget .
Tabla de características: Compare las características de cURL con otras herramientas de descarga
Detalle de las funciones compatibles con curl: Características: ¿qué puede hacer curl?
Detalle de las funciones compatibles con wget : características de wget
fuente
Tienen mucha funcionalidad en común, pero
curl
tiene más opciones. Dewget
vez en cuando puede ser suficiente para hojearman wget
, perocurl
necesito estudiar esta página web en un navegador. Creo que cualquier cosa que su navegador pueda hacer, tambiéncurl
puede hacerlo.fuente
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.
fuente