curl

工欲善其事必先利其器。

一、介绍:

curl,全称CommandLine URL。curl命令是在命令行方式下工作,利用URL的语法进行数据的传输或者文件的传输。它实际是一个利用URL语法在命令行下工作的文件传输工具,1997年首次发行。它支持多种协议包括 (DICT, FILE, FTP, FTPS, GOPHER, HTTP, HTTPS, IMAP, IMAPS, LDAP, LDAPS, POP3, POP3S, RTMP, RTSP, SCP, SFTP, SMTP, SMTPS, TELNET and TFTP),所以是综合传输工具,但按传统,习惯称cURL为下载工具。

二、用法:

查看帮助:curl —help

语法:curl [options…]

各类常见参数:

(目前只学了这么多,后续学到其它参数,再补充)


在指定参数后跟的值(如post传递参数,设置http请求头)时,请用双引号,不要用单引号。

参数

说明

(不跟参数)

直接访问url并返回页面源码

-A

指定User-Agnet,例:curl -A “Mozilla/5.0”

-b

向服务器发送cookie,例:curl -b “name=admin;level=high”。或curl -b cookie.txt 指定-c参数生成的cookie文件,

-c

将服务器设置的参数写入指定文件。例:curl -c cookie.txt

-d/—data

用于发送POST请求的数据体。使用-d参数时,请求头会自动加上”Conten-Type:application/x-www-form-urlencoded”,并且自动转为POST请求。例:curl -d “name=data” 或 curl -d “@from-data.txt”读取文件from-data.txt的数据。

—data-urlencode

对POST数据进行url编码后发送,用法等同于-d参数,可直接替代-d参数

—data-ascii

对POST数据进行ASCII编码后发送,同上

—data-binary

对POST数据编码成二进制后发送,同上

-e

指定Referer。例:curl -e “https://baidu.com”

-F

向服务器上传二进制文件。例:curl -F “file=@test.png” http://test.com HTTP请求会自动加上Content-Type: multipart/form-data,并将test.png做为file字段的值上传

-G

和-d参数配合,用于构造url get型传参。例:curl -G -d “name=data” http://test.com,此时url被构造为http://test.com/?name=data,结合—data-urlencode可以进行url编码

-H/—header

自定义添加HTTP请求头。例:curl -H “Accept-Language: zh”,可多次指定

-i

显示HTTP响应头和页面源码。例:curl -i http://test.com

-I/—head

只显示HTTP响应,实际是用head方法请求目标url,等同于—head参数

-k

跳过SSL检测

-L

使HTTP请求跟随服务器重定向。curl默认不会跟随

—limit-rate

用来限制HTTP请求和回应的带宽,用于模拟网速差的环境。例:curl —limit-rate 200k

-o

用于将服务器的回应保存到指定文件。例:curl -o test.html http://test.com

-O

用于将服务器的回应保存到文件(以url最后部分作为文件名)。例:curl -O http://test.com/index.php。 会自动在当前目录下保存为index.html。必须指定到目标文件

-s

不输出错误和进度信息

-S

只输出错误信息,与-s结合使用时,除非发生错误,否则没有任何输出

-u

用来指定服务器认证的用户名和密码。例:curl -u “name:passwd”

-v

输出通信的整个过程,用于测试

-x

指定HTTP请求代理,默认为HTTP代理,用法 -x [protocol://]host[:port]

-X

指定HTTP请求的方法

三、示例:

  1. 用单引号的问题
curl -A 'Mozilla/5.0' -d 'name=data' -x http://127.0.0.1:8080 http://test.com

此时发送的http请求数据包,指定的字段也会包含单引号

curl容器_安全

  1. -I参数实际上使用head方法请求,等同于—head参数
curl -I -x http://127.0.0.1:8080 http://test.com

curl容器_HTTP_02

  1. -O参数将 URL 的最后部分当作文件名,且必须指定到目标文件