当前位置: 首页>>技术教程>>正文


curl和wget有什么区别?

, , ,

问题描述

这些curlwget都用于下载文件等。有没有理由使用其中一个?

最佳解决思路

定义”proper use”后,使用wget

为什么?这就是为什么:

递归!与curl相比,wget的主要优势在于它能够以递归方式下载,甚至只是下载从远程资源引用的所有内容,无论是HTML页面还是FTP目录列表。


here复制无耻

curl

  • Library 。 curllibcurl提供支持 – 一个具有稳定API的cross-platform库,可供每个人使用。这种差异很大,因为它对如何在内部做事情产生了完全不同的态度。制作库比使用”mere”命令行工具稍微困难一些。

  • 管道。 curl更像传统的Unix cat命令,它向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即可!

次佳解决思路

有许多可以下载喜欢curlsnarfwgetpavukfgetfetchlftparia2HTTrack等按照您的要求和功能要与下载使用以及使用它的工具。检查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有更多选择。对于wget,有时可能足以通过man wget,但对于curl我需要在浏览器中研究this webpage。我相信您的浏览器可以做任何事情,curl也可以。

第四种思路

wget和curl之间还有另一个区别,我认为这很重要。

Wget是一个stand-alone命令行实用程序,主要用于快速简单地检索Internet内容。

另一方面,Curl基本上是强大的libcurl库的终端前端。 Libcurl提供了一套非常强大的工具,用于处理各种形式和风格的URL,几乎适用于所有语言和平台。 Curl基本上使您能够在shell脚本中使用此库。

参考资料

本文由Ubuntu问答整理, 博文地址: https://ubuntuqa.com/article/2088.html,未经允许,请勿转载。