打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
从放弃迅雷和 IDM 到自己开发下载工具

前言

在这个网络带宽飞速增长的年代,下载文件要充分利用好网速就得用到下载工具,比如迅雷、IDM。然而贫穷限制了下载速度,这两个下载软件不花钱毫无体验可言。本人两年迅雷年费会员在离线下载越来越形如虚设的情况下,选择投入了IDM的怀抱,然而IDM丑陋的界面和破解版的无限弹框让我产生了开发一款属于自己下载器的想法。

成果

没图说个xx,下图是在20M带宽的情况下载网盘文件的过程,可以看到网速基本跑满。

下载(https://pan.baidu.com/s/1eRDVYPc)试用,需要JAVA8+运行环境。启动:

  1. java -jar proxyee-down-1.0-SNAPSHOT.jar

  2. 访问http://127.0.0.1:9999,点击ProxyeeRoot ca.crt下载证书并安装到受信任的根证书颁发机构中

  3. 设置浏览器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的报文解密,在代理服务器嗅探到下载请求头时,进行拦截处理。

  1.    //例如Content-Disposition请求头拦截

  2.    Content-Disposition,attachment;filename=FileName.txt

之后修改响应体跳转到前端下载页面

  1.    HTTP/1.1 200 OK

  2.    Conten-type:text/html

  3.    Conten-length:129

  4.    

2.http断点下载

拦截到下载请求之后,自动试探下载请求是否支持http断点下载。

  1.    //发送range请求头,下载一个字节

  2.    range:bytes=0-0

若支持断点下载则可开启分段下载

  1.    //返回206响应码

  2.    HTTP/1.1 206 Partial Content

根据前端填写的下载段数计算出每个请求的下载范围

  1.    //例如文件总大小为10byte分成2段下载

  2.    //第一段请求头

  3.    range:bytes=0-4

  4.    //第二段请求头

  5.    range:bytes=5-9

下载完之后所有段落按顺序合并,看看这里是不是很像IDM,其实原理是一样的。

后记

在写此下载器的过程中对http和https协议又有了新的认识,特别是https若不能实现https的报文解密就做不到https下载请求的嗅探,在熟悉https协议后采用MITM(中间人攻击)动态生成ssl证书的方式,来对https的报文进行解密。http代理服务器核心已经独立出来了,托管在proxyee,可以轻易的对http(s)协议进行拦截和处理。


本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
今天给大家分享几款非常好用的下载工具
比迅雷快2倍的APP!下载不限速,永久免费不要钱
NDM,神一样的下载器,迅雷简直弱爆了
你认为最快的电脑下载软件是哪个?
电脑安全: 保护自己的隐私禁止使用的软件名单
「Chrono」一款可以代替下载软件的浏览器插件,比 IDM 还好用
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服