博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
curl vs Wget
阅读量:7252 次
发布时间:2019-06-29

本文共 4592 字,大约阅读时间需要 15 分钟。

hot3.png

curl vs Wget

The main differences as I (Daniel Stenberg) see them. Please consider my bias towards  since after all, curl is my baby - but I contribute to  as well.

Please let me know if you have other thoughts or comments on this document.

 if you find problems or have improvements.

What both commands do

  • both are command line tools that can download contents from FTP, HTTP and HTTPS
  • both can send HTTP POST requests
  • both support HTTP cookies
  • both are designed to work without user interaction, like from within scripts
  • both are fully open source and free software
  • both projects were started in the 90s
  • both support metalink

How they differ

curl

  • library. curl is powered by libcurl - a cross-platform library with a stable API that can be used by each and everyone. This difference is major since it creates a completely different attitude on how to do things internally. It is also slightly harder to make a library than a "mere" command line tool.

  • pipes. curl works more like the traditional unix cat command, it sends more stuff to stdout, and reads more from stdin in a "everything is a pipe" manner. Wget is more like cp, using the same analogue.

  • Single shot. curl is basically made to do single-shot transfers of data. It transfers just the URLs that the user specifies, and does not contain any recursive downloading logic nor any sort of HTML parser.

  • More protocols. curl supports FTP, FTPS, Gopher, HTTP, HTTPS, SCP, SFTP, TFTP, TELNET, DICT, LDAP, LDAPS, FILE, POP3, IMAP, SMB/CIFS, SMTP, RTMP and RTSP. Wget only supports HTTP, HTTPS and FTP.

  • More portable. curl builds and runs on lots of more platforms than wget. For example: OS/400, TPF and other more "exotic" platforms that aren't straight-forward unix clones.

  • More SSL libraries and SSL support. curl can be built with one out of eleven (11!) different SSL/TLS libraries, and it offers more control and wider support for protocol details.

  • HTTP auth. curl supports more HTTP authentication methods, especially over HTTP proxies: Basic, Digest, NTLM and Negotiate

  • SOCKS. curl supports several SOCKS protocol versions for proxy access

  • Bidirectional. curl offers upload and sending capabilities. Wget only offers plain HTTP POST support.

  • HTTP multipart/form-data sending, which allows users to do HTTP "upload" and in general emulate browsers and do HTTP automation to a wider extent

  • curl supports gzip and deflate Content-Encoding and does automatic decompression

  • curl offers and performs decompression of Transfer-Encoded HTTP, wget doesn't

  • curl supports HTTP/2 and it does dual-stack connects using Happy Eyeballs

  • Much more developer activity. While this can be debated, I consider three metrics here: mailing list activity, source code commit frequency and release frequency. Anyone following these two projects can see that the curl project has a lot higher pace in all these areas, and it has been so for 10+ years. 

Wget

  • Wget is command line only. There's no library.

  • Recursive! Wget's major strong side compared to curl is its ability to download recursively, or even just download everything that is referred to from a remote resource, be it a HTML page or a FTP directory listing.

  • Older. Wget has traces back to , while curl can be tracked back no earlier than the end of .

  • GPL. Wget is 100% GPL v3. curl is MIT licensed.

  • GNU. Wget is part of the GNU project and all copyrights are assigned to FSF. The curl project is entirely stand-alone and independent with no organization parenting at all with almost all copyrights owned by Daniel.

  • Wget requires no extra options to simply download a remote URL to a local file, while curl requires -o or -O.

  • Wget supports only GnuTLS or OpenSSL for SSL/TLS support

  • Wget supports only Basic auth as the only auth type over HTTP proxy

  • Wget has no SOCKS support

  • Its ability to recover from a prematurely broken transfer and continue downloading has no counterpart in curl.

  • Wget enables more features by default: cookies, redirect-following, time stamping from the remote resource etc. With curl most of those features need to be explicitly enabled.

  • Wget can be typed in using only the left hand on a qwerty keyboard!

Additional Stuff

Some have argued that I should compare uploading capabilities with , but that's a separate tool/project and I don't include that in this comparison.

Two other capable tools with similar feature set include  and  (dead project?) - try them out!

For a stricter feature by feature comparison (that also compares other similar tools), see the 

Thanks

Feedback and improvements by: Micah Cowan, Olemis Lang

转载于:https://my.oschina.net/adailinux/blog/1052701

你可能感兴趣的文章
linux乱码
查看>>
由浅入深表达式树(完结篇)重磅打造 Linq To 博客园
查看>>
使程序在Linux下后台运行
查看>>
【转】json格式化、高亮库jsonFormater
查看>>
CentOS 7 NetworkManager Keeps Overwriting /etc/resolv.conf
查看>>
smartfoxserver扩展里面过滤聊天的不合法字符
查看>>
cmake简明使用指南
查看>>
计算机操作系统
查看>>
MariaDB mysql 比较区别 选择
查看>>
【EF】Entity Framework Core 命名约定
查看>>
Java中net.sf.json包关于JSON与对象互转的坑
查看>>
Linux配置快捷方式路径
查看>>
[LeetCode] My Calendar III 我的日历之三
查看>>
wp rest api 授权方法步骤(使用JWT Authentication插件)
查看>>
优化查询的方式
查看>>
Eclipse 2017最佳20个插件
查看>>
6.控制器(ng-Controller)
查看>>
Android项目实战(四十八):架构之组件化开发
查看>>
平安容器云平台 Padis--传统金融企业的 Docker 实践
查看>>
js 实现遮罩某一部分
查看>>