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

    相关文章

      网友评论

        本文标题:cURL常用命令

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