curl命令认识
curl命令其实在平常工作中就已经在使用了,但是一直没有系统看过,就在这记录下,以后要用的话,可以在这儿查阅。
curl命令写的更清楚一点其实是cURL(client url,客户端URL或者command url命令行url工具),用来请求url的。cURL命令可以运行在多平台上,比如linux、unix、windows都可以用。经常用cURL来测试能否与目标URL连接。
curl参数
参数 | 含义 |
---|---|
-i | 输出包含响应头信息 |
-L | 输出重定向后的响应内容 |
cURL常用命令
下面就对curl命令的一些用法做总结:
GET请求: -XGET或者不带参数
默认的curl www.baidu.com其实就是命令行发送了一个http GET请求,可以获取到目标响应内容。相当于命令:curl -XGET www.baidu.com。
POST请求: -XPOST配合-d
如果是发送POST请求,需要携带参数-XPOST,-d。例子:
curl -XPOST http://www.baidu.com/s -d {"wd":"bilibili"}
其他请求
如果是发送其他类型的请求,只需要携带对应的参数就好,比如-XPUT、-XDELETE。这里就不一一列举了。
携带请求头: -H
HTTP请求,一般需要携带请求头,请求头字段挺多的,看要求添加,这儿给个例子, -H后面跟的就是指定的请求头,多个请求头那就写多个-H选项:
curl -XPOST http://www.baidu.com/s -H 'Content-Type:application/json' -H 'accept:application/json' -d {"wd":"bilibili"} -L
获取响应首部: -I
-I参数可以返回响应的头部信息。
下载文件: -O或-o
-O参数可以将文件下载到当前文件夹中。文件名和下载的文件名保持一致。
curl -O https://article.biliimg.com/bfs/article/9fb33786c734ab3da1471e5b73558453b37e514a.jpg@1320w_740h.webp
-o可以自定义保存的文件名名称.
curl -o test.png https://article.biliimg.com/bfs/article/9fb33786c734ab3da1471e5b73558453b37e514a.jpg@1320w_740h.webp
限制下载速度: --limit-rate
–limit-rate会指定下载速度,不设置单位默认是字节,可以设置G, M, K or B。模拟慢网速场景有用。
curl --limit-rate 1k -o test.png https://article.biliimg.com/bfs/article/9fb33786c734ab3da1471e5b73558453b37e514a.jpg@1320w_740h.webp
如果下载一半终止了,是可以恢复下载的,使用-C -:
curl -C - -o test.png https://article.biliimg.com/bfs/article/9fb33786c734ab3da1471e5b73558453b37e514a.jpg@1320w_740h.webp
查看重定向后的内容: -L
不使用-L参数的话,遇到重定向的网址,你看不到重定向之后的网址内容。
curl www.bilibili.com -L
查看更多的请求响应信息: -v
-v参数会把请求头、响应头、响应内容都打印出来,方便观察调试,一般搭配-L使用。
curl www.bilibili.com -v -L
通过代理访问: --proxy
配置代理格式如下:curl --proxy 协议://用户名:密码@代理IP:端口 URL。例子:
curl --proxy http://atiaisi:123456@127.0.0.1:12345 www.bilibili.com
支持ftp上传下载
# 下载文件:-u和-O/-o
curl -u atiais:123456 -O ftp://serverip/xxx.txt
# 上传文件:-u和-T
curl -u atiaisi:123456 -T test.txt ftp://serverip
查看curl更多的参数选项
curl --help all
参考文档
-
官方文档
https://curl.se/download.html -
curl 的用法指南 - 阮一峰的网络日志 (ruanyifeng.com)
https://www.ruanyifeng.com/blog/2019/09/curl-reference.html