curl命令详解
创始人
2024-04-03 05:32:22

##curl命令详解
curl 是常用的命令行工具,用来请求 Web 服务器。它的名字就是客户端(client)的 URL 工具的意思。
它的功能非常强大,命令行参数多达几十种。如果熟练的话,完全可以取代 Postman 这一类的图形界面工具。
如果在一个curl命令中不指定具体的方法,那么默认的就是使用GET方法。对于其它的方法,可以在curl命令中指定:
在这里插入图片描述

语法: curl [option] [url]
常用选项:

-A/--user-agent              设置用户代理发送给服务器
-b/--cookie     	 cookie字符串或文件读取位置
-c/--cookie-jar                操作结束后把cookie写入到这个文件中
-C/--continue-at             断点续转
-D/--dump-header               把header信息写入到该文件中
-e/--referer                         来源网址
-f/--fail                            连接失败时不显示http错误
-o/--output                          把输出写到该文件中
-O/--remote-name                     把输出写到该文件中,保留远程文件的文件名
-r/--range                    检索来自HTTP/1.1或FTP服务器字节范围
-s/--silent                          静音模式。不输出任何东西
-T/--upload-file               上传文件
-u/--user           设置服务器的用户和密码
-w/--write-out [format]              什么输出完成后
-x/--proxy              在给定的端口上使用HTTP代理
-#/--progress-bar                    进度条显示当前的传送状态
-X                                   用来指定请求方式

curl支持协议:

cURL支持的通信协议有:
FTP、FTPS、HTTP、HTTPS、TFTP、SFTP、Gopher、SCP、Telnet、DICT、FILE、LDAP、LDAPS、IMAP、POP3、SMTP和RTSP。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。

##基本测试
1,基本用法:
curl www.baidu.com 执行之后,会直接返回访问的默认主页hitml文件内容,

2,保存访问网页:

    curl http://www.baidu.com >> baidu.html

3,-A 参数,指定客户端的用户代理头也就是 user-agent ,curl默认用户的代理字符串是curl/[version],用来标识自己使用的os类型,cpu类型,浏览器版本,以及其他标识等等.所以可以用来模拟浏览器发送请求.

$ 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://google.com 
用来模拟出浏览器访问的情况,
也可以通过-H参数直接指定标头,更改User-agent,
$ curl -H 'User-Agent: php/1.0' https://google.com

4,-b向服务器发送cookie:

$ curl -b 'foo=bar' https://google.com 命令会发送一个cookie:foo=bar,可以用来验证cookie信息.
一个-b后面只能跟一个cookie段. 
$ curl -b cookies.txt https://www.google.com 上面命令读取到本地cookie.txt里面存放cookie信息, 将其发送到服务器端, 

5, -c 保存cookie
-c参数将服务器设置的cookie写入一个文件中,

$ curl -c cookies.txt https://www.google.com
将服务器的http回应设置cookie写入文本文件中.

6,-d发送POST请求的数据体
-d用于放post请求,

curl -d 'login=wcp&password=123' url
使用了-d参数以后,HTTP请求会自动加上标头:"content-type: application/x-www-form-urlencoded" 并且会自动将请求转换为post方法,因此可以省略-X post 
-d参数还可以读取本地文本文件的数据向服务器端发送.
curl -d "@data.txt" url 
上面命令读取的data.txt文件的内容,作为数据体向服务器发送,
--data-urlencode自动发送的数据进行url编码,等同于-d,发送post请求的数据体,区别在于会自动的将发送的数据进行url编码.
$ curl --data-urlencode 'comment=hello world' https://google.com/login

7,-e设置http标头的请求的来源
用来设置http标头refer,表示请求的来源

curl -e 'https://google.com?q=example' https://www.example.com
上面的命令将refer标头设置称为了https://google.com?q=example
-H参数可以通过直接添加标头refer,
与上面的区别在于,-e是给的之前的http地址,而-H是写入的refer
curl -H 'Referer: https://google.com?q=example' https://www.example.com

8,-F 上传二进制文件:
用来向服务器上传二进制文件,

$ curl -F 'file=@photo.png' https://google.com/profile

这种方式会给http请求加上标头,Content-Type:multipart/form-data,然后将文件photo.png作为file字段上传,
-F也可以指定MIME类型,也可以指定文件名,

$ curl -F 'file=@photo.png;filename=me.png' https://google.com/profile

上面命令中,原始文件名为photo.png,但是服务器接收到的文件名为me.png。

9,-G构造URL的查询字符串
-G参数是用来构造URL的查询字符串,

$ curl -G -d 'q=kitties' -d 'count=20' https://google.com/search

这个命令会发出一个get请求,有搜索功能,真实的请求url是: https://google.com/search?q=kitties&count=20
如果省略了-G 则是一个post请求. 这里需要注意url的访问格式,

-H指定HTTP请求的标头:

$ curl -H 'Accept-Language: en-US' -H 'Secret-Message: xyzzy' https://google.com

下面命令添加 HTTP 请求的标头是Content-Type: application/json,然后用-d参数发送 JSON 数据。

$ curl -d '{"login": "emma", "pass": "123"}' -H 'Content-Type: application/json' https://google.com/login

也可以设置user-agent绕过服务器检测

curl -H'User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.14; rv:69.0) Gecko/20100101 Firefox/69.0'

-i显示response头信息,并打印源码
在这里插入图片描述

返回显示了response头信息内容:
Accept-Ranges: bytes 表示该资源支持byte形式资源返回请求,
Cache-Control: 表示对缓存的控制
Connection: keep-alive 表示连接方式
Content-Length: 2381 表示响应的数据长度,
Pragma: 在请求/响应链附近的一些参数
server: 服务器名称
其他参数信息参考: https://blog.csdn.net/jiang7701037/article/details/98961006

-I参数,是直接返回response头,不打印源码.

-K跳过ssl检测:

$ curl -k https://www.example.com

-L指定HTTP请求跟随服务器的重定向,curl命令默认不会跟随重定向

$ curl -L -d 'tweet=hi' https://api.twitter.com/tweet

–limit-rate 限制HTTP请求和回应的带宽,模拟慢网速的情况

curl --limit-rate 1K www.baidu.com 

模拟慢网速下文件加载的情况,

-o 服务器的响应保存成文件,

curl -o example.html www.baidu.com

-O 将url的最后部分当做文件名称保存

$ curl -O https://www.example.com/foo/bar.html

上面命令将服务器回应保存成文件,文件名为bar.html。

-s不输出错误和进度信息,如果不发生错误则正常显示
如果想让curl不产生输出,可以使用:

curl -s -o /dev/null www.baidu.com 命令行窗口不会回显信息.-u 设置服务器认证的用户名和密码: 
```bash
$ curl -u 'bob:12345' https://google.com/login

上面命令设置用户名为bob,密码为12345,然后将其转为 HTTP 标头Authorization: Basic Ym9iOjEyMzQ1。
curl 能够识别 URL 里面的用户名和密码。

-v 输出通信的整个过程,通常用于调试查看,

-x指定HTTP请求代理,

$ curl -x socks5://james:cats@myproxy.com:8080 https://www.example.com
如果没有指定代理协议,默认是http协议,
-x指定代理可用于绕过ip检测
curl -x 127.0.0.1:8080 http://www.baidu.com-X 用于指定HTTP请求的方法
```bash
curl -X post www.baidu.com

HTTP常见的请求方式:
在这里插入图片描述

1,get方法
用于使用给定的URL从给定服务器中检索信息,即是从指定资源中请求数据,使用get方法的请求只是检索数据,并且不应对数据产生其他影响.不对服务端数据做出任何更改操作,get请求方法将参数加在url后面,这样是不安全的,get请求本身不对HTTP协议限制url的大小.但不同的浏览器会进行限制.
2,post请求方式
post方法主要是用来传输实体的主体,可能向服务端提交信息,有可能会更新资源,post请求是对数据传输进行加密相比get方式更加安全.
两者的主要区别:
1、get请求一般用来请求获取数据

  post请求一般作为发送数据到后台,传递数据,创建数据

2、get请求也可以传参到后台,但是传递的参数则显示在地址栏,安全性低,且参数的长度也有限制(2048字符)

  post请求则是将传递的参数放在request body中,不会在地址栏显示,安全性比get请求高,参数没有长度限制

3、get请求刷新浏览器或者回退没有影响
post则会重新请求一遍,
4.get请求会被缓存,也会保留浏览器的历史记录
post请求不会被缓存,也不好保留在浏览器的历史记录中
5,get请求通常是通过url地址请求
post常见的则是form表单的请求,
6,get请求产生一个tcp数据包
post产生两个tcp数据包
7,get产生的url地址可以被bookmark(打书签)
post方式则不行
8,get请求会被浏览器主动cache
而post不会,除非手动设置,
9,对参数类型,get只接受ASCLL字符,而post没有限制
10、get比post更不安全,因为参数直接暴露在URL上,所以不能用来传递敏感信息。
特别注意: 对于get方式,浏览器会把http head和data 一并发送,
而post方式,是先发送head部分,服务器响应后,在发送data数据.
3,put方式
将数据发送到服务器端已创建或更新资源,主要用来上传文件,
4,HEAD请求
HEAD请求主要用来获取报文首部,和get请求类似,但只返回请求的有效性及资源的更新日志等,用来获取报文头
5,DELETE请求
delete方法主要是用来删除某个资源,该方法也不带认证机制,所以一般的网站并不会对它开放使用
6,options请求
options方法用来查询,请求的指定资源都支持什么http方法.也可以用来发送测试请求.
7,connect请求
connect方法用来建立到给定的url标识的服务器隧道,它通过简单tcp/ip隧道更改请求连接,通常使用解码http代理来进行ssl编码的通信.
8,trace请求
trace方法用于沿着目标资源的路径执行消息环回测试,它回应收到请求,它回应收到的请求,以便客户可以看到中间服务器进行了哪些(假设任何)进度或增量。

常见参数:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

参考文档:
https://www.cnblogs.com/leizia/p/16322061.html

相关内容

热门资讯

埃菲尔铁塔在哪 中国仿建埃菲尔... 2019年4月26日,广西南宁市,街头惊现一座巨型山寨版埃菲尔铁塔,高约20米,白色塔身,造型逼真,...
苗族的传统节日 贵州苗族节日有... 【岜沙苗族芦笙节】岜沙,苗语叫“分送”,距从江县城7.5公里,是世界上最崇拜树木并以树为神的枪手部落...
北京的名胜古迹 北京最著名的景... 北京从元代开始,逐渐走上帝国首都的道路,先是成为大辽朝五大首都之一的南京城,随着金灭辽,金代从海陵王...
长白山自助游攻略 吉林长白山游... 昨天介绍了西坡的景点详细请看链接:一个人的旅行,据说能看到长白山天池全凭运气,您的运气如何?今日介绍...
应用未安装解决办法 平板应用未... ---IT小技术,每天Get一个小技能!一、前言描述苹果IPad2居然不能安装怎么办?与此IPad不...
脚上的穴位图 脚面经络图对应的... 人体穴位作用图解大全更清晰直观的标注了各个人体穴位的作用,包括头部穴位图、胸部穴位图、背部穴位图、胳...
猫咪吃了塑料袋怎么办 猫咪误食... 你知道吗?塑料袋放久了会长猫哦!要说猫咪对塑料袋的喜爱程度完完全全可以媲美纸箱家里只要一有塑料袋的响...
demo什么意思 demo版本... 618快到了,各位的小金库大概也在准备开闸放水了吧。没有小金库的,也该向老婆撒娇卖萌服个软了,一切只...
世界上最漂亮的人 世界上最漂亮... 此前在某网上,选出了全球265万颜值姣好的女性。从这些数量庞大的女性群体中,人们投票选出了心目中最美...
埃菲尔铁塔在哪 中国仿建埃菲尔... 2019年4月26日,广西南宁市,街头惊现一座巨型山寨版埃菲尔铁塔,高约20米,白色塔身,造型逼真,...
苗族的传统节日 贵州苗族节日有... 【岜沙苗族芦笙节】岜沙,苗语叫“分送”,距从江县城7.5公里,是世界上最崇拜树木并以树为神的枪手部落...
北京的名胜古迹 北京最著名的景... 北京从元代开始,逐渐走上帝国首都的道路,先是成为大辽朝五大首都之一的南京城,随着金灭辽,金代从海陵王...
长白山自助游攻略 吉林长白山游... 昨天介绍了西坡的景点详细请看链接:一个人的旅行,据说能看到长白山天池全凭运气,您的运气如何?今日介绍...
世界上最漂亮的人 世界上最漂亮... 此前在某网上,选出了全球265万颜值姣好的女性。从这些数量庞大的女性群体中,人们投票选出了心目中最美...
应用未安装解决办法 平板应用未... ---IT小技术,每天Get一个小技能!一、前言描述苹果IPad2居然不能安装怎么办?与此IPad不...
脚上的穴位图 脚面经络图对应的... 人体穴位作用图解大全更清晰直观的标注了各个人体穴位的作用,包括头部穴位图、胸部穴位图、背部穴位图、胳...
demo什么意思 demo版本... 618快到了,各位的小金库大概也在准备开闸放水了吧。没有小金库的,也该向老婆撒娇卖萌服个软了,一切只...
猫咪吃了塑料袋怎么办 猫咪误食... 你知道吗?塑料袋放久了会长猫哦!要说猫咪对塑料袋的喜爱程度完完全全可以媲美纸箱家里只要一有塑料袋的响...