curl(Client Url)是一个开源的用于数据传输的命令行工具与库,用来请求Web服务器。
1、Url
curl https://www.baidu.com
-A
指定客户端的用户代理标头,即User-Agent。
curl -A ' ' https://www.baidu.com
-b
向服务器发送Cookie
// 生成一个标头Cookie:key=value
curl -b 'key=value' https://www.baidu.com
// 生成两个标头Cookie:key=value key1=value1
curl -b 'key=value' -b key1=value1 https://www.baidu.com
-c
将服务器设置的cookie写入一个文件
curl -c cookies.text https://www.baidu.com
-d
发送post请求的数据体
curl -d 'name=test&password=123' -X POST https://www.baidu.com
使用-d参数后,http请求会自动加标头Content-Type:application/x-www-form-urlencoded
并且会自动将请求转为post方法,所以,可以省略 -X POST
-d读取本地文件数据
curl -d '@data.txt' https://www.baidu.com
–data-urlencode
等同于-d,发送post请求的数据体,区别在于会自动发送的数据进行URL编码
curl --data-urlencode 'comment=hello' https://www.baidu.com
-e
设置http标头Referer,表示请求的来源。
curl -e 'https://baidu.com?q=example' https://www.example.com
Referer标头设置为:https://baidu.com?q=example
-H参数可以通过直接添加标头Referer,达到同样的效果。
curl -H 'Referer:https://baidu.com?q=example' https://www.example.com
-F
用来向服务器上传二进制文件
curl -F 'file=@photo.png' https://www.baidu.com
-F参数可以指定MIME类型
// MIME类型为image/png,否则会把MIME类型设置为application/octet-stream
curl -F 'file=@photo.png;type=image/png' https://www.baidu.com
-F参数可以指定文件名
curl -F 'file=@photo.png;filename=me.png' https://www.baidu.com
-G
构造URL的查询字符串
// 省略G会发出一个POST请求
curl -G -d 'q=test' -d 'count=10' https://www.baidu.com
-H
添加HTTP请求的标头。
-i
打印出服务器回应的HTTP标头
-I
向服务器发出的HEAD请求,然后会将服务器返回的HTTP标头打印出来。
-k
指定跳过SSL检测。
-L
会让HTTP请求跟随服务器的重定向,默认不跟随。
–limit-rate
限制http请求和回应的带宽,模拟慢网速的环境。
-o
将服务器的回应保存成文件,等同于wget命令。
-s
将不输出错误和进度信息
-S
指定只输出错误信息
-u
设置服务器认证的用户名和密码
-v
输出通信的整个过程,用于调试
-x
指定http请求的代理
-X
指定HTTP请求的方法。