文章作者:Tyan
博客:noahsnail.com | CSDN | 简书
1. CURL介绍
CURL,全称Command Line URL Viewer,是一个Linux命令行工具,能从服务器下载数据,也能往服务器上发送数据,支持多种协议,支持的协议有:DICT,FILE,FTP,FTPS,GOPHER,HTTP,HTTPS,IMAP,IMAPS,LDAP,LDAPS,POP3,POP3S,RTMP,RTSP,SCP,SFTP,SMB,SMBS,SMTP,SMTPS,TELNET和TFTP。从CURL支持的协议就可以看出,CURL命令非常强大。
2. CURL命令用法
2.1 curl url
1 | # 命令形式:$ curl url,访问网页,url为网页的网址,开发中可以用来查看API的返回值 |
2.2 curl -o/-O filename url
1 | # 命令形式:$ curl -o/-O filename url,保存访问的网页或文件,-o参数是保存,filename是要保存的文件名,-O是将远端的文件以远端文件的文件名自动保存到本地,这个命令主要是下载文件,如果需要获取多个文件,可以采用curl -O url1 -O url2 |
2.3 curl -i/-I url
1 | # 命令形式:$ curl -i url,访问网页并显示response信息,-i参数是显示response信息,-I参数是只显示response信息 |
备注:
HTTP/1.1 200 OK,响应状态行
HTTP/1.1,访问采用的协议为HTTP,版本为1.1
200 OK,HTTP状态码,表示文档正确返回
Server,服务器应用程序软件的名称和版本
Date,服务器产生响应的日期
Content-Type,响应实体的主题是一个html文本
Content-Length,响应实体的主题包含了277字节的数据
Last-Modified,资源的最后修改日期时间
Connection,连接方式,close或keep-alive
ETag,资源的匹配信息
Cache-Control,控制缓存的行为
Pragma,报文指令
Accept-Ranges,是否接受字节范围请求
2.4 curl -v url/curl –trace filename url
1 | # 命令形式:$ crul -v url,-v参数是显示http访问的整个过程,即整个通信过程,curl --trace filename url相比-v信息更详细,并且会将访问过程输出到一个文件中 |
2.5 curl –header “Content-Type:application/json” www.baidu.com
1 | # 命令形式:curl --header "header content" url,--header主要是设置request请求的头部,Content-Type:application/json就是JS中ajax请求中的Content-Type:application/json |
2.6 curl -L url
1 | # 命令形式:curl -L url,-L是对页面进行重定向,主要用在请求的页面移动到别的站点的情况下。默认情况下CURL不会发送HTTP Location headers(重定向) |
2.7 curl -C - -O url
1 | # 命令形式:curl -C - -O url,-C -下载大文件时支持断点续传功能,-C后面要有一个整数<offset>,-C -/--continue-at命令等价 |
2.8 curl url >> filename
1 | # 命令形式:curl url >> filename,利用linux重定向功能将访问的内容输出到文件中 |
2.9 curl –limit-rate 1K url
1 | 命令形式:curl --limit-rate 1K url,限制访问网络速度到1K,可用G,M,K,B |
2.10 curl -u username url/curl –user username:password url
1 | # 命令形式:curl -u username url,用用户名访问页面,当页面访问需要授权时使用,或者直接使用curl --user username:password url访问,最好用第一种形式,防止密码泄露 |
2.11 curl -z date url
1 | # 命令形式:curl -z date url,date指定时间,在date之后文件更新过之后才会下载,可以与response的last-modified联系到一起,工作中会用到,当要更新数据时,先查看last-modified |
2.12 curl -x proxyip:port url
1 | # 命令形式:curl -x proxyip:port url,代理服务器如果是买的,需要输入用户名和密码 |
2.13 curl -D/-b/-c filename url
1 | # 命令形式:url -D filename url,-D是将header信息(包括cookie)保存到文件中, -b是使用上次保存的Cookie信息,从文件中读取Cookie,也可指定Cookie文本,-c是接收Cookie并保存 |
2.14 curl -G -d “text” url
1 | # 命令形式:curl -G -d "text" url,-G是以GET方式访问,-d "test"是指定GET的请求数据 |
2.15 curl -# url
1 | # 命令形式:curl -# url,-#表示访问时以进度条形式显示,常用在下载中 |
2.16 curl -A/--user-agent “text” url
1 | # 命令形式:curl -A/--user-agent "text" url,-A/--user-agent "text"指定了访问者的设备信息,包括系统、CPU、浏览器版本等等。可以隐藏真正的设备信息 |
2.17 curl -e/--referer url1 url2
1 | # 命令形式:curl -e/--referer url1 url2,-e/--referer表明是从url1跳转访问url2的 |
2.18 curl -X POST url
1 | # 命令形式:curl -X POST url,-X POST,指定其它形式访问url,curl默认使用的HTTP的GET方法,-X可以指定其它方法,例如POST,DELETE,PUT等,使用POST时可以使用-d "text"来指定POST的数据 |
3. 总结
CURL的命令参数还有很多,就不一一演示了。下面是CURL的参数及功能列表:
1 | -a/--append 上传文件时,附加到目标文件 |
参考文献: