curl命令常用参数

在网上看到别人发请求测试用到curl这个工具,我最开始是使用Postman这个工具进行测试的,但是

身为一个程序员,怎么可以不选择命令行呢(doge)

于是我写下该文章记录学习

CURL

cURL是一个利用URL语法在命令行下工作的文件传输工具,1997年首次发行。它支持文件上传和下载,所以是综合传输工具,但按传统,习惯称cURL为下载工具。cURL还包含了用于程序开发的libcurl。

cURL支持的通信协议有FTPFTPSHTTPHTTPSTFTPSFTPGopherSCPTelnet、DICT、FILELDAP、LDAPS、IMAPPOP3SMTPRTSP

curl还支持SSL认证、HTTP POST、HTTP PUT、FTP上传, HTTP form based upload、proxies、HTTP/2、cookies、用户名+密码认证(Basic, Plain, Digest, CRAM-MD5, NTLM, Negotiate and Kerberos)、file transfer resume、proxy tunneling。

无参数

直接请求 发送GET请求 但是之前用的是http 现在变成了https 而且我还在nginx配置文件中使http请求会被改写为https ,因为curl并不会跟随跳转,所以返回的301重定向

-V

-V/-version 显示版本信息

image-20210403192443354

-v

-v/–verbose输出详细信息

image-20210403195650358

-I

-I/–head 参数向服务器发出 HEAD 请求,然会将服务器返回的 HTTP 标头打印出来。此时指向了我服务器的https地址

image-20210403195955249

-A

-A参数指定客户端的用户代理标头,即User-Agent。curl 的默认用户代理字符串是curl/[version] 该命令将User-Agent改成 Chrome 浏览器。

image-20210403201411061

$ curl -A '' http://junh.top

上面命令会移除User-Agent标头。

也可以通过-H参数直接指定标头,更改User-Agent

curl -H 'User-Agent: php/1.0' https://google.com

-b

-b参数用来向服务器发送 Cookie。

 $ curl -b 'foo=bar' http://junh.top

上面命令会生成一个标头Cookie: foo=bar,向服务器发送一个名为foo、值为bar的 Cookie。

 $ curl -b 'foo1=bar;foo2=bar2'  http://junh.top

上面命令发送两个 Cookie。

 $ curl -b cookies.txt  http://junh.top

上面命令读取本地文件cookies.txt,里面是服务器设置的 Cookie(参见-c参数),将其发送到服务器。

-c

-c参数将服务器设置的 Cookie 写入一个文件。

image-20210403201923041

上面命令将服务器的 HTTP 回应所设置 Cookie 写入文本文件cookies.txt