前言

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

成果

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

下载试用,需要JAVA8+运行环境。
启动:

java -jar proxyee-down-1.3.jar
访问http://127.0.0.1:9999,点击ProxyeeRoot ca.crt下载证书并安装到受信任的根证书颁发机构中
设置浏览器http代理为127.0.0.1:9999即可

关于证书导入

  • windows系统

访问http://127.0.0.1:9999,下载证书,要选择受信任的根证书颁发机构目录

  • 安卓

原生浏览器访问http://serverIp:9999,下载证书

介绍

本下载器开源,代码托管在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<script>window.top.location.href='http://localhost:9000"</script>
  2. http断点下载
    拦截到下载请求之后,自动试探下载请求是否支持http断点下载。

    //发送range请求头,下载一个字节
    range:bytes=0-0

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

    //返回206响应码
    HTTP/1.1 206 Partial Content

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

    //例如文件总大小为10byte分成2段下载
    //第一段请求头
    range:bytes=0-4
    //第二段请求头
    range:bytes=5-9

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

后记

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

从放弃迅雷和IDM到自己开发下载工具相关推荐

  1. IDM下载器|Windows系统经典下载工具idm6.41|IDM如何在线视频下载工具 |下载视频教程

    IDM全称Internet Download Manager,是一种将下载速度提高最多5倍的专业下载工具,支持大部分文件格式下载和基本所有的下载链接,无视网址本身下载限速,直接达到电脑该有的网速. 下 ...

  2. IDM(功能强大的下载工具)IDM可以批量下载视频吗?

    IDM是指Internet Download Manager,是一款功能强大的下载工具软件.它可以加速下载速度,支持断点续传,还可以自动捕捉下载链接,方便用户进行下载管理.同时,IDM还支持多任务下载 ...

  3. 只需要2个工具,百度云盘大文件就能用迅雷和IDM下载

    不会代码,不懂脚本,没关系 ,能找到一座通往它们的桥梁,照样能到达彼岸. 这里以360极速浏览器为例. 在浏览器地址框输入以下地址直接到达浏览器安装扩展插件的地方(偷个懒,复制网址吧),https:/ ...

  4. IDM 下载工具利器 - 经典好用优秀的 Windows 多线程加速下载软件

    简介 如果你是一名互联网"老司机",那么一定听过「IDM」这款下载工具的大名!它的全名叫做 Internet Download Manager (互联网下载管理器),缩写就是 ID ...

  5. IDM 下载工具利器 – 经典好用优秀的 Windows 多线程加速下载软件

    如果你是一名互联网"老司机",那么一定听过「IDM」这款下载工具的大名!它的全名叫做Internet Download Manager(互联网下载管理器),缩写就是 IDM. ID ...

  6. 迅雷和FlashGet 地址转换工具_6617.com

    代码很简单,就是base64的编码.作这么个工具放到网上,希望能为大家带来方便 . 工具地址:http://www.6617.com/tools/lc.aspx 可以把迅雷和FlashGet专有的下载 ...

  7. python调用迅雷下载引擎_python将下载地址转换成迅雷和qq旋风的下载地址

    迅雷和qq旋风下载,有加速和离线功能,很方面,我是在网上看到的原始地址和迅雷地址,qq旋风地址的转化原理,然后用python+pyqt写了一个客户端 原理: 迅雷: 迅雷下载地址="thun ...

  8. 迅为龙芯2K1000开发板双核64位系统处理器,流畅运行多个系统

    迅为电子的iTOP-2K1000核心板对外提供的接口是邮票孔方式.搭载龙芯2K1000处理器,处理器集成2个64 位GS264处理器核,主频1GHz,以及各种系统IO接口.集高性能与高配置于一身. 迅 ...

  9. 北京迅为i.mx6ull终结者开发板使用手册+嵌入式Linux开发指南+裸机手册下载地址

    i.MX6ULL终结者三大手册,加速学习和开发速度,一秒化无形! <嵌入式Linux开发指南>+<开发板使用手册>+<裸机使用手册> 详细手册点击链接下载:http ...

最新文章

  1. eeglab中文教程系列(2)-绘制脑电头皮图
  2. OpenRASP xss算法的几种绕过方法
  3. NPS的几个技术点(在Win 2003中称为Internet 验证服务)
  4. SQLSERVER2005的安装目录结构(下)
  5. 手写springmvc
  6. 教你进入有密码 Windows XP 系统的方法
  7. c# 异常处理 try-catch-finally
  8. VS2010中添加WebService注意的几个地方
  9. 元宇宙需要“基建狂魔”
  10. Unity 相机 2D视角 与3D 视角 自由动态 切换
  11. 国内自由下载jar包的地址
  12. 应用程序无法开机自启动
  13. 参数类型不正确,或不在可以接受的范围之内,或与其他参数冲突。
  14. 【转载】入坑KeePass(七)Keepass 2.x 之 同步与触发器
  15. 抽象语法树的简单原理
  16. 量化交易:10000资金起步,五年看看能做到多少?
  17. php获取微博热搜,Python获取微博热搜的方法
  18. 毕业四年多,如梦初醒
  19. 树的Breadth-First-Search和Depth-First-Search的java实现
  20. edge浏览器如何把网页放到桌面_win10edge怎么放在桌面

热门文章

  1. android imagebutton 按下效果,Android 点击ImageButton时有“按下”的效果的实现
  2. python修改数据库_python mysql修改数据库数据库
  3. parquet格式_6种数据格式对比,用Jupyter+pandas高效数据分析
  4. 用top方法查看内存消耗的方法
  5. 机器学习中的高斯过程简介-好文
  6. logic多分类的两种类别
  7. excel修改列名_听说你还在手动合并Excel,看看这个吧!?
  8. 【存储知识学习】第五章-5.1-5.3 RAID磁盘阵列-《大话存储》 阅读笔记
  9. 天翼云从业认证(2.2)云计算的模式、应用和行业生态
  10. Leaflet中使用Leaflet-MiniMap插件实现小地图效果