天天看点

web自动化的利器 -- cURL

 cURL支持HTTP、HTTPS、FTP协议,也支持POST,cookie,断点续传,userAgent,extra header, 限速,文件大小限制,进度条等等。

默认情况下,linux的发行版往往不带cURL,需要自行安装。

cURL通常将下载文件输出到stdout,将进度信息输出到stderr,如果不想显示进度信息,可以使用--silent选项。

最简单的使用:

$ curl URL --silent      

这样的命令会把文件输出到终端,如果想写入文件,可以使用-O选项。

$ curl URL --silent -O      

如果不指明输出文件名,就会使用从URL中解析出来的文件名,例如

$ curl http://linux.web-coding.tech/index.html --silent -O      

这样就会得到一个index.html文件。

如果无法从URL中解析出文件名,命令执行时会报错,所以你可以指定文件名:

$ curl http://linux.web-coding.tech/ --silent -o index.html      

注意前者是-O,后者是-o。

curl支持从特定的文件偏移量处继续下载,

$ curl URL -C offset      

offset就是以字节为单位的整数。

如果只想断点续传,可以这样

$ curl URL -C -URL      

我们可以用curl存储cookie为一个文件

$ curl URL --cookie-jar cookie_file      

如果要指定cookie

$ curl URL --cookie "key1=value1;key2=value2"      

cookies是用key=value的形式给出,多个cookie以分号隔开。

有一些网页会检测访问的userAgent,这时候如果希望能按照指定的方式访问,就需要指定userAgent

$ curl URL --user-agent "Mozilla/5.0 (iPhone; CPU iPhone OS 11_0 like Mac OS X) AppleWebKit/604.1.38 (KHTML, like Gecko) Version/11.0 Mobile/15A372 Safari/604.1"      

用-A和--user-agent是一样的。

同样的,如果需要设置访问的header

$ curl URL -H "Host:linux.web-coding.tech" -H "Accept-Language: zh-CN"      

如果只想获取请求响应的头,可以使用-I或者-head

$ curl -I http://linux.web-coding.tech      

如果带宽有限,可以使用--limit-rate来限制下载速度

$ curl URL --limit-rate 20k      

速度单位支持k和m。

还可以指定下载的最大文件大小

$ curl URL --max-filesize 2500000      

这里文件大小单位是byte。

curl命令也支持认证

$ curl -u username:password URL      
$ curl -u username URL      

继续阅读