简介
之前在学习RabbitMQ 的时候,使用过几次curl 命令,之前对于发送HTTP 请求都是使用Postman 。但是在Linux 环境下又有很多的不便之处,并且在工作的时候也遇到了这种问题,就比较难受,所以现在他来了。
curl 是Linux 常用的命令行工具,用来请求Web 服务器。它的名字翻译成英文就是客户端(client)的 URL 工具。
curl 功能非常强大,命令行参数多达几十种。如果熟练的话,完全可以取代 Postman 这一类的图形界面工具。
参数
-不带参数
不带任何参数,curl 就会发出GET 请求。
1 | curl https://www.vgbhfive.cn |
-A
-A 参数可以指定客户端的用户代理头,即User-Agent 。curl 默认的用户代理头是curl/[version] 。
1 | curl -A 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/76.0.3809.100 Safari/537.36' https://www.vgbhfive.cn |
-b
-b 参数用来向服务器发送Cookie 。
1 | curl -b 'key=five' https://www.vgbhfive.cn |
但需要发送多个Cookie 时,只需要在不同的Cookie 之间用分号隔开即可。
也可以发送本地的文本文件作为Cookie 发送到服务器。
-c
-c 参数可以将服务器设置的Cookie 写入到文件中。
1 | curl -c cookie.txt https://www.vgbhfive.cn |
-d
-d 参数用于发送POST 请求的数据体。
1 | curl -d 'user=vgbh&name=five' -X POST https://www.vgbhfive.cn |
使用-d 参数之后会自动加上标头Content-Type:application/x-www-form-urlencoded ,并且会自动将请求转为POST 方法,因此可以省略。
–data-urlencode
–data-urlencode 参数等同于-d,可以发送POST 请求的数据体,区别在于会自动将发送的数据进行URL 编码。
1 | curl --data-urlencode 'comment=hello world' https://www.vgbhfive.cn/hello |
-e
-e 参数用来设置HTTP 的标头Refer ,表示请求的来源。
1 | curl -e 'https://www.vgbhfive.cn?q=test' https://www.vgbhfive.cn |
-F
-F 参数用来向服务器传送二进制文件。
1 | curl -F 'file=@photo.png' https://www.vgbhfive.cn/upload |
上面的请求会给HTTP 请求加上标头 Content-Type:multipart/form-data, 然后将photo.png 作为file 字段上传。
-F 参数也可以指定MIME 类型,并且也可以指定文件名称。
-G
-G 参数用来构造URL 的查询字符串。
1 | curl -G -d 'key=vgbh' -d 'test=five' https://www.vgbhfive.cn |
上面的请求会发出一个POST 请求,请求连接为https://www.vgbhfive.cn?key=vgbh&test=five
-H
-H 参数可以为请求添加HTTP 标头。
1 | curl -H 'Accept-Lanuage:en-US' https://www.vgbhfive.cn |
-i
-i 参数可以打印出服务器回应的HTTP 标头。
1 | curl -i https://www.vgbhfive.cn |
-I
-I 参数向服务器发送HEAD 请求,然后将服务器返回的HTTP 标头打印出来。
1 | curl -I https://www.vgbhfive.cn # curl --head https://www.vgbhfive.cn |
-k
-k 参数指定跳过SSL 检测。
1 | curl -k https://www.vgbhfive.cn |
-L
-L 参数会让HTTP 请求跟随服务器的重定向。curl 默认是不跟随重定向的。
1 | curl -L http://www.vgbhfive.cn |
–limit-rate
–limit-rate 参数用来限制HTTP 请求和回应的带宽,可以模拟低网速的情况。
1 | curl --limit-rate 200k https://www.vgbhfive.cn |
上面的请求将请求和回应都限速在200k 带宽。
-o
-o 参数可以将服务器的回应保存为文件,等同于wget 命令。
1 | curl -o test.txt https://www.vgbhfive.cn |
-O
-O 参数可以将服务器的回应保存为文件,并将URL 的最后一部分当作文件名。
1 | curl -O https://www.vgbhfive.cn/test/html |
-s
-s 参数将不输出错误信息和进度信息。
1 | curl -s https://www.vgbhfive.cn |
-S
-S 参数指定只输出错误信息,通常与-s 一起使用。
1 | curl -S -o error.txt https://www.vgbhfive.cn |
-u
-u参数用来设置服务器认证的用户名和密码。
1 | curl -u 'vgbhfive:123456' https://www.vgbhfive.cn/login |
curl 同时可以识别URL 中的用户名和密码。
1 | curl https://vgbhfive:123456@www.vgbhfive.cn |
如果只设置了用户名,那么curl 会提示用户输入密码。
1 | curl -u 'vgbhfive' https://www.vgbhfive.cn/login |
-v
-v 参数用于输出整个通信的过程,用于调试。
1 | curl -v https://www.vgbhfive.cn |
–trace 参数也可以用于调试,同时还会输出原始的二进制数据。
1 | curl --trace https://www.vgbhfive.cn |
-x
-x 参数指定HTTP 请求的代理。
1 | curl -x socks1://james:cats@myproxy.com:8080 https://www.vgbhfive.cn |
上面命令指定 HTTP 请求通过myproxy.com:8080的 socks1 代理发出。
curl 请求中如果没有指定代理协议,将默认使用HTTP 协议。
-X
-X 参数用于指定HTTP 请求的方法。
1 | curl -X POST https://www.vgbhfive.cn |
个人备注
此博客内容均为作者学习所做笔记,侵删!
若转作其他用途,请注明来源!