摘自:https://www.jianshu.com/p/59bb131bc2ab 
wget 是在 Linux 下开发的开放源代码的软件,作者是Hrvoje Niksic,后来被移植到包括 Windows 在内的各个平台上 。 wget 是一个下载文件的工具 ,它用在命令行下。对于 Linux 用户是必不可少的工具,尤其对于网络管理员,经常要下载一些软件或从远程服务器恢复备份到本地服务器。
wget 工具体积小但功能完善,它支持断点下载功能,同时支持 FTP 和 HTTP下载方式,支持代理服务器和设置起来方便简单。
它有以下功能和特点:
(1)支持断点下传功能;这一点,也是网络蚂蚁和FlashGet当年最大的卖点,现在,Wget也可以使用此功能,那些网络不是太好的用户可以放心了; (2)同时支持FTP和HTTP下载方式;尽管现在大部分软件可以使用HTTP方式下载,但是,有些时候,仍然需要使用FTP方式下载软件; (3)支持代理服务器;对安全强度很高的系统而言,一般不会将自己的系统直接暴露在互联网上,所以,支持代理是下载软件必须有的功能; (4)设置方便简单;可能,习惯图形界面的用户已经不是太习惯命令行了,但是,命令行在设置上其实有更多的优点,最少,鼠标可以少点很多次,也不要担心是否错点鼠标; (5)程序小,完全免费;程序小可以考虑不计,因为现在的硬盘实在太大了;完全免费就不得不考虑了,即使网络上有很多免费软件,但是,这些软件的广告不是我们喜欢的; wget 参数 更多参数:man wget 
wget -h  或者  wget --help 
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 命令格式:  wget [参数列表] [目标软件、网页的网址]             / /   用法: wget [选项]... [URL]... 长选项所必须的参数在使用短选项时也是必须的。 启动:   - V,     - h,     - b,     - e,   日志和输入文件:   - o,     - a,     - d,     - q,     - v,     - nv,            - i,     - F,     - B,                           下载:   - t,             - O,     - nc,    - c,                             - N,                                                if- modified- since get  条件请求                                              the one  on  the server   - S,             - T,                             - w,                             - Q,                                             -4 ,     -6 ,                                                                   目录:   - nd,    - x,     - nH,            - P,           HTTP 选项:                                   - E,                                                             - U,                                                                                                                              头部 (实验中)。                 HTTPS (SSL/ TLS) 选项:                                             SSLv3、TLSv1、PFS 中的一个。                                                                                                                    of  base64 encoded sha256 hashes preceded by                                     'sha256//'  and  seperated by  ';' , to  verify                                    peer against HSTS 选项:                 FTP 选项:                                                         FTPS 选项:                                 WARC 选项:                                                                         递归下载:   - r,     - l,             - k,                     - K,     - m,     - p,           递归接受/ 拒绝:   - A,     - R,                             - D,                                     - H,     - L,     - I,             - X,     - np,  
wget 使用示例 wget 虽然功能强大,但是使用起来还是比较简单的,基本的语法是:wget [参数列表] URL  下面就结合具体的例子来说明一下wget的用法。
使用 wget 下载单个文件 1 2 3 以下的例子是从网络下载一个文件并保存在当前目录  wget http: //cn.wordpress.org/wordpress -3.1 -zh_CN.zip  在下载的过程中会显示进度条,包含(下载完成百分比,已经下载的字节,当前下载速度,剩余下载时间)。  
下载文件到指定的目录,并指定下载文件的重命名 1 wget <url> -P <aimPath> -O fileName 
使用 wget -O 下载并以不同的文件名保存 1 2 3 4 5 6 7 8 wget默认会以最后一个符合”/”的后面的字符来命令,对于动态链接的下载通常文件名会不正确。  错误:下面的例子会下载一个文件并以名称download.php?id =1080保存  wget http://www.centos.bz/download?id =1  即使下载的文件是zip格式,它仍然以download.php?id =1080命令。  正确:为了解决这个问题,我们可以使用参数-O来指定一个文件名:  wget -O wordpress.zip http://www.centos.bz/download.php?id =1080  
使用 wget --limit -rate 限速下载 1 2 3 当你执行wget的时候,它默认会占用全部可能的宽带下载。但是当你准备下载一个大文件,而你还需要下载其它文件时就有必要限速了。  wget –limit-rate=300 k http: //cn.wordpress.org/wordpress -3.1 -zh_CN.zip  
使用 wget -c 断点续传 1 2 3 4 5 6 7 8 9 当文件特别大或者网络特别慢的时候,往往一个文件还没有下载完,连接就已经被切断,此时就需要断点续传。 wget的断点续传是自动的,只需要使用 - c  参数。使用断点续传要求服务器支持断点续传。 例如: wget - c  http: / / the.url.of/ incomplete/ file  - t 参数表示重试次数,例如需要重试100 次,那么就写- t 100 ,如果设成- t 0 ,那么表示无穷次重试,直到连接成功。- T  参数表示超时等待时间,例如- T  120 ,表示等待120 秒连接不上就算超时。 
使用 wget -b 后台下载 1 2 3 4 5 6 7 8 对于下载非常大的文件的时候,我们可以使用参数-b进行后台下载。  wget -b http: Continuing in  background, pid 1840 .  Output will be written to  `wget-log’.  你可以使用以下命令来察看下载进度  tail -f wget-log  
使用代理服务器(proxy) 和 伪装代理(user-agent)名称下载 如果用户的网络需要经过代理服务器,那么可以让 wget 通过代理服务器进行文件的下载。 此时需要在当前用户的目录下创建一个 .wgetrc 文件。
文件中可以设置代理服务器: http-proxy = 111.111.111.111:8080 ftp-proxy = 111.111.111.111:8080 分别表示http的代理服务器和ftp的代理服务器。
如果代理服务器需要密码,则使用这两个参数: –proxy-user=USER 设置代理用户 –proxy-passwd=PASS 设置代理密码
使用参数 –proxy=on/off 使用或者关闭代理。
有些网站能通过根据判断代理名称不是浏览器而拒绝你的下载请求。不过你可以通过 --user-agent 参数伪装。
1 wget --user-agent=”Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US) AppleWebKit/534.16 (KHTML, like Gecko) Chrome/10.0.648.204 Safari/534.16″ 
wget 还有很多有用的功能,需要用户去挖掘。
使用 wget --spider 测试下载链接 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 当你打算进行定时下载,你应该在预定时间测试下载链接是否有效。我们可以增加–spider参数进行检查。  wget –spider URL  如果下载链接正确,将会显示  wget –spider URL  Spider mode enabled. Check if  remote file  exists.  HTTP request sent, awaiting response… 200  OK  Length: unspecified [text/html]  Remote file  exists and  could contain further links,  but recursion is  disabled — not  retrieving.  这保证了下载能在预定的时间进行,但当你给错了一个链接,将会显示如下错误  wget –spider url  Spider mode enabled. Check if  remote file  exists.  HTTP request sent, awaiting response… 404  Not  Found  Remote file  does not  exist — broken link!!!  你可以在以下几种情况下使用spider参数:  定时下载之前进行检查  间隔检测网站是否可用  检查网站页面的死链接  
使用 wget --tries 增加重试次数 1 2 3 如果网络有问题或下载一个大文件也有可能失败。wget默认重试20次连接下载文件。如果需要,你可以使用–tries增加重试次数。  wget –tries=40 URL  
使用 wget -i 下载多个文件 (批量下载) 如果有多个文件需要下载,那么可以生成一个文件,把每个文件的 URL 写一行。
例如,生成文件 download.txt,然后用命令:wget -i download.txt
这样就会把download.txt里面列出的每个URL都下载下来。(如果列的是文件就下载文件,如果列的是网站,那么下载首页)
1 2 3 4 5 6 7 8 9 10 首先,保存一份下载链接文件  cat > filelist.txt   url1  url2  url3  url4  接着使用这个文件和参数-i 下载  wget -i  filelist.txt   
使用 wget --mirror 镜像网站 1 2 3 4 5 6 7 下面的例子是下载整个网站到本地。  wget –mirror - p –convert - links - P ./ LOCAL  URL  –miror:开户镜像下载  - p:下载所有为了html页面显示正常的文件 –convert - links:下载后,转换成本地的链接  - P ./ LOCAL :保存所有文件和目录到本地指定目录 
使用 wget --reject 过滤指定格式下载 1 2 3 4 5 6 7 8 9 10 11 12 13 可以指定让 wget 只下载一类文件,或者不下载什么文件。 例如:          wget -m –reject=gif http:// target.web.site/subdirectory          表示下载 http:// target.web.site/subdirectory,但是忽略gif文件。 –accept =LIST    可以接受的文件类型, –reject=LIST    拒绝接受的文件类型。 你想下载一个网站,但你不希望下载图片,你可以使用以下命令。  wget –reject=gif url  
使用 wget -o 把下载信息存入日志文件 1 2 3 你不希望下载信息直接显示在终端而是在一个日志文件,可以使用以下命令:  wget -o download.log  URL  
使用 wget -Q 限制总下载文件大小 1 2 3 4 当你想要下载的文件超过5M而退出下载,你可以使用以下命令:  wget -Q5m -i filelist.txt  注意:这个参数对单个文件下载不起作用,只能递归下载时才有效。  
使用 wget -r -A 下载指定格式文件 1 2 3 4 5 6 可以在以下情况使用该功能  下载一个网站的所有图片  下载一个网站的所有视频  下载一个网站的所有PDF文件  wget -r -A .pdf  url  
下载整个 http 或者 wget FTP 下载 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 wget http : 这个命令可以将 http : 使用 -x 会强制建立服务器上一模一样的目录, 如果使用 -nd 参数,那么服务器上下载的所有内容都会加到本地当前目录。  wget -r http : 这个命令会按照递归的方法,下载服务器上所有的目录和文件,实质就是下载整个网站。 这个命令一定要小心使用,因为在下载的时候,被下载网站指向的所有地址同 样会被下载, 因此,如果这个网站引用了其他网站,那么被引用的网站也会被下载下来! 基于这个原因,这个参数不常用。 可以用 -l number  参数来指定下载的层次。例如只下载两层,那么使用-l 2 。  要是您想制作镜像站点,那么可以使用 -m 参数, 例如:wget -m http : 这时 wget 会自动判断合适的参数来制作镜像站点。 此时,wget会登录到服务器上,读入robots.txt  并按 robots.txt 的规定来执行。    使用 wget 匿名ftp 下载  wget ftp -url  使用 wget 用户名 和 密码认证的 ftp 下载  wget –ftp-user=USERNAME  –ftp-password=PASSWORD  url 
密码和认证 wget 可以处理利用 用户名/密码 方式限制访问的网站,可以利用两个参数: --http-user=用户 设置 http 用户名为 <用户> --http-password=密码 设置 http 密码为 <密码> 对于需要证书做认证的网站,就只能利用其他下载工具了,例如 curl
中文文件名在平常的情况下会被编码, 但是在 –cut-dirs 时又是正常的,
1 wget -r -np -nH –cut-dirs=3 ftp://host/test/ 
测试.txt wget -r -np -nH -nd ftp://host/test/  %B4%FA%B8%D5.txt wget “ftp://host/test/*”  %B4%FA%B8%D5.txt
由于不知名的原因,可能是为了避开特殊文件名, wget 会自动将抓取文件名的部分用 encode_string 处理过, 所以该 patch 就把被 encode_string 处理成 “%3A” 这种东西, 用 decode_string 还原成 “:”,并套用在目录与文件名称的部分, decode_string 是 wget 内建的函式。
1 wget -t0 -c -nH -x -np -b -m -P /home/sunny/NOD32view/ http://downloads1.kaspersky-labs.com/bases/ -o wget.log