首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

从放弃迅雷到自己开发下载工具

前言

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

成果

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

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

更新个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的报文解密,在代理服务器嗅探到下载请求头时,进行拦截处理。

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

2.http断点下载

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

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

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

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

后记

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

觉得本文对你有帮助?请分享给更多人

关注「程序员宝库」公众号,一起快速学习编程技术!

  • 发表于:
  • 原文链接http://kuaibao.qq.com/s/20171214A0ML0K00?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券