实操教程2026年10月8日阅读约 7 分钟

aria2 代理设置:--all-proxy 只管 HTTP 那一半,BT 的 peer 永远直连

aria2 代理设置:--all-proxy 让 HTTP、HTTPS 和 FTP 下载走 HTTP 代理,但 aria2 不支持 SOCKS5,BT 的 peer、DHT 和 UDP Tracker 永远直连。附实测和命令。

aria2 的代理设置归结起来就一个参数:--all-proxy,它让 aria2 的 HTTP、HTTPS 和 FTP 下载经过一个 HTTP 代理。aria2 完全不支持 SOCKS5;在 BitTorrent 下载里,代理只够得着 HTTP Tracker 和 Web Seed,和 peer 的连接、DHT 和 UDP Tracker 永远从你自己的地址发出。用它从镜像下载很合适;想隐藏一个 BT 客户端的地址,aria2 是错的工具。

如果你用的是 Motrix 这类图形界面下载器,它的底层就是 aria2,代理用的也是 aria2 的 HTTP 代理,下面的结论同样适用。

aria2 的哪一半能走代理

根据 aria2 的手册和它的问题追踪:

流量 经过代理吗
HTTP、HTTPS、FTP 镜像下载 经过,完整地经过
HTTP Tracker 通告 经过。维护者原话:“aria2 can connect to tcp tracker via HTTP proxy. There is no proxy support for UDP traffic.”
Web Seed 经过,在我们的测试里它是一串 HTTPS 请求
和 peer 的连接 永远不经过。aria2 的源码直接连到 peer 的地址
DHT、UDP Tracker 永远不经过。手册说 --enable-dht“also enables UDP tracker support”,两者都是 UDP

代理参数接受的格式是:可选的 http:// 开头,可选的登录信息,主机,可选的端口,例如 http://USERNAME:PASSWORD@HOST:PORT。手册从头到尾没有提到 SOCKS,请求支持 SOCKS 的第 153 号 issue 从 2013 年开放至今。

需要代理吗

如果你是用 aria2 下载 Linux 镜像或数据集,多半不需要。aria2 很擅长同时从多个镜像拉同一个文件,这些都用不着代理;而经过计量代理,文件的每一个字节都算流量。

真正需要代理的,是脚本或服务器必须从某个特定地址下载的时候。比如公司的文件服务器只放行白名单里的固定 IP,构建机就通过一个静态出口去取安装包和资料。不管下载什么,都请限于你有权下载和分享的:发行版镜像、开源软件、科研数据、游戏和软件补丁,以及自家的文件。点对点流量本身没有问题:内容合法的 BT 流量,在我们的住宅代理和不限流量的独享 IP(没有流量上限的独享 ISP 或数据中心 IP)上都可以跑。但在 ProxyPanda 上分享未经授权的内容是不允许的,使用规范写明了遵守法律是你自己的责任。如果你担心的是在公开下载群里被记录 IP 带来的版权问题,BT 项目建议的是 VPN;何况 aria2 连 peer 都不经过代理。见代理和 VPN 的区别。

我们这一侧的限制

  • aria2 没有 SOCKS5,这里也就用不上我们的 SOCKS5。 请用我们的 HTTP 代理。如果项目需要 SOCKS5,就得换工具,见文末。就算换成支持 SOCKS5 的客户端,我们的 SOCKS5 也请当作只支持 TCP,因为我们没有在网关上验证过 UDP 中继,DHT 和 UDP Tracker 一样过不去。
  • HTTP 代理不承载 UDP, 所以 aria2 的 UDP 流量原理上就没法走代理。
  • 代理不加密。 HTTPS 下载在隧道里依然端到端加密;普通 HTTP、FTP 下载和代理的登录信息,在到代理的那一段都是可读的。
  • 计量。 经过代理的每个字节都计入用量,计法见计量说明。

我们的实测

2026 年 10 月 8 日,我们在容器里运行了 Alpine Linux 软件包里的 aria2 1.37.0。--all-proxy 指向一个会记录每个请求的本地 HTTP 代理(tinyproxy),关掉 DHT,然后让 aria2 下载 Debian 13.7.0 的 netinst 种子。

代理日志里有两类请求:对 Debian HTTP Tracker 的通告,以及发往 cdimage.debian.org 的 HTTPS 请求,后者是这个种子的 Web Seed。我们每三秒采样一次 aria2 的连接,下载期间的三次采样里,每次都有三条连接通向代理,同时分别有 30、43 和 44 条直接连向 peer。peer 看到的是我们的地址,和手册、源码说的一致。

注意那个 Web Seed:带 Web Seed 的种子会有一部分数据通过 HTTPS 传输,这部分确实经过代理,所以即使 peer 不走代理,用量表上也会有数字。

命令

经过代理从镜像下载,登录信息不写进 URL,免得密码里的特殊字符出问题:

aria2c --all-proxy="http://HOST:PORT" \
  --all-proxy-user="USERNAME" --all-proxy-passwd="PASSWORD" \
  https://cdimage.debian.org/debian-cd/current/amd64/bt-cd/SHA256SUMS

我们用这条命令连本地测试代理时没有带登录信息;两个登录参数按 aria2 手册的写法给出。如果只想给某一种协议设代理,还有 --http-proxy、--https-proxy 和 --ftp-proxy;--proxy-method 可选 get 或 tunnel。服务器地址在我们的 IP 白名单里的话,去掉两个登录参数即可。

挂着代理跑种子时,关掉 DHT,避免任何 UDP 流量自己跑出去:

aria2c --all-proxy="http://HOST:PORT" --enable-dht=false --seed-time=0 file.torrent

这样 Tracker 通告留在代理上,DHT 和 UDP Tracker 停用,但 peer 还是直连。--seed-time=0 让 aria2 下载完成就退出,不留下来做种。

拿 aria2 校准我们的用量表

正因为 aria2 的镜像下载完整地经过代理,它是检验用量表本身最简单的工具:

  1. 记下控制台里这项服务的流量数字,怎么查看还剩多少流量讲了在哪里看。
  2. 通过 --all-proxy 下载一个已知大小的文件,比如镜像站目录页上标了大小的发行版镜像。
  3. 控制台数字是定期更新的,不是实时的,等几分钟再看。

数字应该增加大约这个文件的大小,再加上一点请求头和 TLS 握手。如果差距明显,请告诉我们:计量说明写了你数的和我们数的相差超过 1% 时我们怎么处理。方法细节见怎么核对代理服务商的用量表。

跑种子时则相反:用量表只会因为 Tracker 通告和 Web Seed 数据而变化,peer 从来不碰代理。

需要 SOCKS5,或者需要 peer 走代理

aria2 两样都做不到。脚本需要让 peer 走 SOCKS5 代理,就用带守护进程和 API 的客户端:-nox 形式的 qBittorrent,或者 Deluge。普通 HTTPS 下载要走 SOCKS5,curl 直接支持 socks5h://,见 HTTP 代理和 SOCKS5 的区别。想事先估算一批下载要花多少流量,可以参考按 GB 计费的代理怎么算钱。

常见问题

aria2 支持 SOCKS5 吗? 不支持,只支持 HTTP 代理。请求 SOCKS 支持的 issue 从 2013 年开放至今。

--all-proxy 能对 BT 的 peer 隐藏我的 IP 吗? 不能,peer 连接永远直连。

DHT 和 UDP Tracker 会走代理吗? 不会。设了代理时,用 --enable-dht=false 把它们关掉。

aria2 还在维护吗? 维护得很少。最新版本是 2023 年 11 月的 1.37.0。

下一步

用 aria2 做代理擅长的事:从固定出口下载镜像,第一个文件下完就核对一次用量。如果你要为一个合法的 BT 任务挑工具,哪些 BT 客户端支持 SOCKS5做了对比;这篇没讲到的,到 Discord 来问。

还有后续问题?

去 Discord 问。答案还能帮到下一个读到这个帖子的人。

加入 Discorddiscord.gg/proxypanda
$5 起步去 Discord 问