Curl vs Wget

Curlvs Wget

 

这两个命令做什么

  • 都是可以从FTP,HTTP和HTTPS下载内容的命令行工具
  • 都可以发送HTTP POST请求
  • 都支持HTTP cookie
  • 两者都被设计为在没有用户交互的情况下工作,就像在脚本内部一样
  • 两者都是完全开源的和免费的软件
  • 这两个项目都是在90年代开始的
  • 同时支持metalink

他们有什么不同

curl

  • 。curl由libcurl提供支持- 一个跨平台的库,具有稳定的API,可供每个人使用。这种差异是重大的,因为它在内部做事情时形成了完全不同的态度。制作一个库比“单纯的”命令行工具稍微难一些。
  • 管道。curl更像传统的unix cat命令,它向stdout发送更多的东西,并且在“一切都是管道”的方式下从stdin中读取更多内容。Wget更像是cp,使用相同的模拟。
  • 单次拍摄。卷曲基本上是做单点数据传输。它只传输用户指定的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。
  • 便携。卷曲构建并运行在比wget更多的平台上。例如:OS / 400,TPF和其他更“异国”的平台,不是直接unix克隆。
  • 更多的SSL库和SSL支持。curl可以用11个不同的SSL / TLS库中的一个构建,并且它提供了更多的控制和更广泛的协议细节支持。
  • HTTP认证。curl支持更多的HTTP身份验证方法,特别是HTTP代理:Basic,Digest,NTLM和Negotiate
  • SOCKS代理。curl支持代理访问的几个SOCKS协议版本
  • 双向。curl提供上传和发送功能。Wget只提供普通的HTTP POST支持。
  • HTTP多部分/表单数据发送,它允许用户进行HTTP“上传”,并在一般模拟浏览器,并在更广泛的范围内进行HTTP自动化
  • curl支持gzip和def-content-Encoding并且自动解压缩
  • curl提供并执行Transfer-Encoded HTTP的解压缩,wget不支持。
  • curl支持HTTP / 2,它使用Happy Eyeballs进行双栈连接
  • 活跃的开发者活动。虽然这可以辩驳,但我在这里考虑三个指标:邮件列表活动,源代码提交频率和发布频率。在这两个项目之后的任何人都可以看到,卷曲项目在所有这些领域都有很高的速度,已经超过了10年以上。在openhub上比较

wget的

  • wget只是命令行没有库。
  • 递归与curl相比,Wget的主要优势在于能够递归下载,甚至可以下载从远程资源引用的所有内容,无论是HTML页面还是FTP目录列表。
  • 时长wget追溯到 1995年,而curl可以追溯到1996年底 。
  • GPLwget是100%GPL v3curlMIT许可
  • GNUwget是GNU项目的一部分,所有版权都分配给 FSF。卷曲项目完全是独立的,独立的,没有任何组织管理,几乎所有丹尼尔拥有的版权 。
  • wget 不需要额外的选项来简单地将远程URL下载到本地文件,而curl则需要添加-o或-O选项
  • wget仅支持用于SSL / TLS支持的GnuTLS或OpenSSL
  • wget仅支持基本身份验证作为通过HTTP代理的唯一身份验证类型
  • wget不支持SOCKS
  • 它能够恢复传输中断的连接继续下载没有对应的部分
  • wget默认启用了更多的功能:cookies,重定向跟踪,从远程资源中加时间等。通过curl,大多数这些功能都需要明确地启用。
  • wget只能在qwerty键盘上使用左手键入!(请看wget四个字母的位置)

额外的东西

有些人认为我应该将上传能力与wput进行比较 ,但这是一个单独的工具/项目,在这个比较中我没有包括这一点。

另外两个功能相似的功能强大的工具包括 aria2和 axel(dead project?) - 试用一下吧!

对于功能比较更严格的功能(也比较其他类似工具),请参阅curl比较表


Curl vs Wget

该文章转载并翻译于:https://daniel.haxx.se/docs/curl-vs-wget.html

感谢原作者Daniel Stenberg,也是curl命令的开源作者,同时也是一位技术大牛。在我表达想要转载此文章后,给与我的鼓励。其中有翻译有任何的错误欢迎留言或者私信指出。