cURL:开源项目,主要是命令行工具 cURL 和 libcurl,cURL 可以处理任何网络传输协议,但是不涉及任何具体的数据处理。cURL支持丰富的通信协议,如 DICT,FILE,FTP,FTPS,GOPHER,HTTP,HTTPS,IMAP,IMAPS,LDAP,LDAPS,MQTT,POP3,POP3S,RTMP, RTMPS,RTSP,SCP,SFTP,SMB,SMBS,SMTP,SMTPS,TELNET 以及 TFTP。
cURL 安装:
- Ubuntu/Debian:sudo apt install curl
- CentOS/Fedora:sudo yum install curl
1、直接请求:curl http://wttr.in/
2、文件下载:
# -o:自定义保存文件名:cad.exe
curl -o cad.exe http://down10.zol.com.cn/tuxiangliulan/CADReaderPc5.13.2.72.exe
# -O:使用url中的文件名:CADReaderPc5.13.2.72.exe
curl -O http://down10.zol.com.cn/tuxiangliulan/CADReaderPc5.13.2.72.exe
# -s:用来禁用默认显示的进度表
curl -O http://down10.zol.com.cn/tuxiangliulan/CADReaderPc5.13.2.72.exe -s
# --progress-bar:让进度表显示为进度条
curl -O http://down10.zol.com.cn/tuxiangliulan/CADReaderPc5.13.2.72.exe --progress-bar
# -C - :断点续传
C:\>curl -O http://down10.zol.com.cn/tuxiangliulan/CADReaderPc5.13.2.72.exe --progress-bar
^C 0.4%
C:\>curl -C - -O http://down10.zol.com.cn/tuxiangliulan/CADReaderPc5.13.2.72.exe --progress-bar
######## 11.7%^C
C:\>curl -C - -O http://down10.zol.com.cn/tuxiangliulan/CADReaderPc5.13.2.72.exe --progress-bar
#########
# --limit-rate:限速下载
curl -O http://down10.zol.com.cn/tuxiangliulan/CADReaderPc5.13.2.72.exe --progress-bar --limit-rate 100k
# -u username:password 从FTP服务器下载文件
curl -u user:password -O ftp://ftp_server/path/to/file/
3、Response Headers:
- -i:显示Response Headers信息
-I:只显示Response Headers信息
C:\>curl -I http://down10.zol.com.cn/tuxiangliulan/CADReaderPc5.13.2.72.exe
HTTP/1.1 200 OK
Server: openresty/1.9.15.1
Date: Sat, 05 Dec 2020 15:11:40 GMT
Content-Type: application/octet-stream
Content-Length: 24696784
Connection: keep-alive
Last-Modified: Fri, 04 Dec 2020 10:20:36 GMT
ETag: "5fca0d74-178d7d0"
Z-download: download-sdta19:891
Accept-Ranges: bytes
4、请求方式(GET、POST…):-X 参数
curl -X POST http://down10.zol.com.cn/tuxiangliulan/CADReaderPc5.13.2.72.exe
curl -X GET http://down10.zol.com.cn/tuxiangliulan/CADReaderPc5.13.2.72.exe
5、请求参数:
GET方式:直接url拼接参数
- POST方式:使用 —data 设置参数
- 请求时也可以自定义 header 参数,使用 —header 添加
```bash
GET方式
curl -X GET http://wttr.in?name=未读代码
POST参数
curl -X POST —data “name=未读代码” http://wttr.in
自定义header参数
curl —header “Content-Type:application/json” http://wttr.in
6、文件上传:
- -F :会自动加上请求头 Content-Type:multipart/form-data
- -D :会自动加上请求头 Content-Type:application/x-www-form-urlencoded
```bash
# 上传一个 hello.jpg 图片
curl -F profile=@hello.jpg https://example.com/upload
# 提交一个具有 name 和 age 参数的 form 表单
curl -F name=user -F age=18 https://example.com/upload
# 参数的内容支持从文件中读取
curl -F "content=<达西的身世.txt" https://example.com/upload
# 上传时同时指定内容类型
curl -F "content=<达西的身世.txt;type=text/html" https://example.com/upload
# 上传文件的和其他参数一起
curl -F 'file=@"localfile";filename="nameinpost"' example.com/upload
7、网址通配:
- {parm1 , parm2 , …}:逗号分割来标识使用 url 中的某一段
- []:范围参数
```bash
请求 www.baidu.com 和 pan.baidu.com 和 fanyi.baidu.com
$ curl http://{www,pan,fanyi}.baidu.com
虚构网址1-10开头的baidu.com,然后请求
$ curl http://[1-10].baidu.com
虚构网址a-z开头的baidu.com,然后请求
$ curl http://[a-z].baidu.com
8、使用 cookie:请求时使用 -c 参数存储响应的 cookie,使用 -b 可以在请求时带上指定 cookie
```bash
$ curl -c wdbyte_cookies http://www.wdbyte.com
$ curl -b wdbyte_cookes http://www.wdbyte.com