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

发表评论

邮箱地址不会被公开。 必填项已用*标注