首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >可以Postman也可以cURL.进来领略下cURL的独门绝技

可以Postman也可以cURL.进来领略下cURL的独门绝技

作者头像
未读代码
发布于 2020-06-03 02:38:34
发布于 2020-06-03 02:38:34
89700
代码可运行
举报
运行总次数:0
代码可运行
cURL Logo
cURL Logo

cURL 是一个开源免费项目,主要是命令行工具 cURL 和 libcurl,cURL 可以处理任何网络传输协议,但是不涉及任何具体的数据处理

cURL 支持的通信协议非常丰富,如 DICT,FILE,FTP,FTPS,GOPHER,HTTP,HTTPS,IMAP,IMAPS,LDAP,LDAPS,MQTT,POP3,POP3S,RTMP, RTMPS,RTSP,SCP,SFTP,SMB,SMBS,SMTP,SMTPS,TELNET 以及 TFTP。查看 cURL 源代码可以访问官方 Github。

如果安装 cURL 呢?

ubuntu / Debian.

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
sudo apt install curl

CentOS / Fedora.

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
sudo yum install curl

Windows.

如果你已经安装了 Git,那么 Git Bash 自带 cURL . 如果作为开发者你 git 都没有,那么只能官方手动下载。

1. 请求源码

直接 curl 。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
$ curl http://wttr.in/

上面请求的示例网址是一个天气网站,很有意思,会根据你的请求 ip 信息返回你所在位置的天气情况。

curl wttr.in

写这篇文字时我所在的上海正在下雨,窗外飘雨无休无止。

2. 文件下载

使用 -o 保存文件,类似于 wget 命令,比如下载 README 文本保存为 readme.txt 文件。如果你需要自定义文件名,可以使用 -O自定使用 url 中的文件名。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
$ curl -o readme.txt https://mirrors.nju.edu.cn/kali/README
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100   159  100   159    0     0   1939      0 --:--:-- --:--:-- --:--:--  1939

下载文件会显示下载状态,如数据量大小、传输速度、剩余时间等。可以使用 -s 参数禁用进度表。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
$ curl -o readme.txt https://mirrors.nju.edu.cn/kali/README
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100   159  100   159    0     0   1939      0 --:--:-- --:--:-- --:--:--  1939
$ 
$ curl -o readme.txt https://mirrors.nju.edu.cn/kali/README -s

也可以使用 --process-bar 参数让进度表显示为进度条。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
$ curl -o readme.txt https://mirrors.nju.edu.cn/kali/README --progress-bar
########################################################################################## 100.0%

cURL 作为强大的代名词,断点续传自然手到擒来,使用 -C - 参数即可。下面是断点续传下载 ubuntu20.04 镜像的例子。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
$ curl -O https://mirrors.nju.edu.cn/ubuntu-releases/20.04/ubuntu-20.04-desktop-amd64.iso --progress-bar
##                                                                                               1.7%
^C
$ curl -C - -O https://mirrors.nju.edu.cn/ubuntu-releases/20.04/ubuntu-20.04-desktop-amd64.iso --progress-bar
###                                                                                              2.4%
^C
$ curl -C - -O https://mirrors.nju.edu.cn/ubuntu-releases/20.04/ubuntu-20.04-desktop-amd64.iso --progress-bar
###                                                                                               2.7%
^C
$ 

什么?下载时不想占用太多网速?使用 --limit-rate 限个速吧。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
curl -C - -O https://mirrors.nju.edu.cn/ubuntu-releases/20.04/ubuntu-20.04-desktop-amd64.iso --limit-rate 100k

什么?你又要从 FTP 服务器下载文件了?不慌。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
curl -u user:password -O ftp://ftp_server/path/to/file/

3. Response Headers

使用 -i 参数显示 Response Headers 信息。使用 -I 可以只显示 Response Headers 信息。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
$ curl -I http://wttr.in
HTTP/1.1 200 OK
Server: nginx/1.10.3
Date: Sat, 30 May 2020 09:57:03 GMT
Content-Type: text/plain; charset=utf-8
Content-Length: 8678
Connection: keep-alive
Access-Control-Allow-Origin: *

4. 请求方式(GET/POST/...)

使用 -X 轻松更改请求方式。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
$ curl -X GET http://wttr.in
$ curl -X POST http://wttr.in
$ curl -X PUT http://wttr.in
...

5. 请求参数

以传入参数 name 值为 未读代码 为例。

Get 方式参数直接url拼接参数。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
$ curl -X GET http://wttr.in?name=未读代码

Post 方式使用 --data 设置参数。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
$ curl -X POST --data "name=未读代码" http://wttr.in

请求时也可以自定义 header 参数,使用 --harder 添加。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
$ curl --header "Content-Type:application/json" http://wttr.in

6. 文件上传

cURL 的强大远不止此,表单提交,上传文件内容也不在话下,只需要使用 -F 或者 -D参数,-F 会自动加上请求头 Content-Type: multipart/form-data ,而 -D 则是 Content-Type : application/x-www-form-urlencoded.

比如上传一个 protrait.jpg 图片。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
$ curl -F profile=@portrait.jpg https://example.com/upload

提交一个具有 name 和 age 参数的 form 表单。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
curl -F name=Darcy -F age=18 https://example.com/upload

参数对应的内容也可以从文件中读取。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
curl -F "content=<达西的身世.txt" https://example.com/upload

上传时同时指定内容类型。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
curl -F "content=<达西的身世.txt;type=text/html" https://example.com/upload

上传文件的和其他参数一起。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
curl -F 'file=@"localfile";filename="nameinpost"' example.com/upload

7. 网址通配

cURL 可以实现多个网址的匹配,你可以使用 {} 结合逗号分割来标识使用 url 中的某一段,也可以使用 [] 来表示范围参数。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
# 请求 www.baidu.com 和  pan.baidu.com 和 fanyi.baidu.com
$ curl http://{www,pan,fanyi}.baidu.com
# 虚构网址1-10开头的baidu.com,然后请求
$ curl http://[1-10].baidu.com
# 虚构网址a-z开头的baidu.com,然后请求
$ curl http://[a-z].baidu.com

这种方式有时候还是很有用处的,比如说你发现了某个网站的 url 规律。

8. 使用 cookie

请求时使用 -c 参数存储响应的 cookie,使用 -b 可以在请求时带上指定 cookie.

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
$ curl -c wdbyte_cookies http://www.wdbyte.com
$ curl -b wdbyte_cookes http://www.wdbyte.com

总结

以上就是 cURL 的常见用法了,最后告诉你一个小技巧,Chrome、Firefox 等浏览器可以直接拷贝请求为 cURL 语句。保存之后下次请求测试非常方便。

Chrome 复制 cURL 请求
Chrome 复制 cURL 请求

参考资料

  1. https://curl.haxx.se/docs/manpage.html
本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2020-06-01,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 程序猿阿朗 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
Linux系列之学会使用CURL命令进行URL测试
curl命令是一个利用URL规则在shell终端命令行下工作的文件传输工具;curl命令作为一款强力工具,curl支持包括HTTP、HTTPS、ftp等众多协议,还支持POST、cookies、认证、从指定偏移处下载部分文件、用户代理字符串、限速、文件大小、进度条等特征;做网页处理流程和数据检索自动化。
SmileNicky
2022/05/07
2.3K0
Linux系列之学会使用CURL命令进行URL测试
知识分享之Linux——Curl的常用命令
日常我们开发时,我们会遇到各种各样的奇奇怪怪的问题(踩坑o(╯□╰)o),这个常见问题系列就是我日常遇到的一些问题的记录文章系列,这里整理汇总后分享给大家,让其还在深坑中的小伙伴有绳索能爬出来。 同时在这里也欢迎大家把自己遇到的问题留言或私信给我,我看看其能否给大家解决。
cn華少
2021/11/24
5740
一文学会curl和curl详解
cURL是一个利用URL语法在命令行下工作的文件传输工具,1997年首次发行。它支持文件上传和下载,所以是综合传输工具,但按传统,习惯称cURL为下载工具。
星哥玩云
2022/05/28
5.3K0
一文学会curl和curl详解
这个命令行HTTP工具好用而且漂亮
cURL相信很多做开发的、运维的都不陌生,是非常有用的一个终端请求工具,借助于它可以在命令行中进行HTTP、FTP等请求,在Linux系统中应用非常广泛。但是它目前有一个缺陷,语法复杂,上手难度挺高,甚至目前还不直接支持JSON参数请求。胖哥最近发现了另一个类似的工具httpie,非常简单的一个HTTP命令行客户端,甚至有点酷炫。
码农小胖哥
2022/02/11
6200
这个命令行HTTP工具好用而且漂亮
Pandoc安装实现Markdown转PDF (CentOS6)
Pandoc简介 pandoc 是一种文档标记语言转换工具,可实现不同文档标记语言间的格式转换,由Haskell语言编写,以命令行的形式实现与用户的交互,可支持多种平台,windows\linux\mac等。据说在出版行业也在使用。 官方网址:https://pandoc.org/ Pandoc安装 由于Centos6的yum源中haskell相关的版本都比较老了,所有须要自行源码安装,须要安装的内容有:ghc, cabal, pandoc, texlive。 ghc是haskell的编译器,cabal是一
囚兔
2018/02/08
2.5K0
关于curl网站运维与开发的那些事
curl网站开发指南 常见参数: -A/--user-agent <string> 设置用户代理发送给服务器 -b/--cookie <name=string/file> cookie字符串或文件读取位置 -c/--cookie-jar <file> 操作结束后把cookie写入到这个文件中 -C/--continue-at <offset> 断点续转 -D/--dump-header <file>
学到老
2018/03/19
1.1K0
GitHub Actions 教程:定时发送天气邮件
2019年11月,GitHub 正式开放了 GitHub Actions 这个功能,现在不用申请就能使用。
ruanyf
2020/01/22
2K1
Linux curl 常用示例
如果想了解curl选项的详细说明,请参考前一篇文章「Linux curl 命令详解」。
踏歌行
2020/10/15
10K0
Linux curl 常用示例
常在web漂,哪有不挨刀:curl独门绝技,不来学几招防身吗?
curl 支持多种协议,如DICT、FILE、FTP、FTPS、Gopher、HTTP、HTTPS、IMAP、IMAPS、LDAP、LDAPS、POP3、POP3S、RTMP、RTSP、SCP、SFTP、SMTP、SMTPS、Telnet和TFTP。
程序员小助手
2020/04/09
9950
常在web漂,哪有不挨刀:curl独门绝技,不来学几招防身吗?
还在用 postman?手把手教你用 curl 提高工作效率
curl 是 Linux 系统上一款网络工具,它的首字母 c 代表的是 client,表示它是客户端程序。通过 URL 方式,可以实现客户端与服务器之间传递数据。
用户3105362
2021/11/12
1.4K0
Linux 命令(136)—— curl 命令
curl 命令是一个利用 URL 规则在 Shell 终端命令行下工作的文件传输工具;它支持文件的上传和下载,所以是综合传输工具,但按传统,习惯称 curl 为下载工具。
恋喵大鲤鱼
2020/03/09
4.1K0
从基础到高级,带你深入了解和使用curl命令(一)
在网络通信和数据传输中,curl命令是一个功能强大且广泛使用的工具。它可以与各种协议进行通信,如HTTP、HTTPS、FTP等,并支持各种操作,如下载文件、发送请求、测试API等。本文将从基础开始,介绍curl命令的基本用法,然后深入探讨其高级功能和实用技巧。
霍格沃兹测试开发Muller老师
2024/04/03
1.6K0
curl的使用
curl是常用发起http请求工具,今天就整理下如何正确的使用curl命令,来提高工作效率。
付威
2020/01/21
1.7K0
Linux curl命令最全详解
curl是一个非常实用的、用来与服务器之间传输数据的工具;支持的协议包括 (DICT, FILE, FTP, FTPS, GOPHER, HTTP, HTTPS, IMAP, IMAPS, LDAP, LDAPS, POP3, POP3S, RTMP, RTSP, SCP, SFTP, SMTP, SMTPS, TELNET and TFTP),curl设计为无用户交互下完成工作;curl提供了一大堆非常有用的功能,包括代理访问、用户认证、ftp上传下载、HTTP POST、SSL连接、cookie支持、断点续传…。
全栈程序员站长
2022/09/19
4.5K0
Linux curl命令最全详解
Linux - curl 命令
后面的栗子,基本都会加 -v,是为了看请求的详细过程,更容易看到对应的参数已生效,实际使用不需要每次都 -v
小菠萝测试笔记
2021/06/17
8.9K0
Linux - curl 命令
CURL 那些不太为人知但强大的功能
对每个人而言,真正的职责只有一个:找到自我。然后在心中坚守其一生,全心全意,永不停息。所有其它的路都是不完整的,是人的逃避方式,是对大众理想的懦弱回归,是随波逐流,是对内心的恐惧 ——赫尔曼·黑塞《德米安》
山河已无恙
2025/03/29
950
CURL 那些不太为人知但强大的功能
linux使用curl命令_如何使用curl从Linux命令行下载文件
The Linux curl command can do a whole lot more than download files. Find out what curl is capable of, and when you should use it instead of wget.
用户7886150
2020/12/30
5.1K0
curl----命令行请求工具
curl是一个使用URL语法传输数据的命令行工具,支持DICT、FILE、FTP、FTPS、GOPHER、HTTP、HTTPS、IMAP、IMAPS、LDAP、LDAPS、POP3、POP3S、RTMP、RTSP、SCP、SFTP、SMTP、SMTPS、TELNET和TFTP。 curl支持SSL证书、HTTP POST、HTTP PUT、FTP上传、基于HTTP表单的上传、代理、cookie、用户+密码身份验证(Basic、Digest、NTLM、Negotiate、kerberos…)、文件传输恢复、代理隧道和其他有用技巧。
cultureSun
2023/05/18
1.1K0
linux之curl命令
原文链接:https://rumenz.com/rumenbiji/linux-curl.html
入门笔记
2021/10/20
3.2K0
从基础到高级,带你深入了解和使用curl命令(四)
在网络通信和API调用中,发送GET和POST请求是常见的操作。curl命令作为一个功能强大的工具,不仅可以用于文件传输,还可以方便地发送各种类型的HTTP请求。本文将详细介绍如何使用curl命令发送GET和POST请求,并提供一些实用的技巧和示例。
霍格沃兹测试开发Muller老师
2024/04/09
3300
相关推荐
Linux系列之学会使用CURL命令进行URL测试
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档