前言
在这个网络带宽飞速增长的年代,下载文件要充分利用好网速就得用到下载工具,比如迅雷、IDM。然而贫穷限制了下载速度,这两个下载软件不花钱毫无体验可言。本人两年迅雷年费会员在离线下载越来越形如虚设的情况下,选择投入了IDM的怀抱,然而IDM丑陋的界面和破解版的无限弹框让我产生了开发一款属于自己下载器的想法。
成果
没图说个xx,下图是在20M带宽的情况下载网盘文件的过程,可以看到网速基本跑满。
下载(
https://pan.baidu.com/s/1eRDVYPc
)试用,需要JAVA8+运行环境。
启动:
java -jar proxyee-down-1.0-SNAPSHOT.jar
访问http://127.0.0.1:9999,点击ProxyeeRoot ca.crt下载证书并安装到受信任的根证书颁发机构中
设置浏览器http代理为127.0.0.1:9999即可
更新个exe版本的,把JRE打包进去了,体积会稍微大点。下载(
https://pan.baidu.com/s/1eROfzDw
)。
介绍
本下载器开源,代码托管在proxyee-down(
https://github.com/monkeyWie/proxyee-down
),是一款基于http代理服务器嗅探http下载请求的下载工具,支持插件化开发,目前内置
百度云大文件下载限制插件
和
百度云合并下载限制插件
。
技术简介
本项目使用java+netty+spring boot+vue.js+element ui编写,这里只谈一谈核心的技术点,细节请参考源码。
1.http代理
基于http代理服务器来实现下载请求的嗅探,实现了https的报文解密,在代理服务器嗅探到下载请求头时,进行拦截处理。
//例如Content-Disposition请求头拦截
Content-Disposition,attachment;filename=FileName.txt
之后修改响应体跳转到前端下载页面
HTTP/1.1 200 OK
Conten-type:text/html
Conten-length:129
window.top.location.href='http://localhost:9000"
2.http断点下载
拦截到下载请求之后,自动试探下载请求是否支持http断点下载。
//发送range请求头,下载一个字节
range:bytes=0-0
若支持断点下载则可开启分段下载
//返回206响应码
HTTP/1.1 206 Partial Content
根据前端填写的下载段数计算出每个请求的下载范围
//例如文件总大小为10byte分成2段下载