开源下载工具

连上互联网后,我们几乎无时无刻不在做下载的工作。看新闻,看电影,玩网络游戏,更新软件等等...

下载其本质就是把文件从远程的服务器搬到本地。目前主流三种下载:HTTP/HTTPS下载,FTP下载以及P2P(Peer to Peer对等网络)/P2SP(Peer to Server and to Peer,整合了P2S与P2P技术)下载。

web浏览器自带的下载多为HTTP/HTTPS下载,FTP下载站点则会提供FTP下载,而专业的下载工具(如:迅雷QQ旋风电驴)为P2P/P2SP下载。

前两种方式严格划分Server与Client,Client只能从Server下载数据,一旦Server出问题,下载就不通了。

P2P方式则将进入下载网络的机器既视为Client,也视为Server,你在使用P2P下载资源的同时,也在为其他人提供该资源的下载服务。

不同的P2P下载工具支持的具体通讯协议有差异,比较有名的协议有:BitTorrent

wget

linux下命令行下载工具,采用HTTP/HTTPS/FTP方式下载,支持断点续传;当前也有windows下的wget版本;以及带图形界面的gwget版本。wiki 【en  chs

例:wget -r -np -nd http://files.cnblogs.com/kekec // 下载kekec目录中的所有文件。其中,-r表示递归下载,-np 表示不下载别的站点的链接,-nd 表示不在本机重新创建目录结构

例:wget -r -np -nd --accept=rar http://files.cnblogs.com/kekec // 下载kekec目录中所有rar文件。也可以指定多个扩展名(用逗号分隔)

例:wget -i downTask.txt // 批量下载downTask.txt中的所有目标文件(downTask.txt中每一行是一个下载任务链接)

例:wget -c http://files.cnblogs.com/kekec/renamex.rar  //  -c 选项的作用为断点续传

例:wget --user-agent="Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.0.3) Gecko/2008092416 Firefox/3.0.3" http://files.cnblogs.com/kekec/renamex.rar  // 模拟Firefox浏览器下载renamex.rar文件(有些网站不允许非浏览器下载文件)

例:wget -m -k http://www.cnblogs.com/kekec
例:wget -m -H http://www.cnblogs.com/kekec  // 镜像整个网站,-k表示将网页中的链接修改为本地链接。如果网站中的图像等放在另外的站点,可使用 -H 选项

例:wget -m -H -t 1 -T 25 -e "http_proxy=proxy.tencent.com:8080" http://wiki.beyondunreal.com  // 设置http代理,镜像整个网站   -t表示只尝试1次下载(-t 0表示不限次数) -T表示若25秒后服务器未响应则中断连接

例:wget --no-check-certificate -e use_proxy=yes -e "https_proxy=proxy.tencent.com:8080" https://en.wikipedia.org/robots.txt  // 设置https代理,下载robots.txt文件   --no-check-certificate表示不检查证书

例:wget.exe -P "F:wget est" -b http://files.cnblogs.com/kekec/renamex.rar   // 后台下载renamex.rar到F:wget est目录中  -b表示在后台进行下载

例:wget.exe -o "F:wgetdownload.log" -c http://files.cnblogs.com/kekec/renamex.rar   // 下载renamex.rar文件,并记录日志到F:wgetdownload.log文件中

例:wget.exe -O "F:wget est enamex.rar.wget" -c http://files.cnblogs.com/kekec/renamex.rar   // 下载renamex.rar到F:wget est目录中,并重命名为renamex.rar.wget

例:wget.exe --post-data="user=user1&pass=pass1&submit=Login"  http://domain.com/path/page_need_login.php  // 使用post来进行网站登录(无验证码的情况)

例:wget.exe --post-data="user=user1&pass=pass1&submit=Login" --save-cookies=cookie.txt --keep-session-cookies http://domain.com/login.php // post登录并保存cookies

例:wget.exe --load-cookies=cookie.txt http://domain.com/path/page_need_login.php // 使用cookies信息进行网站登录

----------------------------

-r 递归下载整个网址内容
-l 2 递归下载2层级内的子目录内容
-nc 不要覆盖已经存在的文件
-N 只下载比本地新的文件
--limit-rate=300k 限制速度为300k
--reject=gif 排除gif文件

wget只能处理利用用户名/密码方式限制访问的网站,可以利用两个参数:
--http-user=用户
--http-passwd=密码
对于需要证书做认证的网站,就只能利用其他下载工具了,例如curl。

如果代理服务器需要密码则使用:
--proxy-user=用户
--proxy-passwd=密码 
--proxy=on/off 开启或关闭代理。

如果用户的网络需要经过代理服务器,那么可以让wget通过代理服务器进行文件的下载。
此时需要在当前目录下创建一个wget.ini文件。文件中可以设置代理服务器(http的代理服务器和ftp的代理服务器):

https_proxy=web-proxy.oa.com:8080

http_proxy=proxy.tencent.com:8080
ftp_proxy=192.168.2.15:8080

use_proxy=on

----------------------------

curl

linux下命令行文件传输工具(上传与下载),支持HTTP/HTTPS/FTP等协议,支持断点续传与分段下载。wiki 【en  chs

例:curl -o mypage.html www.cnblogs.com   // 下载博客园的主页,并保存为mypage.html

例:curl -x 60.28.206.85:8088 -o mypage.html www.cnblogs.com  // 设置代理ip与端口号进行下载

例:curl -O http://files.cnblogs.com/kekec/time.swf  // 下载time.swf文件

例:curl -O -C - http://files.cnblogs.com/kekec/time.swf  // 自动断点续传下载time.swf文件

注:断点续传的参数是-C, 要自动续传的话要使用"-C -", 否则需要手工指定断点的字节位置

例:curl -O -C - ftp://user:password@192.168.1.166:21/swf/time.swf  // ftp方式下载time.swf文件(自动断点续传)

例:curl -T -C - time.swf ftp://user:password@192.168.1.166:21/swf/   // ftp方式上传time.swf文件(自动断点续传)

例:curl "http://www.baidu.com/s?wd=curl"  // get方式提交数据

例:curl -d "birthyear=1995&press=OK" www.hotmail.com/when/junk.cgi  // post方式提交数据

例:curl -m 5 http://10.123.102.136:8000/get_cur_version?env=daily // 拉取http://10.123.102.136:8000/get_cur_version?env=daily数据,并将超时时间设为5s

更多请参考:linux curl 命令详解,以及实例  curl命令

aria2c

linux下命令行下运行、多协议、多来源下载工具(HTTP/HTTPS、FTP、BitTorrent、Metalink);windows下的aria2c

例:aria2c http://example.org/mylinux.iso  // 直接下载

例:aria2c -c http://example.org/mylinux.iso  // 直接下载(断点续传)

例:aria2c -s 10 http://example.org/mylinux.iso // 10 个线程下载

例:aria2c http://a/f.iso ftp://b/f.iso  // 从多个地址下载

例:aria2c --check-certificate=false https://example.org/mylinux.iso  // 下载https协议的文件

例:aria2c --http-proxy=127.0.0.1:8123 http://test.com/test.zip // 通过http代理下载文件

例:aria2c -i uri.txt // 下载uri.txt文件中的链接内容

更多请参考:Aria2c 使用举例  aria2常用命令

axel

linux下命令行多线程HTTP/FTP下载工具,自动断点续传。windows下的axel

例:axel -s 1024 http://files.cnblogs.com/kekec/time.swf // 以1KB的最高速度下载

例:axel -n 10 http://files.cnblogs.com/kekec/time.swf // 开10个连接数进行下载

例:axel -o /home/me.swf http://files.cnblogs.com/kekec/time.swf // 指定文件的本地保存路径

例:axel -q http://files.cnblogs.com/kekec/time.swf // 安静模式,不输出信息

eDonkey2000  emule  easyMule (电驴

windows下能与迅雷、旋风等专业下载工具相媲美的软件,源代码开放。wiki【chs1 chs2

站点:VeryCD电驴下载大全

原文地址:https://www.cnblogs.com/kekec/p/3154482.html