1、curl命令

  curl是基于URL语法在命令行方式下工作的文件传输工具,它支持FTP, FTPS, HTTP, HTTPS, GOPHER, TELNET, DICT, FILE及LDAP等协议。curl支持HTTPS认证,并且支持HTTP的POST、PUT等方法, FTP上传, kerberos认证,HTTP上传,代理服务器, cookies, 用户名/密码认证, 下载文件断点续传,上载文件断点续传,,http代理服务器管道( proxy tunneling), 甚至它还支持IPv6, socks5代理服务器,,通过http代理服务器上传文件到FTP服务器等等,功能十分强大。

语法:

   curl [options] [URL...]

常用选项

  -A/--user-agent <string>  设置用户代理发送给服务器,即告诉(伪装)客户端浏览器类型

  -basic                使用HTTP基本验证

  --tcp-nodelay          使用TCP_NODELAY选项

  -e/--referer <URL>       设置来源网址,跳转过来的网址

  --cacert <file>         指定CA证书 (SSL)

  --compressed     要求返回是压缩的形式,如果文件本身为一个压缩文件,则可以下载至本地

  -H/--header <line>            自定义头信息传递给服务器

  -I/i/--head            只显示响应报文首部信息,-i会显示entity-body

  --limit-rate <rate>            设置传输速度

  -u/--user <user[:password]>      用户和密码

  -0/--http1.0                使用HTTP 1.0,默认http/1.1

  -s,--slient:减少输出信息,下载时不显示相信信息      

  -o,--output:将信息输出到文件

  -O,--remote-name:按照服务器上的文件名,存在本地

  -T,--upload-file:上传文件

  -x,--proxy:指定代理服务器地址和端口

  -w,--write-out:输出指定格式内容

  --retry:重试次数

  --connect-timeout:指定尝试连接的最大时间/s 

  -c,--cookie-jar:将cookie写入到文件

  -b,--cookie:从文件中读取cookie

  -C,--continue-at:断点续传

  -d,--data:http post方式传送数据

  -D,--dump-header:把header信息写入到文件

  -F,--from:模拟http表达提交数据


文件下载:

  curl命令可以用来执行下载、发送各种HTTP请求,指定HTTP头部等操作。

curl是将下载文件输出到stdout,将进度信息输出到stderr不显示进度信息使用--silent选项

[root@Node4 httpd]# curl 192.168.10.4 -o web.txt
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
  0    19    0    19    0     0  19874      0 --:--:-- --:--:-- --:--:--     0
[root@Node4 httpd]# cat web.txt
<h1>www.a.com</h1>
[root@Node4 httpd]# curl 192.168.10.4 >> web.txt
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
  0    19    0    19    0     0  10740      0 --:--:-- --:--:-- --:--:--     0
[root@Node4 httpd]# cat web.txt
<h1>www.a.com</h1>
<h1>www.a.com</h1>
[root@Node4 httpd]# curl 192.168.10.4 >> web.txt -s
[root@Node4 httpd]# cat web.txt
<h1>www.a.com</h1>
<h1>www.a.com</h1>
<h1>www.a.com</h1>
[root@Node4 httpd]# curl 192.168.10.4 -o web.txt -s
[root@Node4 httpd]# cat web.txt
<h1>www.a.com</h1>
[root@Node4 httpd]#

使用--progress显示进度条: 

[root@Node4 httpd]# curl 192.168.10.4 -o web.txt --progress
######################################################################## 100.0%

断点续传 

  curl能够从特定的文件偏移处继续下载,它可以通过指定一个便宜量来下载部分文件:

 curl URL/File -C 偏移量

   #偏移量是以字节为单位的整数,如果让curl自动推断出正确的续传位置使用-C -: 

curl -C -URL

处理重定向页面

# curl –L http://192.168.1.100/301.php   #默认curl是不处理重定向

模拟用户登陆,保存cookie信息到cookies.txt文件,再使用cookie登陆

# curl -c ./cookies.txt -F NAME=user -F PWD=***URL   #NAME和PWD是表单属性不同,每个网站基本都不同

# curl -b ./cookies.txt –o URL

获取HTTP响应头headers

# curl -I http://www.baidu.com

# curl -D ./header.txt http://www.baidu.com   #将headers保存到文件中

访问HTTP认证页面

# curl –u user:pass URL

通过ftp上传和下载文件

# curl -T filename ftp://user:pass@ip/docs  #上传

# curl -O ftp://user:pass@ip/filename   #下载

 

另一个工具:elinks

 elinks [OPTION]...[URL]...          

   -dump:不进入交互式模式,而直接将URL的内容输出到标准输出


2、wget

   文件下载工具

常用参数如下:

 启动参数

   -V,--version:显示版本号

   -h,--help:查看帮助

   -b,--background:启动后转入后台执行

日志记录和输入文件参数

   -o,--output-file=file:把记录写到file文件中

   -a,--append-output=file:把记录追加到file文件中

   -i,--input-file=file:从file读取url来下载

下载参数

  -bind-address=address:指定本地使用地址

  -t,-tries=number:设置最大尝试连接次数

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

  -O,-output-document=file:将下载内容写入到file文件中

  -spider:不下载文件

  -T,-timeout=sec:设置响应超时时间

  -w,-wait=sec:两次尝试之间间隔时间

  --limit-rate=rate:限制下载速率

  -progress=type:设置进度条

  -q,  --quiet               quiet (no output).

目录参数

  -P,-directory-prefix=prefix:将文件保存到指定目录

HTTP参数

  -http-user=user:设置http用户名

  -http-passwd=pass:设置http密码

  -U,--user-agent=agent:伪装代理

  -no-http-keep-alive:关闭http活动链接,变成永久链接

  -cookies=off:不使用cookies

  -load-cookies=file:在开始会话前从file文件加载cookies

  -save-cookies=file:在会话结束将cookies保存到file文件

FTP参数

  -passive-ftp:默认值,使用被动模式

  -active-ftp:使用主动模式

递归下载排除参数

  -A,--accept=list:分号分割被下载扩展名的列表

  -R,--reject=list:分号分割不被下载扩展名的列表

  -D,--domains=list:分号分割被下载域的列表

  --exclude-domains=list:分号分割不被下载域的列表

 

使用示例:

例1:下载单个文件到当前目录下,也可以-P指定下载目录

# wget http://nginx.org/download/nginx-1.8.0.tar.gz

例2:对于网络不稳定的用户可以使用-c和--tries参数,保证下载完成

# wget --tries=20 -c http://nginx.org/download/nginx-1.8.0.tar.gz

例3:下载大的文件时,我们可以放到后台去下载,这时会生成wget-log文件来保存下载进度

# wget -b http://nginx.org/download/nginx-1.8.0.tar.gz

例4:可以利用—spider参数判断网址是否有效

# wget --spider http://nginx.org/download/nginx-1.8.0.tar.gz

例5:自动从多个链接下载文件

# cat url_list.txt   #先创建一个URL文件

http://nginx.org/download/nginx-1.8.0.tar.gz

http://nginx.org/download/nginx-1.6.3.tar.gz

# wget -i url_list.txt

例6:限制下载速度

# wget --limit-rate=1m http://nginx.org/download/nginx-1.8.0.tar.gz

例7:登陆ftp下载文件

# wget --ftp-user=user --ftp-password=pass ftp://ip/filename