【16】第八章 | 提速专题:如何在国内提升下载速度

Fairyex
03月01日

第八章 | 提速专题:如何在国内提升下载速度

| 本文为付费栏目文章,您已订阅,可阅读全文 |
我们终于来到了这个科普与教程的最后也是大家最关心的一章——提升下载速度。
在这一章我会将自己知道的各种类型下载方式下的加速方法全盘托出,期望能够帮到大家不同程度地提高下载速度和下载稳定性,今后我可能还会不时更新我发现的提升下载速度的新方法。
进入正题前的温馨提醒:
  • 这里面的方法无论你是不是已经知道都请低调使用,请勿广泛传播;
  • 请勿滥用下面提到的一些每次使用需要开发者付出成本的工具和网站;
  • 请勿在评论区提示文章中隐去的任何关键词;
  • 部分网站需要(优化)网络环境,请自行对使用文中各种工具和网站带来的相关后果负责。

提升 HTTP/FTP 下载速度

看过前面 HTTP 原理的各位应该都知道 HTTP 和 FTP 是目前的下载方式中最为简单直接的了。这两种方法在下载时的速度完全由源地址的服务器分配,加速的方法十分有限。最有效和常见的加速方式就是多线程下载,在第一章也详细介绍了它的加速原理。那么在下面,就为大家推荐一些各平台好用的多线程加速工具和多线程加速的使用技巧。

使用多线程的技巧

多线程下载时最重要的是线程数的选择,并不是越多的线程数就越好。而合适的线程数取决于你的储存设备类型(数据读取速度)。

硬件准备

有时我们的网速足够,在下载文件特别是大文件时却感到速度始终上不去,也许硬件就是其中一个瓶颈。在电脑、手机等不同设备上,我们用到的存储设备有所不同,下面就是关于硬件准备的一些建议。
  • 普通的机械硬盘和低速(U1 以下的)内存卡:建议使用多线程软件默认的线程数(10–15),过高的线程数会使内存卡和机械硬盘极速发热和快速耗尽擦写次数,降低使用寿命。超过储存设备数据调度能力(I/O:Input/Output)的读写还容易下到坏的文件块,使最后下到的文件不正确或者导致软件重新下载文件块让下载反而变得更慢。我自己尝试过在 50M 光纤下把多线程软件的下载目录直接设置到内存卡,然后设置了一个很高的线程数去下载,结果当然是毫无意外地烧掉了内存卡。
  • 高转速的硬盘或者手机内置 EMMC 储存(多见于 2017 年前的手机和低端机):这个级别的设备读写速度比起上面两种提高了一个量级,但还达不到快速大量数据处理的能力,这个时候可以设置下载软件的线程数高一些(50 以内),达到一个速度和稳定的平衡。同样的如果下载速度超过储存设备数据调度能力也会导致发热,寿命降低和文件损坏等问题。
  • 接下来就是我们常见的固态硬盘(SSD)和 UFS(2.0 及以上)的手机内置储存:这个级别的储存设备基本上可以敞开了跑,只要不调整成过高的线程数(1000+)都跑不到这些设备的瓶颈。
当然最终的下载速度还是取决于你的网络物理速度上限和服务器是否设置了进程限制,服务器如果做了限制线程数设置得再多也是徒劳。当服务器没有线程限制且长时间下载时线程数尽量不要开得太大,否则即使下载软件有缓存优化的功能也会大大增加数据写入储存设备和读取的次数,容易造成前台应用(比如游戏)卡顿和占用更多运行内存,储存设备也容易提前报废掉,这种情况网速越高越明显。

推荐一些多线程下载工具

Windows 上很多人都会推荐 IDM,当如果你不想花钱,那么免费的 FDM(Free Download Manager)是个更好的选择,界面简洁功能够用(还支持 BT 下载)。在 Mac 上 FDM 同样轻巧好用。
Android 上强力推荐 ADM,一直是我的主力下载 App(很少用电脑下载文件),还专门写了篇推荐教大家如何自定义线程数:「CF、SD、Micro SD 这些卡该怎么选?这篇文章教你如何买到满意的储存卡」(就是教程介绍里面那篇文章)。

使用迅雷下载

除了服务器限制,有时候使用 HTTP 下载达不到满速是因为服务器本身就是条「小水管」,实在满足不了我们的宽带速度。这个时候再想要加速就只能利用 P2SP 工具 —— 比如迅雷了,就如 P2SP 的原理一样,如果你下载的文件不是某个网站独占或者比较新的话,多个下载源的速度总会比一个下载源快。

提升网盘下载速度

网盘也是我们日常下载中一个重要的数据来源,不过国内大家熟知的网盘在最近几年已经「挂」得七七八八了,需要提升速度的情况一般就是针对某个大家都知道的限速的网盘。下文的方法全部是针对这个网盘进行测试,总有一个可以提升下载速度。

普通方法

先说说如果放在自己网盘里面的文件下载限速了怎么办。第一个最简单的技巧是把自己想要下载的文件建立一个分享链接(私人文件可以建立私密分享链接,文件太多可以分享文件夹),退出账号后再通过分享链接下载。这招往往有奇效,因为宽带一般都是动态 IP,所以某网盘通常根据账号限速,没有登录账号下载一段时间之内不会被限速(同一个 IP 下载太多文件会被限速,这时候只要拔掉路由器电源等待 5 分钟再接上让运营商重新分配 IP 即可)。

高级方法

当你使劲浑身系数精疲力竭都无法从「限速」这个恶魔手中逃出来,那么可以考虑这个高级方法了。
你可以将下不动的文件使用 multcloud 这个网站将文件同步到其他不限速的网盘后再下载,既然离开了某网盘,那么自然就没有「限速」这回事儿了。
multcloud 是一个在线网盘管理服务,支持包括添加某网盘,私人 FTP 与 NAS 在内的数十个网盘,并在它们之间通过服务器随意同步自己文件空间里面的文件

不过这个网站在不同地区不同网盘间的同步速度非常玄学,建议不是那么急着下载或者实在是不想使用某网盘下载时再使用这项服务。并且请在同步私人文件前了解网站和相关网盘的用户条款。

附加方法

如果以上两种方法也不能帮助你,请私信联系作者,我将提供附加方法。

提升 BT 下载速度

想要加速 BT 下载,同样是根据它的下载原理 —— 越多人同时下载越快得出加速方法:让自己找到更多同时在线的用户。而想要找到更多的用户,则需要从 Tracker 和 DHT 网络两个方面入手。在这一小节中,你将读到以下三个方面的内容:
  • 不要限制 BT 上传速度
  • 更新 Tracker
  • 开启 UPnP(以 DHT 为基础)
对于后两节,我还会分不同的下载客户端分门别类进行讲解。

不要限制上传速度

BT 下载本身就是根据上传速度决定你的下载速度(给别人的数据越多,别人给你的数据也就越多),所以平时下载的时候不要看到上传速度太高就去限制上传速度。唯一推荐限制上传速度的情况是:文件已经下好且没有正在下载的文件,为其他下载者提供数据时。

更新 Tracker

Tracker 是下载种子时重要的一部分,不同类型的文件通常有着不同的 Tracker。而且由于 Tracker 天生的中心化,分享文件的 Tracker 会频繁地更换地址,每天也会不停地有 Tracker 被关闭(封)和建立。
这里稍微引用我在答疑 06 里面的回答复习一下 Tracker 的作用:
简单来讲就是你在用 BT 下载客户端在文件的时候,客户端定时以 HTTP 协议给 Tracker 发送这些消息:
我是谁(ID)?我在哪(IP 地址和端口)?我要下什么?
如果同时下载多个文件,就会发送多条请求(即使下载完成,只要不停止上传也会继续发送请求)。Tracker 收到后就会记录下来(如果已经记录则会更新),然后再从服务器上找到正在下载同一个文件的记录,把下载者信息发回给你的 BT 下载客户端,然后你的 Bt 客户端就和其他下载者的客户端商量着交换数据(P2P 下载,即是第四章的内容)。
一般 Tracker 都是内置于客户端或者种子里面,不会自动更新,这种情况下经常更新 Tracker 可以让我们时刻保持和 BT 网络里面的绝大部分用户保持连接,轻松解决「死种」和做种者过少的问题。
想要时刻知道最新的 Tracker 列表,有许多网站可以选择。trackerslist 这个项目就是其中更新地比较及时分类比较完善的,每次更新都会整理出懒人专用的最佳 Tracker 列表,只需要把以下的链接加到书签:
[https://raw.githubusercontent.com/ngosang/trackerslist/master/trackers_best.txt](https://raw.githubusercontent.com/ngosang/trackerslist/master/trackers_best.txt)

[https://raw.githubusercontent.com/ngosang/trackerslist/master/trackers_best_ip.txt](https://raw.githubusercontent.com/ngosang/trackerslist/master/trackers_best.txt)
下面说说得到 Tracker 地址以后如何使用。修改 Tracker 有两种方法,不同工具修改种子有两种,磁力本身就支持在链接后面添加 Tracker。

1. 迅雷

  • 第一种方法是通过 torrenteditor 这个网站编辑种子,把 Tracker 手动添加进去再下载新的种子。这种方法主要是让大家知道这个在线编辑种子的网站,用这种方法添加 Tracker 有点麻烦。
torrenteditor 操作方法:
  1. 通过链接或者本地上传自己的种子,点击旁边的 Edit It!。
  2. 接下来网站就会分析种子里面内置 tracker 的可用状态(红色背景就是已经失效的 tracker,点击旁边的 X 可以删除)。
  3. 在最后一行输入你想要添加的 Tracker,然后点击绿色的 + 号添加即可,网站会在你添加的同时检测新 tracker 是否可用。
  4. 第二种方法是把上面两个 txt 里面的列表保存到一个文本文档里面,每次迅雷弹出新建任务提示的时候在右边的属性设置粘贴 Tracker 列表(注意不能包含空行),这个方法支持迅雷 9 之前的版本,新版迅雷已经不支持添加自定义的 Tracker 这个功能,如果坚持用迅雷下载,再麻烦也只能用第一个方法了。

2. Aria2 与其他 BT 下载客户端

Aria2 想要用上最新的 Tracker 不用每次下载都添加列表,也不用修改种子文件,步骤比较简单。在 aria2.conf 文件末尾加上如下选项:bt-tracker=,后面跟上没有空格,以英文逗号分隔的 Tracker 列表就行。以后进行下载 Aria2 都会调用这份列表了。
当然你想要每次下载时添加 Tracker 也是没问题的,新建任务时在(支持的控制台)高级设置中找到 bt-tracker 这个选项填入以英文逗号分隔的 Tracker 列表即可。

至于其他 BT 下载客户端(例如 qBittorrent)本身就提供完善的自定义 Tracker 功能,直接在设置里面添加想要的 Traccker 列表。

除了种子,磁力链接也是我们经常接触到的下载方式,每次发现磁力链接下载不动的时候都可以手动加上一些 Tracker 地址,往往会有奇效。

3. 磁力链接

磁力链接本身就支持在链接后面直接添加 Tracker,形式如下(虚构链接,请勿使用):
magnet:?xt=urn:btih:58T76289TYPDT67F4RGIENUE73FNEKNE&tr=http://189.23.18.16:8000/Fannounce&tr=udp://14.38.18.18:8000/announce
直接在 HASH 值(58T76289TYPDT67F4RGIENUE73FNEKNE 这一长串数字和字母的组合)后面添加 Tracker 即可,每一条 Tracker 地址都要写成 &tr=Tracker 地址 的形式。

开启 UPnP

UPnP(Universal Plug and Play,通用即插即用协议)是一个以 UDP 为基础的协议,它原本是一个端口映射的功能,也就是将内网的一个端口暴露到公网。在 BT 下载中的作用是让下载器能够接受更多外网用户的主动连接,以找到更多同一文件正在下载的人和做种者。
这个功能需要在支持 UPnP 功能的路由器上开启相关选项之后才能生效(在路由器后台开启带 UPnP 字样的选项,现在的路由器一般是默认开启的),在使用时需要注意一点:UPnP 运行时对路由器内存和处理器配置要求比较高,如果在低配的路由器上长时间开启容易导致路由器系统崩溃。
另外,还要保证我们 Windows 电脑的防火墙没有禁止 UPnP 相关端口的网络连接权限。而且有时候电脑优化软件会关掉 UPnP 相关的服务导致功能异常,在设置好路由器后还应该检查下我们的电脑。检查和设置方法如下:
  • 打开控制面板中的「计算机管理 —— 服务与应用程序 —— 服务」,你也可以在按 WIN+R 键输入 services.msc 打开服务窗口。
  • 在服务中寻找 Funtion Discovery Resource PublicationSSDP Discovery ServiceUPnP Device Host 这三个服务。
  • 双击每一个服务确认或者修改它们的启动类型为自动(服务停止可以按下面的启动按钮启动服务),确定即可。
  • 在控制面板 —— windows(defender)防火墙中点击「允许应用或功能通过 windows(defender)防火墙」,查看下载软件的相关服务是否有勾选。
路由器启用 UPnP 后,如果电脑中的软件也支持 UPnP 协议(比如迅雷),路由器会在软件打开后根据软件的需求打开相应的端口,实测开启 UPnP 功能后 BT 下载速度有了很大的提升。

1. 迅雷

迅雷在之前提供了是否使用 UPnP 的设置,在最新版本的迅雷里面却不见了。考虑到现在的路由器大多都默认开启 UPnP,个人猜测应该是作为默认开启且不可关闭的选项。

2. Aria2 及其他 BT 下载客户端

很遗憾 Aria2 经测试并不支持内网 UPnP,所以你必须有一个公网 IP(公网 IP 不用 UPnP 也可以实现主动连接其他用户);其他 BT 下载客户端的相关选项一般位于设置 —— 连接里面,类似「使用我的路由器的 UPnP / NAT-PMP 端口转发」的名称。
至于公网 IP 这个概念并没有十分严格的解释,通俗地解释就是运营商给用户分配的 IP 地址一般就是一个巨大局域网内的地址(例如所有使用电信宽带的用户就组成了电信用户局域网),这个 IP 地址一般是动态的,所以你无法访问这个 IP 地址(内网 IP)。而网站服务器需要让所有用户都能访问到它,就必须有一个固定的全球互联网都可以访问的 IP 地址,这就是公网 IP。
普通用户想要申请公网 IP 也不难,一种方法是和你的宽带运营商客服说「想要远程访问家里的监控摄像头」,是否有用请以实际情况为准。

手动设置 DHT.dat 文件

使用 Aria2 时还可以通过自定义的程序目录下的 DHT.dat 文件来加速下载,就像第四章里面介绍的那样,每一次下载的时候 DHT.dat 负责记录下这次下载中和你交换数据附近的节点,以便下次下载时省去发现节点的时间。DHT.dat 文件可以解决有时候种子和磁力链接甚至都不能开始下载的问题。虽然在第五章我的懒人包里面附上了一个 DHT.dat 但是毕竟是我自己生成的,对大家的适用性可能不是太高,这里教大家一个方法更新 DHT.dat。
方法很简单,准备一个你所知道的最热门的种子(不能是磁力链接),然后让 Aria2 完整的下一遍就行,下完你再看 DHT.dat 就会发现大小改变了,这时候 Aria2 就已经把刚才搜到的节点全部写入里面了。

作者目前的 BT 下载方式(部分)

相信很多读者都很关心作者本身是如何去下载文件的,在教程的最后我就附上我自己平时的下载习惯,由于一些原因我不能太详细地去说,不过相信大家都能明白。
首先很重要的一点就是我专门准备了一台内置储存大的旧 Android 手机来下载之后再转到其他设备(比如电脑),平时很少用电脑去下载。这是因为:
  1. 手机上 UFS2.1 储存的读写速度(几百 M 每秒)完全没有任何瓶颈,可以随心所欲地不用限速(特别是家里有百兆以上光纤),这也是为什么不选择可以插内存卡的手机而选择内置储存大的手机。
  2. 比起电脑,手机上对于代理流量管理更加清晰和方便,轻松确定下载软件的流量是否有走梯子,不会出现电脑上挂着梯子有时却不走梯子的尴尬。而且旧手机可以使用一个专门用于下载的梯子(至于为什么下面有说)。
  3. 手机上长时间下载更加节省能源,Aria2 我是搭在手机端的。
  4. 不知道为什么,同一个资源在手机上的 App 比用电脑客户端下载快(这是我自己的情况,属于玄学)。
那我怎么访问旧手机上已经下载好的文件呢?像是视频这类只看一次的文件我会在电脑和主力手机上使用播放器的局域网串流功能直接观看,其他格式的文件则会在局域网下同步到电脑或者主力手机专门的文件夹里面。千兆路由器局域网同步文件的速度最高有百兆每秒,完全不用担心大文件同步的速度问题。
总的来讲这台旧手机担当的工作有点像是下载器版的 NAS,不过比 NAS 便宜多了。
监控和安全问题国内的朋友大可不必担心,我国的版权制度较为宽松。国外的朋友可以搜一下「罗马尼亚」或「DMCA Free」或「VPS」这些关键词。
应用方面,普通下载我自己用的肯定就是推荐过很多次的 ADM Pro 了,没别的选择。BT 下载的我是用的是 Flud 这款 App,拥有包括自定义 Tracker 和 UPnP 在内全部电脑端 BT 下载客户端的功能(下载完毕的文件也可以自动做种)。

有时候不想下载视频文件我就使用种子磁力播放器(com.iiplayer.sunplayer)去在线观看,这个播放器很干净,就简简单单复制链接播放的功能,没有广告资源推荐搜索之类的垃圾(当然和下载一样记得挂梯子)。

以上就是本章的全部内容,如果你使用这些方法之后速度有了提升,又或者你知道更多文章没有提到的加速方法,欢迎在评论区分享各种想法与方法。有任何问题和建议都请尽情在评论区留言,我会尽力作答。

结语

看到这里的朋友恭喜你,你已经看完这套科普与教程的全部内容了。通过这套教程,想必你已经学习到不少和下载相关的知识,平时的下载质量也有所提升了吧。人无完人,若各位发现教程中任何不详细不准确和任何需要更正的地方,恳请见谅,也请通过评论或者私信反馈,作者会以最快的速度勘误。
下载是包含很多复杂内容的一门技巧,学会自如地下载也并非只靠这篇入门级的教程就能实现。大家平时在下载时遇到的一些陌生的名词和技术还是要主动地去了解一下,平时也可以多多问一下身边地「老司机」你想知道的下载问题,特别是与我们下载时的「隐私,稳定和速度」相关联的问题,相信你得到的不仅比这篇科普与教程,更要比你想象中多得多。最后希望大家都能对这个教程感到满意,我们下一个教程再见啦。

上一期
答疑汇总 06
下一期
答疑汇总 07
 
精选评论(12) 我的评论
  • 摩典
    想要私信您问一下百度网盘的附加方法,发现您已关闭私信~
    08月08日
    • Fairyex 作者
      现在开通了,不好意思
      08月08日
  • LAjpau
    你好,我近期才购买的,想私信你问几个问题,但发现已经不能私信了。请问还有什么联系方式。
    08月08日
    • Fairyex 作者
      现在开通了,不好意思
      08月08日
  • UNIK
    你好,请问百度网盘有更好的下载方法吗?
    07月28日
    • Fairyex 作者
      有一个非常安全不会封号的命令行百度云客户端 https://github.com/iikira/BaiduPCS-Go
      好用但是上手难度有点高,我自己就在用这个,可以跑满宽带速度。
      07月28日
  • Sam_pai
    trackerslist每次下载都有使用最新的吗?
    04月15日
  • L火海名L
    您好,再请教一下多线程软件的默认线程数和bt软件的全局最大连接数、每个任务最大连接数意义一样吗?全局最大连接数这个数值往往很高
    04月08日
  • L火海名L
    使用多线程软件默认的线程数(10–15)那么普通硬盘使用bt软件,线程数设置多少呢?
    03月13日
    • Fairyex 作者
      普通硬盘不要动软件的默认设置哦(默认设置比较保守,普通硬盘用这个就行了)
      03月14日
  • yingxincui
    mac上 leech有时下载国外的东西还是挺快的 与浏览器相比
    然后有个shutter是多线程下载工具

    至于bt 有个小众的heike

    03月13日
  • gl09025
    感谢科普
    03月07日
  • 少数一点派
    如何更新tracker有没有更详细的教程,我是小白
    03月07日
  • Aquamarine
    1.eMule原理是每个帐户分配一个ID,上传贡献关联,上传越多下载越快,是不是BT也是如此?如果也是的话也就是说BT也最好在一个地方下载,免得上传贡献被稀释。
    2.上传是不是按总量计算而不是单文件,也就是说我一个文件下载完了,可以放着让它上传,以促进我未下载完的文件下载?如果是这样的话,平时带宽有剩余也可以上传做种,所以不太理解你这句:唯一推荐限制上传速度的情况是:文件已经下好且没有正在下载的文件,为其他下载者提供数据时。
    3.关于公网,我觉得在文中它的概念是与内网相对,那么直接把几个内网网段放出来就好,对比下就知道是不是了。而向ISP申请一般都是开服务器用到的静态IP吧?我感觉没必要做到这一步。
    4.Flud的后端是不是ARIA2,不然我看不出ARIA2用在哪里了。
    5.手机用ARIA2,ARIA2不支持内网UPnP,而下载一般不会用移动数据网络都是接路由,那么是不是说ARIA2没用UPnP?这样的话不是降低下载速度么?
    03月06日
  • iD-NARUTO
    有时用迅雷下载bt种子,过了一会儿提示什么查询链接失败 暂停再开始就能继续下 有时候就干脆下不动 如果把Tracker添加进去能继续下载吗 还是服务器被关了
    03月05日
    • Fairyex 作者
      添加 Tracker 就是为了解决这些问题
      03月05日
  • nanbiu
    下载某盘的时候 如果用油猴插件获取下载地址 再用 Aria2 下载 速度会不会快点?或者用其他下载方式 笔者有什么推荐的吗?
    03月05日
    • Fairyex 作者
      这涉及到本文被删除的内容,想知道的朋友可以私信作者
      03月05日