从放弃迅雷和IDM到自己开发下载工具
前言
在這個網絡帶寬飛速增長的年代,下載文件要充分利用好網速就得用到下載工具,比如迅雷、IDM。然而貧窮限制了下載速度,這兩個下載軟件不花錢毫無體驗可言。本人兩年迅雷年費會員在離線下載越來越形如虛設的情況下,選擇投入了IDM的懷抱,然而IDM丑陋的界面和破解版的無限彈框讓我產生了開發一款屬于自己下載器的想法。
成果
沒圖說個xx,下圖是在20M帶寬的情況下載網盤文件的過程,可以看到網速基本跑滿。
下載試用,需要JAVA8+運行環境。
啟動:
關于證書導入
- windows系統
訪問http://127.0.0.1:9999,下載證書,要選擇受信任的根證書頒發機構目錄
- 安卓
用原生瀏覽器訪問http://serverIp:9999,下載證書
介紹
本下載器開源,代碼托管在proxyee-down,是一款基于http代理服務器嗅探http下載請求的下載工具,支持插件化開發,目前內置百度云大文件下載限制插件和百度云合并下載限制插件。
技術簡介
本項目使用java+netty+spring boot+vue.js+element ui編寫,這里只談一談核心的技術點,細節請參考源碼。
http代理
基于http代理服務器來實現下載請求的嗅探,實現了https的報文解密,在代理服務器嗅探到下載請求頭時,進行攔截處理。
之后修改響應體跳轉到前端下載頁面
HTTP/1.1 200 OK Conten-type:text/html Conten-length:129<script>window.top.location.href='http://localhost:9000"</script>http斷點下載
攔截到下載請求之后,自動試探下載請求是否支持http斷點下載。
若支持斷點下載則可開啟分段下載
//返回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到自己开发下载工具的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Gevent简明教程
- 下一篇: 面向对象开发===继承特点