curl和wget有什么区别?


258

我渴望知道的区别curlwget。两者都用于获取文件和文档,但是它们之间的主要区别是什么。

为什么会有两个不同的程序?


5
主要区别在于wget用于下载内容,而curl用于通过使用特定协议来测试通信。
Pithikos


Answers:


265

主要区别在于:

  • wgetcurl与之相比,它的主要优点是它具有递归下载功能。
  • wget仅命令行。没有lib或任何东西,但是curl的功能由libcurl支持。
  • curl支持FTPFTPSHTTPHTTPSSCPSFTPTFTPTELNETDICTLDAPLDAPSFILEPOP3IMAPSMTPRTMPRTSPwget支持HTTPHTTPSFTP
  • curl可以在比wget。更多的平台上构建和运行。
  • wget在自由软件copyleft许可证(GNU GPL)下发布。curl根据自由软件许可许可证(MIT衍生产品)发布。
  • curl提供上传和发送功能。wget仅提供纯HTTP POST支持。

您可以在以下链接中查看更多详细信息:

curl vs Wget


1
谢谢,这正是我几个小时以来一直想知道的。我用wget在一个网站上做一个递归蜘蛛,似乎停滞在上面有多达数十亿个链接的页面上。现实情况是,它在一个内核上以100%CPU运行。希望有更好的东西可以做我一直在听说的新型多核产品。
Brian Topping 2015年

1
wgethttp镜像(或“ spidering”)功能是此答案遗漏的其中一项功能。 curl是非常擅长的,但是它并不打算用来镜像网站。
jsbillings

那么wput是一个别名,支持ftp呢?
mckenzm

1
这些短语没有意义:“并且所有版权均分配给FSF”,“完全独立且独立,根本没有组织为人父母”。很明显,cURL的作者是它的版权所有者。很明显,wget的作者是它的版权拥有者。但是两者都像自由软件一样是免费的。您可以改为说wget受copyleft许可,而cURL受许可许可。
Valerio Bozz

1
@ValerioBozz:其实没有。curl和wget都是社区项目。使用curl时,每个人都拥有他们贡献的代码的版权。与大多数其他GNU程序一样,使用Wget时,各个作者将其版权都授予了FSF。也就是说,他们不再拥有该代码。这是为了允许FSF严格执行copyleft并在需要时重新许可代码。
darnir

57

简而言之:

  • wget 是从服务器下载文件的工具
  • curl 是一种工具,可让您与服务器交换请求/响应

get

Wget仅允许您从HTTP/ HTTPSFTP服务器下载文件。您给它一个链接,它将自动下载该链接指向的文件。它会自动生成请求。

卷曲

与wget相反,Curl使您可以根据需要构建请求。这为用户提供了很大的自由度,并使之成为一个了不起的调试工具。除此之外,两者之间的另一个主要区别是:支持的协议过多。卷曲支持FTPFTPSGopherHTTPHTTPSSCPSFTPTFTPTelnetDICTLDAPLDAPSIMAPPOP3SMTPRTSPURI。结合这两个关键点,您将拥有一个出色的工具来测试协议,测试服务器配置等。

许多人说,您可以下载带有curl的文件。但是,仅当您碰巧要从使用wget不支持的协议的服务器上下载文件时,此功能才有用。


2
实际上wget也遵循重定向,然后保存响应,这与无关curl。两者都可以达到与默认行为相反的效果,wget -qO - http://google.co.uk/ 或者curl http://google.co.uk/ > index.html
Matt

1
@mtm curl http://google.co.uk/ > index.html并未使用内置功能。无论如何,主要区别是每种工具的用途。不可否认,工具在不断发展,并且偏离了其最初的轨迹。
Pithikos

1
@mtm curl http://google.co.uk -o index.html将使用curl的内部结构,而不是使用的shell输出重定向>
Petrus Repo

19

实际上,主要区别在于它curl包括一个库(libcurl),并且该库被其他应用程序广泛使用。 wget是独立的。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.