Curl是一个很强大的http命令行工具,功能十分强大,非常有用.
一、CURL对HTTP接口的访问
1. 访问网页
$ curl http://www.baidu.com
回车之后,www.baidu.com 的html 显示在屏幕上了
2. 保存页面
用curl option: -o
$ curl -o page.html http://www.baidu.com
可以看到屏幕上出现一个下载页面进度指示,等到100%,就保存完成了.页面名字就是page.html
可以指定存放的路径。
二、GET请求
curl www.baidu.com/ # GET请求, 输出 响应内容
curl -I www.baidu.com/ # GET请求, 只输出 响应头
curl -i www.baidu.com/ # GET请求, 输出 响应头、响应内容
curl -v www.baidu.com/ # GET请求, 输出 通讯过程、头部信息、响应内容等
下载文件
指定保存的文件名称下载文件
curl www.baidu.com -o baidu.txt
使用 URL 指定的资源文件名保存下载文件(URL 必须指向具体的文件名)
curl www.baidu.com/index.html -O
指定 Usaer-Agent 和 Referer 请求头的值, 下载文件
curl -A "Mozilla/5.0 Chrome/70.0.3538.110 Safari/537.36" -e "www.baidu.com/" www.baidu.com/index.html -O
指定Authorization请求头的值, 下载文件 参数格式: -H "NAME: VALUE"
curl -H "Authorization: a112121dada" www.baidu.com/index.html -O
三、POST请求
1. 使用 option -d,
例如:
$ curl -d "param1=value1¶m2=value2" www.baidu.com
2.json格式的post请求
$ curl -l -H "Content-type: application/json" -X POST -d '{"phone":"196666666","password":"test"}' http://test/apis/users.json
curl和wget都可以下载,那到底有什么区别呢?下面是简单的一点介绍:
curl
基于
libcurl库,libcurl是一个稳定的跨平台的类库,任何人可以免费使用其API进行开发。CURL继承了libcurl库的优良设计,这是它能成为优秀的命令行工具的重要原因。
管道(Pipes). CURL不仅仅遵循 传统UNIXstyle, 它在对输入和输出做更多的处理,贯彻了 "everything is a pipe" 的设计思想。
返回值(Return codes) . curl为一系列应用返回多种结果(错误),适用于很多情况。
单点传送 curl仅仅单点传送数据。它只会传送用户指定的URLS,并不包含任何递归下载的逻辑,也不对html进行任何解析。
多协议支持. curl 支持的协议有: FTP, FTPS, HTTP, HTTPS, SCP, SFTP, TFTP, TELNET, DICT, LDAP, LDAPS, FILE, POP3, IMAP, SMTP 和 RTSP.在写这篇文章时,Wget仅仅支持 HTTP, HTTPS 和 FTP.
适应更多的平台: curl比wget运行在更多的平台上面,虽然curl设计当初并没有打算这样。比如: OS/400, TPF 和其他很多非UNIX的平台。
更强大的SSL库. curl能应用于多个不同的 SSL/TLS 库, 并提供了更多的可控性和对协议的广泛支持。
curl支持更多的 HTTP 认证方式
双向通信. curl 提供了上传能力,Wget仅仅支持HTTP post 方式
HTTP multipart/form-data 的发送能力, 这使得用户可以进行HTTP上传,模拟浏览器的行为和HTTP认证等,提供了更多操作的可能。
压缩. curl 支持GZIP和 inflate Content-Encoding 并且自动进行解压缩操作。
curl可以下载,功能比较多,但是长项不在于下载,而在于模拟提交web数据,POST/GET请求,调试网页。
Wget
- Wget 仅仅支持命令行方式运行. 没有类库,不提供API等。
- 递归! Wget 与CURL的最大区别也是
Wget的最大的优势是可以进行递归的下载,可以一次下载一个HTML页面 或者ftp列表中的所有内容。- wget是个职业的下载利器.4个字概括:专注,极致 .
单独在下载上,也各有所长,wget可以递归,支持断点;而curl支持URL中加入变量,因此可以批量下载。用wget来下载文件,加 -c选项不怕断网;用curl 来跟网站的API 交互,简便清晰。- HTTP 1.0. Wget 仍然仅仅使用 HTTP 1.0,但是它一直工作很好,并且对于最终用户没有任何影响。curl在2001年三月的时候就开始支持 HTTP 1.1 了(仍然保留对 1.0 请求的支持).
参考文章: