低成本离线下载方案

前言

找各种资源的时候,总会需要下载一些种子文件。因国内较难获取到公网ip的缘故,通过迅雷等离线下载软件下载种子文件,总会出现找不到资源的情况。这时如果借助离线下载就能将文件先下载到云服务器上(有公网ip),在从云服务器直接取回文件。有效解决本地下载找不到资源的难题。
对于使用http,ftp等直连协议的资源,使用IDM多线程下载就能很有效的解决因为链路质量差而导致的速度慢的问题。如果是因为服务器无法提供足够带宽,使用离线下载也起不到加速效果。

离线下载服务选择

使用下载或网盘工具提供的服务

从网上找到的各类支持离线下载功能的网盘,和下载工具的收费情况来看,对于非经常使用的用户,确实没有必要买这些服务。尽管这些服务用起来会更省事一些,但还是会遇到各种各样的问题。比如:国内工具普遍的敏感资源无法下载,国外工具的价格高。

自建vps下载

在这里我推荐Vultr,按小时计费,最廉价的机子5$/月。非常适合临时离线下载文件用。除了ipv4还有ipv6支持,能连接到更多的主机。
Vultr支持设置启动脚本,在启动脚本中写好安装离线下载工具的脚本,下次要离线下载时,直接从脚本启动就好。
结合docker镜像,整个启动机子安装环境过程只需要5分钟左右。
下面时我使用的docker镜像配置文件

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
version: '3'

services:
aria2-ui:
restart: always
container_name: aria2-ui
image: wahyd4/aria2-ui:202010011334440b763b
volumes:
- ./aria/data:/data
- ./aria/filebrowser.db:/app/filebrowser.db
- ./aria/conf:/app/conf
- /etc/localtime:/etc/localtime:ro
environment:
- ARIA2_EXTERNAL_PORT=80
ports:
- "80:80"

wahyd4/aria2-ui是一个完整的安装好有 Aria2、AriaNg 和File Manager的镜像
参考以上项目的教程,和使用方法配置和部署镜像。
默认的参数已经足够使用,但因为Vultr支持ipv6,为了发挥ipv6的优势以及修改默认tracker,以便找到更多资源节点。
需要修改aria2.conf,以支持ipv6,同时关闭预分配资源功能。有些种子下载的资源大小较大,预分配资源过于浪费VPS上的存储空间。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
#用户名
#rpc-user=user
#密码
#rpc-passwd=passwd
#上面的认证方式不建议使用,建议使用下面的token方式
#设置加密的密钥
#rpc-secret=token
#允许rpc
enable-rpc=true
#允许所有来源, web界面跨域权限需要
rpc-allow-origin-all=true
#允许外部访问,false的话只监听本地端口
rpc-listen-all=true
#RPC端口, 仅当默认端口被占用时修改
#rpc-listen-port=6800
#最大同时下载数(任务数), 路由建议值: 3
max-concurrent-downloads=5
#种子最小分享率
seed-ratio=100.0
#断点续传
continue=true
#同服务器连接数
max-connection-per-server=5
#最小文件分片大小, 下载线程数上限取决于能分出多少片, 对于小文件重要
min-split-size=10M
#单文件最大线程数, 路由建议值: 5
split=10
#下载速度限制
max-overall-download-limit=0
#单文件速度限制
max-download-limit=0
#上传速度限制
max-overall-upload-limit=0
#单文件速度限制
max-upload-limit=0
#断开速度过慢的连接
#lowest-speed-limit=0
#验证用,需要1.16.1之后的release版本
#referer=*
#文件保存路径, 默认为当前启动位置
# dir=/user-files/superuser/
dir=/data
#文件缓存, 使用内置的文件缓存, 如果你不相信Linux内核文件缓存和磁盘内置缓存时使用, 需要1.16及以上版本
#disk-cache=0
#另一种Linux文件缓存方式, 使用前确保您使用的内核支持此选项, 需要1.15及以上版本(?)
#enable-mmap=true
#文件预分配, 能有效降低文件碎片, 提高磁盘性能. 缺点是预分配时间较长
#所需时间 none < falloc ? trunc « prealloc, falloc和trunc需要文件系统和内核支持
file-allocation=none

# disable IPV6 by default
disable-ipv6=false

# General Options
log=/var/log/aria2.log
#You can set either debug, info, notice, warn or error.
log-level=notice


## 进度保存相关 ##
# 从会话文件中读取下载任务
input-file=/app/conf/aria2.session
# 在Aria2退出时保存`错误/未完成`的载任务到会话文件
save-session=/app/conf/aria2.session
# 定时保存会话, 0为退出时才保存, 需1.16.1以上版本, 默认:0
save-session-interval=10

# 打开IPv6 DHT功能, PT需要禁用
enable-dht6=true

# BT trackers from https://raw.githubusercontent.com/ngosang/trackerslist/master/trackers_best_ip.txt
bt-tracker=udp://tracker.opentrackr.org:1337/announce,http://p4p.arenabg.com:1337/announce,udp://9.rarbg.com:2810/announce,udp://tracker.openbittorrent.com:6969/announce,udp://exodus.desync.com:6969/announce,http://openbittorrent.com:80/announce,udp://www.torrent.eu.org:451/announce,udp://tracker.torrent.eu.org:451/announce,udp://retracker.lanta-net.ru:2710/announce,udp://opentracker.i2p.rocks:6969/announce,udp://open.stealth.si:80/announce,udp://ipv4.tracker.harry.lu:80/announce,udp://opentor.org:2710/announce,http://explodie.org:6969/announce,udp://tracker4.itzmx.com:2710/announce,udp://tracker.uw0.xyz:6969/announce,udp://tracker.moeking.me:6969/announce,udp://tracker.dler.org:6969/announce,udp://retracker.sevstar.net:2710/announce,udp://bt2.archive.org:6969/announce

访问http://ip/ui打开ariang管理页面,即可添加磁力链或上传种子文件下载。如果磁力链下载迟迟无法下载元数据种子文件信息,也可以在本地用迅雷提前下载好磁力链对应的种子文件,在使用上传种子文件的方式下载。

此种方案下载一个白天需要1毛钱左右,取决于你购买的机子配置,和下载所需的时间。
此种方案还有一种缺点,就是有可能Vultr开出来的ip是被墙的!当然能翻最好,不行的话也有解决方案。
使用网页控制台方式操作VPS,同时去cloudflare做一个CDN(这需要你手上有一个域名)就能解决,

google cloud shell

贯彻把白嫖进行到底的原则,可以使用Google提供的临时机来离线下载。
Cloud shell只提供5G的用户家目录,但给的机子一般都有25G左右。可以将文件下载到家目录以外的文件夹。
然后在用过上传到网盘,或者上传到奶牛快传,这类临时的网页文件中转平台来下载文件。
当然,Google为了防止滥用,在流量超过大约10G左右的时候就会强制收回虚拟机。所以,只适合下载5G以下的小种子方案。
使用方法跟如上VPS的方式一样。

Colab

同样是白嫖Google的服务,借助Colab挂在Google Drive的功能,可以很方便的转存文件。也可以用其配备的临时虚拟机进行离线下载,解压预处理文件的操作。

取回文件

直接下载

上文提到的是离线下载文件到云服务器的方式,接下来讨论的就是如何取回离线下载好的文件。
wahyd4/aria2-ui镜像中有File Manager服务,可以直接在浏览器中下载文件,也可以打包下载文件夹。就是速度有些堪忧。
直连下载就行,如果效果不好可以套一个Cloudflare这样的免费CDN。

文件中转站

使用像奶牛快传、文叔叔之类的中转站,需要在Github上找一些别人写好的上传脚本。然后通过上传文件后给的分享链接下载。
缺点也很明显,这些文件中转站一般免费的额度也就单链接2G左右的空间

网盘中转

如果你有Onedrive、Google Drive的大容量网盘账号,那就最好不过了,使用rclone工具上传到网盘在下载,速度容量都能得到保障。
没有也可以去淘宝整一个账号,一般也就30块左右。
可以直接从网盘下载,也可以搭配Cloudflare Workers的rclone脚本从Cloudflare上中转下载。
当然使用网盘还有一个好处,可以在线观看视频。有时也没必要把视频下载下来看,特别是一些高码率的高清视频。
多数网盘厂商都自带视频转码功能,在线观看视频的视频是压缩后的视频流,不易卡顿。

寻找种子

可以直接搜索,也可以从种子市场下,我常用的种子市场如下:
海盗湾
nyaa
Filelisting