在我使用它们的有限时间里, 一直wget==文件下载器==curl
, 但是见许多REST文档中都拿curl做例子,便man curl, 发现其简介如下:
curl is a tool to transfer data from or to a server, using one of the supported
protocols (HTTP, HTTPS, FTP, FTPS, SCP, SFTP, TFTP, DICT, TELNET, LDAP or FILE).
The command is designed to work without user interaction.
curl offers a busload of useful tricks like proxy support, user authentication,
FTP upload, HTTP post, SSL connections, cookies, file transfer resume and more.
As you will see below, the number of features will make your head spin!
curl is powered by libcurl for all transfer-related features. See libcurl(3) for
details.
英文浅显易懂, 我想: 功能这么强大, 估计又难免记忆一大堆参数(痛苦)
大家是如何用的?
Linux纯命令行-Server
man curl
man wget
wget
一句话:内置的文件下载工具
优点:
多数发行版内置
支持简单的递归扒站
适合下载,默认写文件
缺点:
一般仅用做下载,组装post请求、发复杂header等不常用
下载功能比较原始,不支持并发、p2p、磁力链接等
curl
一句话:内置的请求发送工具+请求发送库
优点:
多数发行版内置
某种程度上是表达一个http请求的默认(比如chrome开发工具可以直接复制为curl,比如很多api接口文档直接提供curl命令)
默认输出stdout,便于pipe其他命令(常见的一句话安装
curl xxx | bash
)同时libcurl是稳定常用的类库,便于整合到其他项目中
缺点:
用做下载要额外参数
拼接复杂请求相对麻烦
httpie
一句话:现代的http请求发送工具
优点:
拼接json请求非常方便,适合调“现代”的restful接口
支持用文件记录session(cookie、固定请求头等),适合调接口
参数清晰简单,上手快
返回结果有高亮
缺点:
要自己装
要自己装
要自己装
(还有eliangcs/http-prompt这个项目,简直黑魔法)
aria2c
一句话:现代的下载工具
优点:
支持包括磁力链接的更多下载方式、并发下载、多个源下载等等
server模式,可以装在路由器里,从而实现远程下载
缺点:
要自己装
要自己装
要自己装
个人行为:
wget一般用于下载文件
curl一般用于模拟请求,测试api
wget: 下载利器
下载速率慢的资源,浏览器经常会没下完就当完成了。建议加
-T5
批量下 HTML 文档:
wget -T 5 -t 10 -Q 500m -nH -r -E -l inf -k -p -np URL
批量下 URL:
wget -i URL列表文件
curl: 调试利器
简单好用,随处可得
浏览器的开发者工具支持复制为 curl 请求