提到批量下载,更多的人第一个想到的是迅雷——可惜纵然推出了轻量版,迅雷仍然属于不可忍受的广告类软件之一。那么,来尝试下wget for windows吧。
GNU Wget for windows
项目主页:Windows binaries of GNU Wget
GNU Wget(常常简称为wget)是一个网络上进行下载的简单而强大的自由软件,其本身也是GNU计划的一部分。 它的名字是“World Wide Web”和“Get”的结合,同时也隐含了软件的主要功能。 目前它支持HTTP、HTTPS以及FTP这三个常见的TCP/IP协议下载。
Wget是一个非交互式命令行工具,所有二进制文件都是静态编译的,这意味着wget.exe不需要任何其他文件即可工作。
它的主要特点包括:
- 支持递归下载
- 恰当地转换页面中的连接
- 生成可在本地浏览的页面镜像
- 支持代理服务器
在1996年,随着互联网的爆发,Wget出现了。Wget被广泛的使用到了Unix和Linux的发行版本中。 它是由C语言来写的,因此具有良好的移植能力,因此也可在Windows上运行。
安装
项目主页中提供了两种安装包(.exe 应用程序安装与.zip压缩包安装),此处仅介绍ZIP压缩包安装方式。下载适合版本的ZIP格式程序文件后,解压到本地文件夹,如:“D:\Program Files\wget”。
打开『系统属性』,点击『高级系统设置』,然后参照下图配置好环境变量。
运行cmd,输入命令wget -V
,成功显示当前安装版本信息表示安装成功。
基本命令格式:
wget [option] [URL]
[--option]
- -o, –output-file=FILE 把记录写到FILE文件中
- -a, –append-output=FILE 把记录追加到FILE文件中
- -i, –input-file=FILE 下载在FILE文件中出现的URLs
- -F, –force-html 把输入文件当作HTML格式文件对待
- -B, –base=URL 将URL作为在-F -i参数指定的文件中出现的相对链接的前缀
- -V, –version 显示wget的版本后退出
- -h, –help 打印语法帮助
- -b, –background 启动后转入后台执行
- -e, –execute=COMMAND 执行“.wgetrc”格式的命令,
.wgettrc
命令其实是一个参数列表,直接将软件需要的参数写在一起就可以了。 - …
注:每一个参数有长短两种表示方法,功能一样,任何一个都可以使用。
1、启动类参数
这一类参数主要提供软件的一些基本信息;
-V,–version 显示软件版本号然后退出; -h,–help显示软件帮助信息; -e,–execute=COMMAND 执行一个“.wgetrc”命令
需要注意的是,这里的-e参数是执行一个.wgettrc
的命令,.wgettrc
命令其实是一个参数列表,直接将软件需要的参数写在一起就可以了。
2、文件处理参数
这类参数定义软件log文件的输出方式等;
-o,–output-file=FILE 将软件输出信息保存到文件; -a,–append-output=FILE将软件输出信息追加到文件; -d,–debug显示输出信息; -q,–quiet 不显示输出信息; -i,–input-file=FILE 从文件中取得URL;
以上参数对于攻击者比较有用,我们来看看具体使用;
例1:下载192.168.1.168首页并且显示下载信息
wget -d http://192.168.1.168
例2:下载192.168.1.168首页并且不显示任何信息
wget -q http://192.168.1.168
例3:下载filelist.txt中所包含的链接的所有文件
wget -i filelist.txt
3、下载参数
下载参数定义下载重复次数、保存文件名等;
-t,–tries=NUMBER 是否下载次数(0表示无穷次) -O --output-document=FILE下载文件保存为别的文件名 -nc, --no-clobber 不要覆盖已经存在的文件 -N,–timestamping只下载比本地新的文件 -T,–timeout=SECONDS 设置超时时间 -Y,–proxy=on/off 关闭代理
例:下载192.168.1.168的首页并将下载过程中的的输入信息保存到test.htm文件中
wget -o test.htm http://192.168.1.168
4、目录参数
目录参数主要设置下载文件保存目录与原来文件(服务器文件)的目录对应关系;
-nd --no-directories 不建立目录 -x,–force-directories 强制建立目录
可能现在我们对这里的目录还不是很了解,我们来看一个举例
例:下载192.168.1.168的首页,并且保持网站结构
wget -x http://192.168.1.168
5、HTTP参数
HTTP参数设置一些与HTTP下载有关的属性;
–http-user=USER设置HTTP用户 –http-passwd=PASS设置HTTP密码 –proxy-user=USER设置代理用户 –proxy-passwd=PASS设置代理密码
以上参数主要设置HTTP和代理的用户、密码;
6、递归参数设置
在下载一个网站或者网站的一个目录的时候,我们需要知道的下载的层次,这些参数就可以设置;
-r,–recursive 下载整个网站、目录(小心使用) -l,–level=NUMBER 下载层次
例:下载整个网站
wget -r http://192.168.1.168
7、递归允许与拒绝选项参数
下载一个网站的时候,为了尽量快,有些文件可以选择下载,比如图片和声音,在这里可以设置;
-A,–accept=LIST 可以接受的文件类型 -R,–reject=LIST拒绝接受的文件类型 -D,–domains=LIST可以接受的域名 –exclude-domains=LIST拒绝的域名 -L,–relative 下载关联链接 –follow-ftp 只下载FTP链接 -H,–span-hosts 可以下载外面的主机 -I,–include-directories=LIST允许的目录 -X,–exclude-directories=LIST 拒绝的目录
如何设定wget所使用的代理服务器
wget可以使用用户设置文件".wgetrc"来读取很多设置,我们这里主要利用这个文件来设置代理服务器。使用者用什么用户登录,那么什么用户主目录下的".wgetrc"文件就起作用。例如,“root"用户如果想使用”.wgetrc"来设置代理服务器,"/root/.wgetrc"就起作用,下面给出一个".wgetrc"文件的内容,读者可以参照这个例子来编写自己的"wgetrc"文件:
http-proxy = 111.111.111.111:8080 ftp-proxy = 111.111.111.111:8080
这两行的含义是,代理服务器IP地址为:111.111.111.111,端口号为:80。第一行指定HTTP协议所使用的代理服务器,第二行指定FTP协议所使用的代理服务器。
使用示例
wget -np -m -l5 http://jpstone.bokee.com //不下载本站所链接的其它站点内容,5级目录结构
关于wget -P 目录 网址
用法:比如你要放到/root底下,你可以打下列的指令:
wget -P /root 网址 wget -P D:\xxx.zip http://www.xdown.com/xxx.zip wget -P "D\xxx.zip" http://www.xdown.com/xxx.zip
经常要下载一个网站或网站的某个目录,例如下载网站www.example.com/目录mydir下的所有内容
命令如下: wget -r -p -k -np -nc -e robots=off http://www.example.com/mydir/ 如果要想下载整个网站,最好去除-np参数。 wget -r -p -k -nc -e robots=off http://www.example.com/mydir/ -r 递归;对于HTTP主机,wget首先下载URL指定的文件,然后(如果该文件是一个HTML文档的话)递归下载该文件所引用(超级连接)的所有文件(递 归深度由参数-l指定)。对FTP主机,该参数意味着要下载URL指定的目录中的所有文件,递归方法与HTTP主机类似。 -c 指定断点续传功能。实际上,wget默认具有断点续传功能,只有当你使用别的ftp工具下载了某一文件的一部分,并希望wget接着完成此工作的时候,才 需要指定此参数。 -nc 不下载已经存在的文件 -np 表示不追溯至父目录,不跟随链接,只下载指定目录及子目录里的东西; -p 下载页面显示所需的所有文件。比如页面中包含了图片,但是图片并不在/yourdir目录中,而在/images目录下,有此参数,图片依然会被正常下载。 -k 修复下载文件中的绝对连接为相对连接,这样方便本地阅读。 -o down.log 记录日记到down.log -e robots=off 忽略robots.txt