Motrix 是一个 Electron 写的下载器,界面里能加 HTTP、BT 和磁力任务,底层跑的是 aria2。它在 GitHub 上有 57,165 个星,最后一次发版是 2023 年 5 月的 v1.8.19。这篇不聊功能清单,只回答一个问题,这份三年前的便携包在现在的 Windows 上还能不能干活。

解压出来 231.8 MB,双击就能跑

官方 release 提供的是免安装 zip,解压完不写注册表,也不往 Program Files 里塞东西。体积分布很集中:Chromium 内核在 Motrix.exe 里,下载引擎单独一个 exe。

Motrix-1.8.19-win.zip      98,436,810 字节
解压后                     243,105,688 字节(231.8 MB),78 个条目
  Motrix.exe               157,633,536
  resources/engine/aria2c.exe        8,136,704
  resources/app.asar                 4,372,926

双击 Motrix.exe 出主窗口,首次启动会在用户目录建 %APPDATA%\Motrix,界面语言跟着系统走,这里是简体中文。窗口默认 1024×768,左侧一条图标栏,中间是任务列表,分「下载中」「等待中」「已停止」三栏。

一次下载任务在界面上长什么样

任务卡片上有三行信息:文件名、进度条、已下载量与总大小,右侧是速度、剩余时间和当前连接数。这些数字和 aria2 的 RPC 读数一致,界面只是把它渲染出来。

状态界面显示说明
下载中23.20 MB / 30.00 MB,6.2 MB/s,剩余 2 秒,11 连接进度条为紫色
暂停27.73 MB / 30.00 MB,转到「等待中」卡片右侧变回三角形播放键
完成30.00 MB / 30.00 MB,进度条变绿弹出「下载完成」提示

连接数是这份界面里信息量最大的一个字段。同一个文件从 11 条到 16 条连接都出现过,速度跟着在 2.41 MB/s 到 6.2 MB/s 之间浮动,说明分段下载确实在起作用。

30 MB 实测,12.7 秒下完,sha256 与源文件一致

测速文件放在自己的服务器上,31,457,280 字节,随机内容,源端 sha256 是 12864a13…6eefea。这样既能拿到稳定带宽,也能在下载完成后逐字节核对。

第一次运行
  3 秒时        4,685,824 字节,2.41 MB/s,16 连接
  暂停于        30.7%(9.22 MB)
  续传后完成    总耗时 12.7 秒
  落盘          31,457,280 字节
  sha256        12864a132f6347ee85492f055519727aa955c50baa0554eade8daa31b64eefea
  与源文件      完全一致

12.7 秒是包含暂停动作的总时长,纯下载时间更短。第二次运行把分段数从 64 降到 32,峰值速度反而升到 6.2 MB/s,说明瓶颈在链路而不在客户端的分段策略。

暂停之后能接着下,断点信息落在 .aria2 文件里

暂停不是把已下载的部分丢掉,aria2 会在目标目录留一个同名的 .aria2 控制文件,记录每个分段的完成情况。重新开始时从断点续,不会重头再来。

暂停时   27.73 MB / 30.00 MB
续传后   30.00 MB / 30.00 MB
最终     31,457,280 字节,sha256 一致

这套机制对动辄几个 G 的镜像文件意义更大。任务列表本身也存在 download.session 里,关掉程序再开,未完成的任务会回到列表,勾了「自动开始未完成的任务」就会自己接着跑。

配置与任务存在哪,默认下载目录在 C 盘

数据只有两个 JSON 加一个会话文件,没有数据库。两个 JSON 各 30 个键,一个管界面偏好,一个管 aria2 参数,都能直接用文本编辑器改。

文件键数管什么
user.json30外观、语言、开机启动、自动检查更新
system.json30下载目录、分段数、并发数、BT 相关
download.session—未完成任务的会话,重启后恢复

默认下载目录是 C:\Users\User\Downloads,在「偏好设置 → 基础设置 → 默认下载路径」里能改。改成 D:\wb_cache\lab\motrix\dl 之后,界面上的路径立刻同步,后续任务都落在新目录。对系统盘吃紧的机器,这一步值得先做。

内置 aria2 1.36,16800 端口默认对局域网敞开

Motrix 没有自己实现下载协议,外壳调用的是随包的 aria2 1.36.0,通过 JSON-RPC 通信。问题在于这个 RPC 的默认配置:监听所有网卡,而且没有密钥。

aria2.getVersion        -> 1.36.0(支持 BitTorrent / Metalink / SFTP)
aria2.getGlobalOption   -> rpc-listen-all = true
                           rpc-secret = 空
netstat                 -> TCP 0.0.0.0:16800 LISTENING
从 192.168.1.243:16800 调 aria2.getVersion   成功

同一网段里任何一台机器,只要知道这个端口,就能往这台电脑上加下载任务、改下载目录。往共享目录或启动目录写文件意味着什么,不需要展开。单机自用问题不大,笔记本经常连公共 Wi-Fi 就值得处理一下:给 rpc-secret 设个值,或者用防火墙把 16800 只放行 127.0.0.1。

版本停在 2023 年,适合谁用

仓库本身还在动,star 数 57,165,fork 5,105,未关闭 issue 155 个,许可证是 MIT。但 release 页面停在 2023-05-03 的 v1.8.19,界面依赖的 Chromium 内核是 108.0.5359.215。三年没发版,意味着浏览器内核的漏洞修复不会跟着来。

场景结论理由
偶尔下个大文件够用解压即用,断点续传正常
BT 与磁力未验证本次只测了 HTTP 直链
公共网络下使用先关 RPC16800 默认监听 0.0.0.0 且无密钥
要长期维护的工具不合适release 停在 2023 年

还有一处细节值得留意。aria2 的 user-agent 被设成了 Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) … Chrome/111.0.0.0,在 Windows 上以 macOS 浏览器身份请求。某些站点做防盗链时会据此判断,遇到下不动的链接可以留意这一项。

实测范围:Windows 10 22H2(10.0.19045.6466)、Motrix v1.8.19 便携版、单屏 2560×1440。BT、磁力、限速、代理这四项没有验证,不作结论。