前言

curl 是一个强大的命令行工具,支持 HTTP, HTTPS, SCP 等多种协议,本文主要总结一下其常用的功能,方便及时查阅。

curl --version
curl 7.68.0 (x86_64-pc-linux-gnu) libcurl/7.68.0 OpenSSL/1.1.1f zlib/1.2.11 brotli/1.0.7 libidn2/2.2.0 libpsl/0.21.0 (+libidn2/2.2.0) libssh/0.9.3/openssl/zlib nghttp2/1.40.0 librtmp/2.3
Release-Date: 2020-01-08
Protocols: dict file ftp ftps gopher http https imap imaps ldap ldaps pop3 pop3s rtmp rtsp scp sftp smb smbs smtp smtps telnet tftp
Features: AsynchDNS brotli GSS-API HTTP2 HTTPS-proxy IDN IPv6 Kerberos Largefile libz NTLM NTLM_WB PSL SPNEGO SSL TLS-SRP UnixSockets

命令行选项

短选项

curl -v baidu.com # 显示中间的操作过程
curl -L baidu.com # 跟随 HTTP 重定向
curl -vL baidu.com # vL 可以写在一起
curl -v -L baidu.com # v L 可以分开
curl baidu.com -vL # vL 可以放在目标后面

长选项

虽然短选项写起来简单快速,但是英文字母是有限的,所以能控制的功能开关也是有限的。

长选项虽然写起来慢点,但能控制的功能更多,且代码可读性会更好。

curl --verbose --location baidu.com

带参数选项

不是所有的功能都像开关似的,只有 true 和 false 两种值,有些功能需要传递参数。

curl -d '{"username":"xyz","password":"abc"}' example.com
curl -d @info.json example.com # 也可以直接从文件中读取

HTTP 基本操作

GET

curl www.baidu.com

POST

curl -d 'name=xiaoming&age=18' baidu.com

-d 参数会默认生成 request header Content-Type: application/x-www-form-urlencoded

使用 -H 参数定制 request header

curl -v -H 'Content-Type: application/json' -d '{"name":"xiaoming","age":"18"}' baidu.com
curl --data-binary @filename baidu.com # 发送原始2进制文件

PUT DELETE

使用 -X 来改变 http request method

curl -d "data" -X PUT http://example.com
curl -d -X PUT http://example.com

使用 cookie

# 将请求获取的 cookie 保存到 cookie.txt 文本中
curl --cookie-jar cookie.txt --data '{"name":"abc","password":"xyz"}' example.com # 携带 cookie 请求其他接口
curl --cookie cookie.txt example.com

获取响应状态码

code=$(curl -o /dev/null --silent --write-out "%{http_code}\n" baidu.com)
echo $code

-o /dev/null 将返回内容输出到空设备

--silent 静默模式,即没有以上的统计信息

--write-out 在请求完成后,将一些特定信息打印到控制台上,比如:methodhttp_coderemote_ip

参考

Everything curl

man curl

github

curl 常用操作总结的更多相关文章

  1. curl常用操作

    1.cURL介绍 cURL 是一个利用URL语法规定来传输文件和数据的工具,支持很多协议,如HTTP.FTP.TELNET等.最爽的是,PHP也支持 cURL 库.本文将介绍 cURL 的一些高级特性 ...

  2. PHP curl 常用操作

    网页内容替换 $curl = curl_init(); curl_setopt($curl, CURLOPT_URL, "http://www.baidu.com"); //执行后 ...

  3. openstack swift curl 常用操作

    上传文件 curl -v -X PUT -H 'X-Auth-Token: AUTH_tkd9276f23b3404c67b8a6be45da881d6e' http://127.0.0.1:8080 ...

  4. curl常用选项详解

    curl常用选项详解 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 又是下班的时间了,让我们一起来学习一下今天的Linux命令吧~我一半只把自己常用的参数列出来,其他的有但是我们几 ...

  5. [容器]docker-ce安装最新版-docker常用操作

    社区: http://www.dockerinfo.net/rancher http://dockone.io/ https://www.kubernetes.org.cn/ 1,docker安装配置 ...

  6. Elasticsearch本地环境安装和常用操作

    本篇文章首发于我的头条号Elasticsearch本地环境安装和常用操作,欢迎关注我的头条号和微信公众号"大数据技术和人工智能"(微信搜索bigdata_ai_tech)获取更多干 ...

  7. Linux curl 常用示例

    本篇文章包含了curl的常用案例使用. 如果想了解curl选项的详细说明,请参考前一篇文章「Linux curl 命令详解」. 常见网页访问示例 基本用法 访问一个网页 curl https://ww ...

  8. 【三】用Markdown写blog的常用操作

    本系列有五篇:分别是 [一]Ubuntu14.04+Jekyll+Github Pages搭建静态博客:主要是安装方面 [二]jekyll 的使用 :主要是jekyll的配置 [三]Markdown+ ...

  9. php模拟数据库常用操作效果

    test.php <?php header("Content-type:text/html;charset='utf8'"); error_reporting(E_ALL); ...

随机推荐

  1. Python 使用xlsxwriter绘制Excel表格

    最近在统计资产,正好看到了xlsxwriter这个表格生成模块,借此机会,熟悉一下,写点有趣的小案例,一开始想使用C++ QT图形化开发一套自动化运维平台,但后来发现不仅消耗时间而且需要解决QT Qs ...

  2. DVWA之SQL Injection

    SQL Injection SQL Injection,即SQL注入,是指攻击者通过注入恶意的SQL命令,破坏SQL查询语句的结构,从而达到执行恶意SQL语句的目的.SQL注入漏洞的危害是巨大的,常常 ...

  3. adbi学习:安装和使用

    adbi 是一个android平台(arm 32 )的so注入+挂钩框架,源码开放在github上 :  ADBI 项目 .从github上下载来目录如下: 执行主目录下build.sh编译后目录如下 ...

  4. hdu4884 模拟

    题意:       一个厨师,他能炒n道菜,他每次炒菜用时t分钟,每次最多可以炒同样的菜k分,有m个人来买饭,给你每个人来的时间和菜的种类以及份数,问你每个人都是什么时候离开的. 思路:       ...

  5. MS06-040漏洞研究(下)【转载】

    课程简介 经过前两次的分析,我们已经对Netapi32.dll文件中所包含的漏洞成功地实现了利用.在系统未打补丁之前,这确实是一个非常严重的漏洞,那么打了补丁之后,这个动态链接库是不是就安全了呢?答案 ...

  6. Docker用Commit给容器做快照

    关于 commit 镜像是容器的基础,每次执行 docker run 的时候都会指定哪个镜像作为容器运行的基础. 镜像是多层存储,每一层是在前一层的基础上进行修改:而容器同样也是多层存储,是在以镜像为 ...

  7. 【maven】maven资源过滤问题<build>

    需要在pom.xml加入以下代码(在父项目添加即可,如果还不行的话,就在子module的pom.xml也添加) <build> <resources> <resource ...

  8. c++学习的一些忠告(转载)

    c++学习的一些忠告 1.把C++当成一门新的语言学习(和C没啥关系!真的.): 2.看<Thinking In C++>,不要看<C++变成死相>: 3.看<The C ...

  9. 一文弄懂pytorch搭建网络流程+多分类评价指标

    讲在前面,本来想通过一个简单的多层感知机实验一下不同的优化方法的,结果写着写着就先研究起评价指标来了,之前也写过一篇:https://www.cnblogs.com/xiximayou/p/13700 ...

  10. Windows进程间通讯(IPC)----WM_COPYDATA

    WM_COPYDATA通讯思路 通过向其他进程的窗口过程发送WM_COPYDATA消息可以实现进程间通讯. 只能通过SendMessage发送WM_COPYDATA消息,而不能通过PostMessag ...