Linux-curl使用指南

简介

之前在学习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
2
3
curl -d 'user=vgbh&name=five' -X POST https://www.vgbhfive.cn

curl -d 'user=vgbh&name=five' 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

个人备注

此博客内容均为作者学习所做笔记,侵删!
若转作其他用途,请注明来源!