关于分段下载+中继的实现

2016-05-16 04:27:39 +08:00
 x1155665
想写个下载中转的程序,,问问大家有什么好的实现方法。

需求:
中继的服务器储存空间捉急(搬瓦工:怪我咯?),只能通过分段下载,传送分段给客户端,传送完马上删除已传送的分段的方式来实现。。同时要考虑下载和传送速度不同的问题,中继服务器暂存空间满了,要自动暂停下载。
下载引擎想用 aria2 ,能不能用并不清楚,正在翻文档。。

我试着谷歌现有的解决方案,然而并找不到(是我找的姿势不对?)
所以只好自己上手写了,,试着学新东西,顺便解决痒点
哦,我目前只做嵌入式和 win 桌面程序,,还没尝试过网络相关的;)
还请大家指教!

题外话:
海外党也会怀念国内的网络环境的.. //想下东西的时候#.#
2704 次点击
所在节点    问与答
16 条回复
Tiande
2016-05-16 04:43:10 +08:00
curl 命令就有分段下载,
下完每个小段再传回本地合并就行了。

另外还是不要用盗版的好,毕竟这在本社区是不正确的行为。
binux
2016-05-16 04:46:59 +08:00
本地分段+代理中继
msg7086
2016-05-16 05:59:36 +08:00
花 2 美分开个 vultr 中转。
aprikyblue
2016-05-16 06:16:35 +08:00
Range ?
XhstormR
2016-05-16 08:03:01 +08:00
有这种实现方法吗?
希望可以用在局域网中,多台电脑一起下载,然后传给主机,达到加速目的。
dixyes
2016-05-16 08:16:15 +08:00
curl xx |split ?一堆 shell 完成
dixyes
2016-05-16 08:22:37 +08:00
然后 cat some.splited.file |nc ip port &&rm -f some.splited.file
imn1
2016-05-16 10:47:56 +08:00
wget/aria2c/curl 都有添加 header 功能,里面用 range 就可以了,前提是服务器那边支持多线程(断点续传)
starqoq
2016-05-17 02:58:46 +08:00
为什么不在 vps 上开一个 http 代理。
x1155665
2016-05-17 16:12:05 +08:00
@Tiande
@dixyes
curl 可以是可以,但是不能多线程。。
x1155665
2016-05-17 16:14:34 +08:00
@imn1
header 里面下加 range ?看来要翻翻网络的文档了。学过就忘了。。
x1155665
2016-05-17 16:17:23 +08:00
@starqoq 试过在本地把 ss 做成 http 代理,然而中途会断线,另外 aria2 只能单线程下载
dixyes
2016-05-17 17:32:25 +08:00
http 的玩意咯 -H "Range: bytes
=0-233"啥的
ericFork
2016-05-18 02:01:23 +08:00
回归原始需求,你要下载的内容是什么?有没有可能就近下载?
starqoq
2016-05-18 07:12:59 +08:00
@x1155665 不是的。那样比较容易被 GFW 特征检测,然后就掉线了。
比较妥当的方法是用 squid 在服务器本地(监听服务器的 127.0.0.1 : 3128 )搭建一个服务器。然后用 SSH 映射到本地(将服务器的 127.0.0.1:3128 映射到本地的 8080 )。这的方案也能在 OpenWrt 上完成,映射到 192.168.1.1 上就能在路由器上用。

另外如果你确实需要的话,我其实写过一个类似的东西,把 Mega.nz 上的东西转为 HTTP 下载。 Mega.nz 是点对点加密的,浏览器先下载到缓存里然后解密的。我的代码作为一个 HTTP 服务器,当收到 Get 请求的时候,一边从 Mega 下载,一边解密,然后转发给 HTTP 客户端。

多段下载主要是解析 HTTP 头里的 range 部分信息。

https://github.com/yuzeming/python-megadl

希望能对你有帮助。
x1155665
2016-05-18 16:15:49 +08:00
@ericFork 主要是想找个理由让自己学点新东西;)

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/278847

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX