Linux命令备忘实例(17)——cURL

cURL是Linux下进行网络访问的功能超级强大的工具,对于一般网络访问,使用wget命令基本都能完成,但是cURL比wget更胜一筹。首先,支持http、https、ftp等多个协议,同时对http协议中POST、COOKIE、认证、部分下载文件、referer、扩展头、限速、文件大小限制、进度条等多方面的控制和配置,能在命令行完成几乎所有细节操作,是进行网络相关任务的必备工具。下面是cURL 7.43.0的信息:

$ curl --version
curl 7.43.0 (x86_64-pc-linux-gnu) libcurl/7.43.0 GnuTLS/3.3.15 zlib/1.2.8 libidn/1.28 librtmp/2.3
Protocols: dict file ftp ftps gopher http https imap imaps ldap ldaps pop3 pop3s rtmp rtsp smb smbs smtp smtps telnet tftp 
Features: AsynchDNS IDN IPv6 Largefile GSS-API Kerberos SPNEGO NTLM NTLM_WB SSL libz TLS-SRP UnixSockets 

可以看出支持的协议非常丰富,同时features一栏中

1. 命令格式

$ Usage: curl [options...] <url>

2. 输出控制

cURL有两个输出,一个是进行操作的反馈信息,另一个是下载的文件内容。对于下载文件,默认将输出到stdout,而对于进度信息,则输出到stderr,若要避免输出进度,可以使用–silent选项。如果需要显示下载信息的进度条,可以用–progress选项替换–silent。

$ curl URL --silent

若要将下载的文件内容保存到文件,使用-O选项,此时会以请求的url中的pathname为文件名进行保存(如果没有pathname那么无法使用-O选项,必须使用-o指定文件名),使用-o选项可以指定这个文件名。

$ curl URL --silent -O -o save_file_name
$ curl http://blog.csdn.net -O
curl: Remote file name has no length!
$ curl http://blog.csdn.net -o blog --silent; ls
blog

3. 断点续传下载

这是与wget命令更高级的地方,能够从特定的文件偏移处继续下载。

$ curl URL/file -C offset

偏移量是以字节为单位的整数,如果希望curl自动推算出续传的位置,可以使用如下格式进行:

$ curl  -C -URL/file

4. 网速与大小控制

curl可以指定占用的下载网络带宽,避免多个用户共享有限的网络时出现某个用户占用太多的问题。如果网速过低,则可以设置停止下载,这可以通过–speed-limit和–speed-time设置,前者设置速度下限,后者设置低于速度下限后多久就停止下载,默认为30秒

$ curl ULR  --limit-rate 20k
$ curl ULR  --speed-limit 10k --speed-time 60

速度限制使用单位为字节,可以使用k、m、G等。
另外下载的文件如果过大,占用本地磁盘太多,可以设定最大文件大小,如果文件超出范围,就会返回一个非0的退出码,否则就正常运行后返回0。

$ curl URL  --max-filesize  bytes

5. HTTP头部

对于某些网站,如果直接使用命令行访问,可能被当做机器人而拒绝访问。因此可以对http请求头进行设置,同时也可以仅仅查看指定url返回的http头来查看服务器的返回信息。
通用情况下使用 -H(–header) LINE来设置:

$ curl -H "key: val" -H "key1: val1"  URL

同时,提供了较常用的头部选项可以直接使用:

$ curl -e/--referer  RefererUrl   URL #设置Referer字段
$ curl -A/--user-agent UserAgent  URL #设置UA字段
$ curl -A/--user-agent UserAgent  URL #设置UA字段

另外cookie虽然也是http头部的一个字段,但是在网站认证过程中非常重要,因此单独进行设置,可以使用文件设置,或者单个字符串进行设置:

$ curl  --cookie "key1=val1;key2=val2"  URL
$ curl  --cookie-jar cookie_file  URL

对于服务器的返回信息,如果仅仅需要查看是否请求成功,可以使用-I选项仅仅返回头部信息,这样就不会下载整个文件了。

$ curl  -I  URL

6. HTTP和FTP的用户认证

如果需要使用用户名密码认证,那么使用-u选项就可以完成:

$ curl  -u username:password  URL #直接输入密码
$ curl  -u username  URL #使用密码提示输入

7. 发送数据

使用-d选项就可以发送数据到网站,默认使用的是POST方式将数据发送到服务器,可以使用–get/-G选项强制使用get方式发送数据。

$ curl  URL -d "k1=v1&k2=v2" #默认为POST方式
$ curl  URL -d "k1=v1&k2=v2" --get #强制使用GET方式

对于文件的上传,使用POST方式时还需要指定form方式,选项–form CONTENT就是用来指定multipart POST数据,–form-string STRING用来指定多次上传字符串。对于上传文件(FTP)可以使用–upload-file来设置。

$ curl URL --form file-name
$ curl URL --form-string "xxxxx..."
$ curl URL --upload-file FILE --url URL #将文件上传到指定能的URL路径下

除了上述常用的选项实例之外,cURL还支持SSL连接,支持socks代理,支持http proxy代理等非常多的详细设置选项,可以将所有设置写进配置文件,使用–config选项来指定配置文件后进行操作。总之,curl是一个非常强大的工具,功能丰富。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值