cUrl支持HTTP HTTPS FTP等多种协议,支持POST cookie 认证,从指定位置下载部分文件,参照页,用户代理字符串,扩展头部,限速,文件大小限制,进度条等优化
我们就来详细的说下cURL的特性
curl通常将下载的文件输出到stdout,将进度信息输出到stderr
curl可以执行下载,或者发送各种HTTP请求,指定HTTP头部的操作
我们先尝试将下载的文件输出到终端
curl URL — silent
–slient将不再显示进度信息
我们再使用-O,将下载数据写入文件,而非写入标准输出,这个文件采用的是URL中解析的标准文件名
例如 curl www.baidu.com/index.html –silent -O
这样会创建index.html
但是如果直接 curl http://www.baidu.com 会报错
因为无法从URL中解析出文件名
curl URL –slient -o newfilename
如果需要在下载过程中显示进度条,不如用 –progress 代替 — silent
再来看一些cURL的一些高级选项
断点续传
和wget不同,cURL包含更加高级的下载恢复特性,可以从特定的文件偏移处继续下载,可以指定一个偏移的量来下载部分文件
curl URL/file -C offset
如果不想指定偏移的量,而是交给CURL自己决定偏移多少,使用选项C –
如下
curl -C – URL
设置参照页
一个没多少用的属性,标识用户从哪个页面到达这个页面的,如果用户点击了页面A的某个链接
到达了页面B,那么B的参照页就是页面A
这个参数就是 –referer
使用方式例如下
curl –referer URL target_URL
curl –referer http://google.com http://slynux.org
curl设置cookie
我们使用curl来存储HTTP过程的cookie
我们要指定cookie的话,使用–cookie的下班宣布该
COOKIES需要以name=value的方式来给出,如果需要多个cookie,用分号来分隔
curl http://example.com –cookie “user=slynux;pass=hack”
如果需要将cookie保存起来,使用–cookie-jar的选项
curl URL –cookie-jar cookie_file
使用cURL设置用户代理字符串
如果不指定用户代理,有一些需要检验用户代理的页面就无法正常使用
这就需要设置用户的 user-agent 或者-A来设置用户代理
curl URL –user-agent “Mozilla/5.0”
引申一下,如果有其他的头部,可以使用-H来传递多个头部的信息,例如
curl -H “Host:www.baidu.com” -H “Accept-language:en” URL
限定带宽上限
如果带宽有限,需求的人不止自己,为了限制带宽,可以使用 –limit-rate来限制速度
curl URL –limit-rate 20k
在命令中使用k或者m来指定速度限制
指定下载量
–max-filesize来指定最大文件大小
如果文件超过了限制,那么会返回一个非0的码
cURL可以用于认证
-u username:password可以用于指定用户名和密码
类似Mysql一样
如果不想要明文输入 password,那么可以直接 -u user,让页面提示输入时候再输入
打印响应头部信息
只输出response header,可以去帮助统计一些信息,
而且,我们可以利用HTTP头部来在下载之前获取到文件的长度 content-length,
那么直接使用 -I 或者 -head就可以打印HTTP头部信息
curl -I http://slynux.org
HTTP/1.1 200 OK
Accept-Ranges: bytes
Cache-Control: private, no-cache, no-store, proxy-revalidate, no-transform
Connection: keep-alive
Content-Length: 277
Content-Type: text/html
Date: Mon, 27 Jul 2020 08:12:59 GMT
Etag: “575e1f60-115”
Last-Modified: Mon, 13 Jun 2016 02:50:08 GMT
Pragma: no-cache
Server: bfe/1.0.8.18