问题描述
这些curl
和wget
都用于下载文件等。有没有理由使用其中一个?
最佳解决思路
定义”proper use”后,使用wget
。
为什么?这就是为什么:
递归!与curl相比,wget的主要优势在于它能够以递归方式下载,甚至只是下载从远程资源引用的所有内容,无论是HTML页面还是FTP目录列表。
从here复制无耻
curl
-
Library 。
curl
由libcurl
提供支持 – 一个具有稳定API的cross-platform库,可供每个人使用。这种差异很大,因为它对如何在内部做事情产生了完全不同的态度。制作库比使用”mere”命令行工具稍微困难一些。 -
管道。
curl
更像传统的Unixcat
命令,它向stdout
发送更多内容,并以“一切都是管道”的方式从stdin
读取更多内容。wget
更像是cp
,使用相同的类似物。 -
单发。
curl
基本上是做single-shot数据传输。它只传输用户指定的URL,不包含任何递归下载逻辑,也不包含任何类型的HTML解析器。 -
更多协议。
curl
支持FTP,FTPS,Gopher,HTTP,HTTPS,SCP,SFTP,TFTP,TELNET,DICT,LDAP,LDAPS,FILE,POP3,IMAP,SMB /CIFS,SMTP,RTMP和RTSP。 Wget仅支持HTTP,HTTPS和FTP。 -
更便携。
curl
构建并运行在比wget
更多的平台上。例如:OS /400,TPF和其他不是straight-forward Unix克隆的”exotic”平台。 -
更多SSL库和SSL支持。
curl
可以使用11个(11!)不同的SSL /TLS库中的一个构建,并且它为协议细节提供了更多控制和更广泛的支持。curl
支持公钥锁定。 -
HTTP身份验证。
curl
支持更多HTTP身份验证方法,尤其是通过HTTP代理:Basic,Digest,NTLM和Negotiate -
袜子。
curl
支持多种SOCKS协议版本以进行代理访问 -
双向的。
curl
提供上传和发送功能。wget
仅提供纯HTTP POST支持。 -
HTTP multipart /form-data发送,允许用户执行HTTP “upload”,并且通常模拟浏览器并在更大程度上进行HTTP自动化
-
curl
支持gzip
并充气Content-Encoding并进行自动减压 -
curl
提供并执行Transfer-Encoded HTTP的解压缩,wget没有 -
curl
支持HTTP /2,它使用Happy Eyeballs连接dual-stack -
更多的开发人员活动。虽然这可以争论,但我在这里考虑三个指标:邮件列表活动,源代码提交频率和发布频率。任何关注这两个项目的人都可以看到 curl 项目在所有这些领域都有很大的进步,并且已经有10多年了。比较openhub
wget
-
wget
仅限命令行。没有 Library 。 -
递归!与curl相比,
wget
的主要优势在于它能够递归下载,甚至只下载从远程资源引用的所有内容,无论是HTML页面还是FTP目录列表。 -
老。
wget
的历史可以追溯到1995年,而curl
可以追溯到1996年底。 -
GPL。
wget
是100%GPL v3。 curl是MIT许可的。 -
GNU。
wget
是GNU项目的一部分,所有版权都分配给FSF。 curl 项目完全是stand-alone,并且完全没有任何组织育儿,几乎拥有Daniel所拥有的所有版权。 -
wget
无需额外选项即可将远程URL简单地下载到本地文件,而curl
则需要-o
或-O
。 -
wget
支持用于处理cookie域的公共后缀列表,而curl则不支持。 -
wget
仅支持GnuTLS或OpenSSL以支持SSL /TLS -
wget
仅支持Basic auth作为HTTP代理上唯一的auth类型 -
wget
没有SOCKS支持 -
它能够从过早破坏的转移中恢复并继续下载,这在 curl 中没有对应物。
-
只需在qwerty键盘上使用左手输入
wget
即可!
次佳解决思路
有许多可以下载喜欢curl
,snarf
,wget
,pavuk
,fget
,fetch
,lftp
,aria2
,HTTrack
等按照您的要求和功能要与下载使用以及使用它的工具。检查feature table并相应地使用。
curl :
-
Curl支持更多协议FTP,FTPS,HTTP,HTTPS,SCP,SFTP,TFTP,TELNET,DICT,LDAP,LDAPS,FILE,POP3,IMAP,SMTP,RTMP和RTSP
-
Curl支持更多SSL库
-
Curl支持更多HTTP身份验证方法,尤其是通过HTTP代理:Basic,Digest,NTLM和Negotiate
-
Curl由libcurl -a cross-platform库提供支持,该库具有可供每个人使用的稳定API
Wget:
-
虽然wget支持HTTP,HTTPS和FTP
-
Wget仅支持GnuTLS或OpenSSL以支持SSL /TLS
-
Wget仅支持Basic auth作为HTTP代理上唯一的auth类型
-
Wget只是命令行工具,它没有库。
有关更多信息的重要资源:
-
这里有很好的解释curl vs Wget。
-
curl 支持功能的细节:Features — what can curl do
-
wget支持功能的详细信息:wget features
第三种解决思路
它们有很多共同的功能,但curl
有更多选择。对于wget
,有时可能足以通过man wget
,但对于curl
我需要在浏览器中研究this webpage。我相信您的浏览器可以做任何事情,curl
也可以。
第四种思路
wget和curl之间还有另一个区别,我认为这很重要。
Wget是一个stand-alone命令行实用程序,主要用于快速简单地检索Internet内容。
另一方面,Curl基本上是强大的libcurl库的终端前端。 Libcurl提供了一套非常强大的工具,用于处理各种形式和风格的URL,几乎适用于所有语言和平台。 Curl基本上使您能够在shell脚本中使用此库。