在Linux中crul是一个强大的http命令行工具,支持文档的上传和下载,是一个综合传输工具,

在高级用途上的curl由于可自定义各种请求参数所以长于模拟web请求,常用于测试网页交互(浏览器);

语法:curl [选项] URL

常见参数:

-v/--verbose 小写的v参数,用于打印更多信息,包括发送的请求信息,这在调试脚本是特别有用。

-m/--max-time <seconds> 指定处理的最大时长

-H/--header <header> 指定请求头参数

-s/--slient 减少输出的信息,比如进度

--connect-timeout <seconds> 指定尝试连接的最大时长

-x/--proxy <proxyhost[:port]> 指定代理服务器地址和端口,端口默认为1080

-T/--upload-file <file> 指定上传文件路径

-o/--output <file> 指定输出文件名称

-d/--data/--data-ascii <data> 指定POST的内容

--retry <num> 指定重试次数

-e/--referer <URL> 指定引用地址

-I/--head 仅返回头部信息,使用HEAD请求

-I:显示文档信息

-L:自动跳转到新的网址


curl -I http://www.hexing516.com/

HTTP/1.1 200 OK

Date: Mon, 20 Mar 2017 04:10:10 GMT

Content-Type: text/html

Connection: keep-alive

Set-Cookie: __cfduid=da352f5ea34da80d4c960a34b4a36ace51489983010; expires=Tue, 20-Mar-18 04:10:10 GMT; path=/; domain=.hexing516.com; HttpOnly

Last-Modified: Thu, 19 May 2016 02:51:13 GMT

Vary: Accept-Encoding

X-Powered-By: ASP.NET

X-Safe-Firewall: zhuji.360.cn 1.0.9.47 F1W1

Server: yunjiasu-nginx

CF-RAY: 3425d1f554df38f5-FUO


-O:按URL中默认的文件名保存文件到本地(需要指明具体的页面)

curl -O http://www.cnblogs.com/duhuo/p/5695256.html

curl -O http://mirror.bit.edu.cn/apache/httpd/flood/flood-0.4.tar.gz -O

http://mirror.bit.edu.cn/apache/httpd/httpd-2.2.34.tar.bz2


-o:将文件保存为命令行中指定的文件名的文件中

curl -o b.txt http://www.baidu.com


-i:输出时包括protocol头信息

curl -i www.baidu.com


-C:大文件下载支持断点续传

curl -C - -O http://mirror.bit.edu.cn/apache/httpd/httpd-2.2.34.tar.gz


--limit-rate:限速下载

curl --limit-rate 10k -O http://mirror.bit.edu.cn/apache/httpd/httpd-2.2.34.tar.gz


从FTP下载文件:

curl -O -u et:11 ftp://18.62.25.1:907/FileTrans/uninc000.exe

-T:把本地文件上传到FTP服务器

curl -u ftpuser:ftppass -T a.txt ftp://ftp.testserver.com

上传多个文件:

curl -u ftpuser:ftppass -T "{a.txt,b.sh}" ftp://ftp.testserver.com


-s:安静模式,没有任何输出

curl -s  -O http://www.baidu.com/index.html


wget:wget由于支持ftp和Recursive所以长于下载,常用于下载文件

语法:wget [选项] 参数

选项:

-T,  --timeout=SECONDS:设定响应的超时时间

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

-b:后台执行

--spider:测试是否可以正常下载,并不真正下载

-o file:把下载记录写到file文件中

-a file:把记录追加到文件中

-q:安静模式,没有输出

-w:两次尝试之间,间隔多少秒

-r:递归下载,慎用

-A --accept=LIST:递归下载中的被接受的扩展名列表

-R:递归下载中的不被接受的扩展名列表

–limit-rate=100k:限定下载速率,如100k

-O file:把下载的文档写到file文件中

-c:接着下载没有下载完的文件

--tries=number:如果失败的话,下载重试的次数


示例:

下载网页并保存到以zip结尾的文件中

[root@localhost ~]# wget -O a.zip  www.baidu.com


下载多个文件:

wget http://mirror.bit.edu.cn/apache/httpd/README.html http://mirror.bit.edu.cn/apache/httpd/httpd-2.2.34.tar.bz2 http://mirror.bit.edu.cn/apache/httpd/httpd-2.4.27.tar.bz2


限速下载:

wget --limit-rate=300k http://www.minjieren.com/wordpress-3.1-zh_CN.zip


断点续传:

wget -c http://www.minjieren.com/wordpress-3.1-zh_CN.zip


对于大文件,可以用-b进行后台下载

wget -b http://www.minjieren.com/wordpress-3.1-zh_CN.zip


测试下载:

[root@localhost ~]# wget --spider www.baidu.com


一旦失败,重新下载的次数

wget --tries=3 www.baidu.com


使用wget –mirror镜像网站

wget --mirror -p --convert-links -P ./LOCAL URL

下载整个网站到本地

–-miror:开户镜像下载

-p:下载所有为了html页面显示正常的文件

–convert-links:下载后,转换成本地的链接

-P ./LOCAL:保存所有文件和目录到本地指定目录


把下载信息保存到文件中

[root@localhost ~]# wget -o a.txt www.baidu.com


过滤文件格式下载:--reject=

wget --reject=gif URL


下载网站所有的pdf文件

[root@localhost ~]# wget -r -A.pdf www.baidu.com

wget -r --accept=pdf,jpg www.baidu.com