linux下curl和wget命令使用讲解

发布时间:2018-05-15 15:47:14编辑:丝画阁阅读(270)

1. curl

curl 支持 HTTP、HTTPS、FTP 等协议,还支持 POST、cookies、认证、从指定偏移处下载部分文件、User-Agent、限速、文件大小、进度条等特征。

1.1 选项

- -
-A 或 --user-agent 设置用户代理
-b 或 --cookie cookie 字符串或文件读取位置
-c 或 --cookie-jar 操作结束后把 cookie 写入文件
--basic 使用 HTTP 基本验证
-d 或 --data POST 方式传送数据
--data-ascii 以 ASCII 的方式 POST 数据
--data-binary 以二进制的方式 POST 数据
--tcp-nodelay 使用 TCP_NODELAY 选项
-e 或 --referer 来源网址
-E 或 --cert 客户端证书文件和密码 (SSL)
--cert-type 证书文件类型 (DER/PEM/ENG) (SSL)
--key 私钥文件名 (SSL)
--key-type 私钥文件类型 (DER/PEM/ENG) (SSL)
--pass 私钥密码 (SSL)
--engine 加密引擎使用 (SSL)
--cacert CA 证书 (SSL)
--capath CA 路径
--ciphers SSL 密码
-F 或 --form 模拟 HTTP 表单提交数据
--form-string 模拟 HTTP 表单提交数据
-H 或 --header 自定义头信息传递给服务器
-I 或 --head 只显示请求头信息
-T 或 --upload-file 上传文件
-o 或 --output 把输出写到文件中
-O 或 --remote-name 把输出写到文件中,保留远程文件的文件名
-s 或 --silent 静默模式。不输出任何东西

1.2 示例

只看返回的 HTTP Header

[root@VM_139_74_centos ~]# curl -I www.163.comHTTP/1.1 200 OKExpires: Sun, 06 May 2018 15:22:03 GMTDate: Sun, 06 May 2018 15:20:43 GMTServer: nginxContent-Type: text/html; charset=GBKTransfer-Encoding: chunkedVary: Accept-Encoding,User-Agent,AcceptCache-Control: max-age=80Age: 44X-Via: 1.1 PSfjqzdxgn15:0 (Cdn Cache Server V2.0), 1.1 chongdianxin121:4 (Cdn Cache Server V2.0)Connection: keep-aliveX-Dscp-Value: 0

文件下载

curl 默认行为就是下载,浏览网页就是下载网页到本地,curl URL 会把这个 URL 对应的文件下载下来。但是 curl 会把下载的文件输出到 STDOUT 即终端窗口,可以通过 -o 或 -O 选项写入文件。

[root@VM_139_74_centos ~]# curl http://img02.tooopen.com/images/20160509/tooopen_sy_161967094653.jpg -o 1.jpg% Total % Received % Xferd Average Speed Time Time Time CurrentDload Upload Total Spent Left Speed100 208k 100 208k 0 0 447k 0 --:--:-- --:--:-- --:--:-- 448k

设置 cookie

使用 -b 读取 cookie 文件,或 --cookie 选项来指定 cookie,多个 cookie 使用分号分隔:

curl http://www.baidu.com --cookie "user=root;pass=123456"

保存 cookie

使用 -c 或 --cookie-jar 选项:

[root@VM_139_74_centos ~]# curl www.baidu.com --cookie-jar cookie...[root@VM_139_74_centos ~]# cat cookie# Netscape HTTP Cookie File# http://curl.haxx.se/docs/http-cookies.html# This file was generated by libcurl! Edit at your own risk..baidu.com TRUE / FALSE 1525707455 BDORZ 27315

设置 HTTP Header

使用 -H 或 --header 传递多个头部信息,例如:

curl -H "Host:www.baidu.com" -H "accept-language:en" www.baidu.com

2. wget

wget 用于下载文件,支持断点续传。

2.1 选项

-a:在指定的日志文件中记录执行过程;

-A:指定要下载文件的后缀名,多个后缀名之间使用逗号进行分隔;

-b:进行后台的方式运行 wget;

-B:设置参考的连接地址的基地地址;

-c:继续执行上次终端的任务;

-C:设置服务器数据块功能标志on为激活,off为关闭,默认值为on;

-D:设置顺着的域名列表,域名之间用“,”分隔;

-e:作为文件“.wgetrc”中的一部分执行指定的指令;

-i:从指定文件获取要下载的URL地址;

-l:设置顺着的目录列表,多个目录用“,”分隔;

-q:不显示指令执行过程

-O:另存为指定名称的文件

-r:递归下载方式

2.2 示例

下载文件

[root@VM_139_74_centos ~]# wget http://img02.tooopen.com/images/20160509/tooopen_sy_161967094653.jpg--2018-05-06 23:42:14-- http://img02.tooopen.com/images/20160509/tooopen_sy_161967094653.jpgResolving img02.tooopen.com (img02.tooopen.com)... 61.240.138.246, 221.194.130.173Connecting to img02.tooopen.com (img02.tooopen.com)|61.240.138.246|:80... connected.HTTP request sent, awaiting response... 200 OKLength: 213639 (209K) [image/jpeg]Saving to: ‘tooopen_sy_161967094653.jpg.1’100%[=====================================================================================================================================================>] 213,639 --.-K/s in 0.09s 2018-05-06 23:42:14 (2.17 MB/s) - ‘tooopen_sy_161967094653.jpg.1’ saved [213639/213639]

下载文件并重命名

[root@VM_139_74_centos ~]# wget

下载指定格式文件

wget -r -A.pdf url

可以递归(-r 选项)下载一个网站的所有图片、视频、PDF 文件。

关键字