cURL常用命令

作者: AlgoPeek | 来源:发表于2019-04-30 11:00 被阅读8次

什么是cURL

cURLClient for URLs的缩写,是一个支持多种协议的数据传输命令行工具。支持的协议包括:DICT, FILE, FTP, FTPS, GOPHER, HTTP, HTTPS, IMAP, IMAPS, LDAP, LDAPS, POP3, POP3S, RTMP, RTSP, SCP, SFTP, SMB, SMBS, SMTP, SMTPS, TELNET 和 TFTP。除了命令行工具外,还有一个与之配套且开源的libcurl库。

本文主要介绍cURL命令行工具的常用命令,这对我们在进行网站开发或自动化处理一些任务时非常有用。cURL命令一般内置到绝大部分操作系统中,以下所有用法均可以通过man curl查找。

获取网页

这个是最简单也是非常实用的用法,curl后直接跟url地址,如果成功返回的,会在控制台输出网页的内容。如:

$curl https://tools.ietf.org/html/rfc2616

下载单文件

上面的方法只能将URL的内容输出到控制台,如果我们想将一个URL资源下载到本地,使用-o, --output <file>参数:

$curl -o rfc2616.txt https://tools.ietf.org/html/rfc2616

也可以直接使用-O, --remote-name参数,该参数不需要指定文件,而是直接将URL资源下载到当前目录下:

$curl -O https://tools.ietf.org/html/rfc2616

当使用-o-O参数时,终端会显示当前下载的百分比、下载速率、下载时间、剩余时间等信息,如下:

我们也可以指定--progress-bar-#参数,需要展示当前下载百分比,如下:

curl -o rfc2616.txt -# https://tools.ietf.org/html/rfc2616

下载多文件

也可以同时下载多个文件,如:

$curl -o rfc2616.txt https://tools.ietf.org/html/rfc2616 -o rfc5741.txt https://tools.ietf.org/html/rfc5741

断点续传

如果我们在下载https://tools.ietf.org/html/rfc2616资源时中途中断,我们可以使用-C -告诉cURL自动从上次中断的地方开始下载:

$curl -O -C - https://tools.ietf.org/html/rfc2616

设置最大传输速率

使用--limit-rate <speed>设置最大传输速率,默认是bytes/second,也可以指定单位,kKmMgG,如--limit-rate 200K

$curl -O --limit-rate 200K https://tools.ietf.org/html/rfc2616

自动跳转

有时候,当我们请求一些URL时,会返回301或302,并在头Location中指定跳转的地址,我们可以使用-L--location参数完成自动跳转,如:

$curl -L www.sina.com

只获取头信息

有时候我们只想获取一个URL的头信息而忽略其消息体,可以使用-I--head,如:

$curl -I www.sina.com

设置请求头

使用-H, --header <header/@file>参数设置请求头,其格式为:-H 'X-Custom-Header: X-Custom-Value'。需要注意的是,如果想移除一个内置的请求头,Header值设置为空且需要带上冒号,如-H 'Host:';如果是设置一个内容为空的HeaderHeader值设置为空且后面带上分号,如-H 'X-Custom-Header;',看一个完整的例子:

$curl -H "Content-Type:application/json" http://example.com

设置cookie

使用-b, --cookie <data>参数设置cookie,其格式为:"NAME1=VALUE1; NAME2=VALUE2"。如果没有指定=,表示从文件中读取cooke。如果要保存服务器端返回的cookie,可以使用-c, --cookie-jar <filename>参数。

$curl -c cookies http://example.com

$curl -b cookies http://example.com

设置User-Agent

使用-A, --user-agent <name>参数设置UA:

$curl --user-agent "curl" http://example.com

设置Referer

使用-e, --referer <URL>设置referer,如:

$curl --referer http://www.example.com http://www.example.com

POST请求

使用-d, --data <data>参数设置POST请求的body数据,在网站开发中用的比较多的是POST application/x-www-form-urlencodedPOST application/json
1. POST application/x-www-form-urlencoded

$curl -d "param1=value1&param2=value2" -X POST http://www.example.com

等同于:

$curl -d "param1=value1&param2=value2" -H "Content-Type: application/x-www-form-urlencoded" -X POST http://www.example.com

也可以从文件中加载数据,如:

$curl -d "@data.txt" -X POST http://www.example.com

2. POST application/json

$curl -d '{"key1":"value1", "key2":"value2"}' -H "Content-Type: application/json" -X POST http://www.example.com

也可以从文件中加载数据,如:

$curl -d "@data.json" -X POST http://www.example.com

HTTP基本认证

使用-u, --user <user:password>参数,指定用户名和密码在服务器进行认证:

$curl --user name:password example.com

更多参考

  1. http://www.ruanyifeng.com/blog/2011/09/curl.html

  2. https://curl.haxx.se/docs/httpscripting.html

  3. https://www.keycdn.com/support/popular-curl-examples

  4. https://gist.github.com/subfuzion/08c5d85437d5d4f00e58

相关文章

  • meteor介绍

    安装 mac/linux:curl https://install.meteor.com/ | sh 常用命令 创...

  • curl命令查看http请求各个阶段

    一、常用命令 curl -so /dev/null -w '\n'time_namelookup:'\t'%{ti...

  • Linux 命令-curl 常用命令

    Linux 命令-curl 常用命令 下载单个文件 cur http://www.demo.com 默认将输出打印...

  • curl 常用命令

    发起GET 请求 发起POST 请求 可以通过 -X 选项指定其它协议 发起跨域访问请求 常见使用方式 参考: h...

  • cURL常用命令

    什么是cURL cURL是Client for URLs的缩写,是一个支持多种协议的数据传输命令行工具。支持的协议...

  • curl的用法指南

    curl是linux的常用命令之一,用来请求web服务器,即client + URL 常用API: 向URL发送g...

  • curl常用命令参数

    对于windows用户如果用Cygwin模拟unix环境的话,里面没有带curl命令,要自己装,所以建议用Gow来...

  • 【CURL命令】常用命令

    CURL命令是一个通过终端和服务器通信的工具,没有GUI界面,支持FTP / HTTP / SMTP 等多种协议,...

  • curl 常用命令指南

    curl curl:Command Line URL viewercurl 是一种命令行工具,作用是发出网络请求,...

  • 知识分享之Linux——Curl的常用命令

    知识分享之Linux——Curl的常用命令 背景 日常我们开发时,我们会遇到各种各样的奇奇怪怪的问题(踩坑o(╯□...

网友评论

    本文标题:cURL常用命令

    本文链接:https://www.haomeiwen.com/subject/mlupnqtx.html