CURL的使用详解

CURL的使用详解

发起GET请求

  1. 命令后直接跟地址

    curl 'https://www.baidu.com'
    
  2. 请求中拼接查询参数

    curl -G -d 'key=value' 'https://www.baidu.com'
    

    这里就等于在浏览器地址栏里访问 https://www.baidu.com?key=value

    如果需要对value进行url编码,那么可以这样写:

    curl -G --data-urlencode 'key=value' 'https://www.baidu.com'
    

    注意,如果没有-G参数的话,会发起一个POST请求,-d指定的参数会被使用form表单的形式提交

  3. 保存响应信息到一个指定文件

    curl -o response.txt 'https://www.baidu.com'
    
  4. 请求中增加header

    curl 'https://www.baidu.com/' \
    -H 'Host: www.baidu.com' \
    -H 'Accept-Language: zh-cn' \
    -H 'Referer: https://www.baidu.com/'
    
    

发起POST请求

  1. 发起一个最简单的POST请求

    curl -X POST 'https://www.baidu.com'
    
  2. 使用form表单的形式提交数据

    curl -d 'username=123&password=123' -X POST 'https://www.baidu.com'
    

    -d 后面的内容就是request body

    增加了-d 这个参数,会默认的设置 header Content-Typeapplication/x-www-form-urlencoded

    甚至在设置了-d 以后,-X POST 这个参数也可以省略掉,请求方式默认会使用POST 方式

    curl -d 'username=123&password=123' 'https://www.baidu.com'
    
  3. form表单数据拆开,更易阅读

    curl 'https://www.baidu.com' \
    -d 'username=123' \
    -d 'password=123' 
    

    多个参数的时候,可以每个参数用一个单独的-d 来指定

  4. 使用JSON格式提交数据

    curl 'https://www.baidu.com' \
    -H 'Content-Type: application/json' \
    -d '{"username": "123", "password": "123"}'
    

    -H: 首先使用-H 指定提交的数据为json格式

    -d: 是指定提交的内容,这里是一个json格式的字符串

  5. 从文件中加载提交数据

    curl -d '@data.txt' 'https://www.baidu.com'
    

    -d 参数中使用 @符号来指定一个文件名,告诉curl加载这个文件的内容来作为请求的数据。

  6. 对提交的数据进行URL编码

    上面讲到的 -d 参数是不会对请求的数据做任何处理的,但是有的时候我们可能会提交一些待特殊字符的参数,例如网址、空格、问号等等,这个时候就需要对请求数据进行url编码,curl已经提供了先编码再提交的功能,只需要吧-d 替换为 --data-urlencode--data-urlencode的其他用法与 -d完全一样。

    curl 'https://www.baidu.com' \
    --data-urlencode 'username=123' \
    --data-urlencode 'password=123' 
    
  7. 上传文件

    curl -F 'file=@image.png' 'https://www.baidu.com'
    

    -F :利用这个参数指定要上传的文件,同时参数还会自动的设置header中的Content-Typemultipart/form-data

  8. 上传文件的同时指定MIME类型

    curl -F 'file=@image.png;type=image/png' 'https://www.baidu.com'
    
  9. 上传文件,修改上传文件的文件名

    curl -F 'file=@image.png;filename=otherName.png' 'https://www.baidu.com'
    

cookies自动保存与发送

curl -c cookies.txt 'https://www.baidu.com' \
--data-urlencode 'username=123' \
--data-urlencode 'password=123'


curl -b cookies.txt 'https://www.baidu.com'

-c 会自动的把cookies保存到 cookies.txt 文件中

-b 会自动的把cookies.txt 中的内容当做cookies放到请求中

User Agent修改

  1. 利用 -A 参数修改

    使用 -A 参数可以直接修改 User-Agent

    #模拟Firefox
    curl 'https://www.baidu.com' \
    -A 'Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:60.0) Gecko/20100101 Firefox/60.0'
    
    #模拟Chrome
    curl 'https://www.baidu.com' \
    -A 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/76.0.3809.100 Safari/537.36'
    
    #模拟Safari
    curl 'https://www.baidu.com' \
    -A 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/14.1.1 Safari/605.1.15'
    
  2. 通过 -H 修改

    curl 'https://www.baidu.com' \
    -H 'User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/14.1.1 Safari/605.1.15'
    

修改 Referrer

修改Referrer也有两种方法,一种是通过-e 直接修改,另一种是通过 -H 在header中修改

curl 'https://www.baidu.com' \
-e 'https://www.baidu.com'

curl 'https://www.baidu.com' \
-H 'Referer: https://www.baidu.com'

响应重定向

默认情况下curl不响应重定向,也就是在响应码为 3XX 的时候不会执行重定向,需要指定-L 参数才会响应。

curl -L 'https://www.baidu.com'

静默模式

curl -s 'https://www.baidu.com'

-s 会隐藏掉错误信息和进度条,但是会打印响应信息。

如果也想把响应信息省略掉,那么可以使用下面的命令

curl -s -o /dev/null 'https://www.baidu.com'

-o /dev/null 会丢弃响应body

如果想静默模式的情况下,打印请求出现的错误,可以使用下面的命令

curl -S -s -o /dev/null 'https://www.baidu.com'

-S-s 一起用的时候,仍然会隐藏进度条,但是当请求错误的时候,会打印错误信息。

限速

#限制访问速度为1k
curl --limit-rate 1k 'https://www.baidu.com'

#限制访问速度为1byte
curl --limit-rate 1 'https://www.baidu.com'

打印请求Headers

curl -v -s -o /dev/null --stderr - 'https://www.baidu.com' | grep '^>'

-v 会打印出详细的调试信息, -o /dev/null 把响应body丢弃

--stderr - 把标准的错误输出转发到标准输出,这样就可以使用grep 命令来做筛选了。

筛选出>开头的行,就是请求Headers

只打印响应码

curl -w '%{response_code}' -s -o /dev/null 'https://www.baidu.com'

不验证ssl证书

curl -k 'https://www.baidu.com'

打印响应Headers

  1. 只用-i 这样会既打印Header信息又打印Body信息

    curl -i https://www.baidu.com
    
  1. 只打印Header信息

    curl -s -o /dev/null -D - https://www.baidu.com
    

    -s :作用是不展示进度条

    -o /dev/null :作用是把输出的body丢弃

    -D - :作用是把headers信息转存到一个文件中,这里的- 代表标准输出

    下面这个命令看似也是只打印了header

    curl -I https://www.baidu.com
    

    但是实际这个命令是发送的HEAD请求,而不是GET或者POST,从返回的头信息上也可以看出来。

    image-20210721092350110

    下面的返回长度有 2443,上面的返回长度只有277。

    另外,如果是一些resful风格接口,只支持GET或者POST,这时候使用-I的时候就会报404错误

    image-20210721092602331
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 194,390评论 5 459
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 81,821评论 2 371
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 141,632评论 0 319
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 52,170评论 1 263
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 61,033评论 4 355
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 46,098评论 1 272
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 36,511评论 3 381
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 35,204评论 0 253
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 39,479评论 1 290
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 34,572评论 2 309
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 36,341评论 1 326
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 32,213评论 3 312
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 37,576评论 3 298
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 28,893评论 0 17
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,171评论 1 250
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 41,486评论 2 341
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 40,676评论 2 335

推荐阅读更多精彩内容

  • 一、安装: (大多数 Linux 发行版都预先安装了 curl 包,不需要自行安装) Ubuntu:sudo ap...
    哎呦666阅读 23,751评论 0 1
  • CURL是PHP的一个扩展,利用该扩展可以实现服务器之间的数据或文件传输,用来采集网络中的html网页文件、其他服...
    赵客缦胡缨v吴钩霜雪明阅读 6,460评论 0 7
  • 本文转载自curl 的用法指南-阮一峰 简介   curl 是常用的命令行工具,用来请求 Web 服务器。它的名字...
    殉道者之花火阅读 6,343评论 0 3
  • 在Linux中curl是一个利用URL规则在命令行下工作的文件传输工具,可以说是一款很强大的http命令行工具,习...
    mysimplebook阅读 6,681评论 0 0
  • -A 指定客户端用户代理标头,User-Agentcurl -A 'Mozilla/5.0 (Windows N...
    TZX_0710阅读 283评论 0 1