networkdownload
基于 Rust 的流量消耗器,另有 bun 版本备用
10K+
docker run zuohuadong/networkdownload
💡 提示:查看更多镜像版本,请访问 Docker Hub
该工具内置以下稳定的测速节点(100MB 测试文件),优先使用对中国大陆友好的节点:
亚洲优先节点(中国大陆访问更快):
欧美备用节点:
| 变量 | 说明 | 默认值 |
|---|---|---|
th | 测速并发连接数 | 2 |
time | 测速持续时间(仅 oha 版本有效) | 2147483647sec |
url_custom | 自定义测速节点 URL(留空则使用内置节点列表) | `` |
ui | 日志输出控制 | --no-tui (debian)--no-progress (bun)silent 或 --silent (完全静默) |
min_speed | 最低速度阈值(KB/s),低于此值视为网络异常 | 200 |
check_interval | 测速间隔(秒),建议 300-600 秒 | 300 |
slow_threshold | 慢速检测次数阈值,达到后切换节点 | 2 (容忍1次波动) |
min_benchmark_speed | 节点过滤阈值(KB/s),过滤掉速度低于此值的节点 | 200 |
top_urls | 保留最快的 N 个节点(0=不限制,保留所有符合条件的节点) | 0 (不限制) |
benchmark_concurrent | 并发测速数量,加快节点评估速度 | 5 |
max_display_urls | 节点列表最大显示数量(0=显示全部) | 10 |
speed_window_enabled | 是否启用滑动窗口平均速度(减少速度波动影响) | true |
speed_window_size | 滑动窗口大小(保留最近 N 次测速结果) | 3 |
url_update_enabled | 是否启用测速节点列表自动更新 | true |
url_update_interval | 节点列表自动更新间隔(天) | 7 |
webhook_url | Webhook 通知地址(留空则禁用通知) | `` |
webhook_enabled | 是否启用 Webhook 通知 | true |
webhook_min_interval | Webhook 最小发送间隔(秒),避免频繁通知 | 3600 (1小时) |
webhook_notify_slow | 是否在速度过低时发送通知 | true |
webhook_notify_no_nodes | 是否在无可用节点时发送通知 | true |
bandwidth_limit_download | 下载带宽限制(KB/s),用于限速环境测试 仅 Debian 版本支持 | `` |
bandwidth_limit_upload | 上传带宽限制(KB/s),用于限速环境测试 仅 Debian 版本支持 | `` |
docker run zuohuadong/networkdownload
docker run -e th=10 zuohuadong/networkdownload
docker run -e url_custom=https://your-speedtest-server.com/testfile.bin zuohuadong/networkdownload
# debian/alpine 版本
docker run -e ui="" zuohuadong/networkdownload
# bun 版本
docker run -e ui="" zuohuadong/networkdownload:bun
# 所有版本通用 - 完全禁用日志输出
docker run -e ui=silent zuohuadong/networkdownload
# 或者使用
docker run -e ui=--silent zuohuadong/networkdownload
# 设置速度阈值为 500 KB/s,每 10 分钟测速一次
docker run -e min_speed=500 -e check_interval=600 zuohuadong/networkdownload
# 增加并发测速数量以加快节点评估(适合高带宽网络)
docker run -e benchmark_concurrent=10 zuohuadong/networkdownload
# 限制保留最快的 3 个节点,过滤掉低于 1000 KB/s 的节点
docker run -e top_urls=3 -e min_benchmark_speed=1000 zuohuadong/networkdownload
# 不限制节点数量,保留所有高于平均速度的节点(默认行为)
docker run -e top_urls=0 -e min_benchmark_speed=500 zuohuadong/networkdownload
# 容忍多次慢速检测后再切换节点(适合网络波动环境)
docker run -e slow_threshold=3 zuohuadong/networkdownload
# 调整滑动窗口大小以平滑速度波动(保留最近5次测速)
docker run -e speed_window_size=5 zuohuadong/networkdownload
# 禁用滑动窗口,使用实时速度判断(更敏感)
docker run -e speed_window_enabled=false -e slow_threshold=1 zuohuadong/networkdownload
# 高性能测速:只使用最快节点,快速响应网络变化
docker run \
-e th=20 \
-e top_urls=3 \
-e min_benchmark_speed=1000 \
-e slow_threshold=1 \
-e speed_window_enabled=false \
-e check_interval=300 \
zuohuadong/networkdownload
# 稳定性优先:保留所有快速节点,容忍短暂波动(推荐)
docker run \
-e th=10 \
-e top_urls=0 \
-e min_benchmark_speed=300 \
-e slow_threshold=3 \
-e speed_window_size=5 \
-e check_interval=600 \
zuohuadong/networkdownload
# 全面测速:保留所有高于平均速度的节点
docker run \
-e th=15 \
-e top_urls=0 \
-e min_benchmark_speed=200 \
-e slow_threshold=2 \
zuohuadong/networkdownload
# ⚠️ 注意:带宽限速功能仅支持 Debian 版本(latest/debian)
# 模拟 10 MB/s 限速环境进行测速 - Debian 版本
docker run -e bandwidth_limit_download=10240 zuohuadong/networkdownload
# 同时限制下载和上传带宽进行测速 - Debian 版本
docker run -e bandwidth_limit_download=10240 -e bandwidth_limit_upload=5120 zuohuadong/networkdownload:debian
# 在限速环境下进行网络测速 - Debian 版本
docker run -e th=10 -e bandwidth_limit_download=20480 -e min_speed=500 zuohuadong/networkdownload:latest
# 启用 Webhook 告警(当网络异常或无可用节点时发送通知)
docker run -e webhook_url=https://your-webhook-endpoint.com/notify zuohuadong/networkdownload
# 自定义 Webhook 配置(最小通知间隔 30 分钟)
docker run -e webhook_url=https://your-webhook-endpoint.com/notify \
-e webhook_min_interval=1800 \
zuohuadong/networkdownload
# 只在无可用节点时通知,不在速度过低时通知
docker run -e webhook_url=https://your-webhook-endpoint.com/notify \
-e webhook_notify_slow=false \
-e webhook_notify_no_nodes=true \
zuohuadong/networkdownload
# 结合测速监控使用 Webhook 告警
docker run -e webhook_url=https://your-webhook-endpoint.com/notify \
-e min_speed=500 \
-e slow_threshold=3 \
-e webhook_min_interval=3600 \
zuohuadong/networkdownload
# 禁用 Webhook 通知
docker run -e webhook_enabled=false zuohuadong/networkdownload
Webhook JSON 数据格式:
{
"title": "网络速度异常警告",
"message": "测速结果持续低于阈值 (平均 180 KB/s < 200 KB/s),已连续检测 2 次。正在尝试切换测速节点...",
"level": "warning",
"hostname": "container-hostname",
"timestamp": "2025-11-06T12:34:56Z",
"stats": {
"total_traffic": "15.23 GB",
"avg_speed": "5420 KB/s",
"session_duration": "02:45:30",
"download_cycles": 33,
"current_node": "2/5"
}
}
支持的通知类型:
warning:网络速度异常警告(当平均速度低于 min_speed 阈值时)error:无可用测速节点警告(当所有节点都不满足速度要求时)| 版本标签 | 工具 | 架构支持 | 特点 |
|---|---|---|---|
latest / debian | oha | amd64, arm64, arm/v7 | 占用内存小,性能好,支持带宽限速 |
alpine | oha | amd64, arm64 | 体积最小(基于 Alpine),不支持带宽限速 |
bun | autocannon | amd64, arm64 | 兼容性好,使用 bun 优化,不支持带宽限速 |
所有镜像均支持多架构,Docker 会自动选择适合你系统的架构:
https://raw.githubusercontent.com/uu6/llxhq/main/index.php 获取最新测速节点列表top_urls 参数限制保留节点数量check_interval 配置)# 构建 debian 版本
docker build -t networkdownload:debian -f Dockerfile .
# 构建 alpine 版本
docker build -t networkdownload:alpine -f Dockerfile-alpine .
# 构建 bun 版本
docker build -t networkdownload:bun -f Dockerfile-bun .
本项目使用 GitHub Actions 实现自动构建和发布:
main 分支、手动触发或每周定时触发每次构建后,GitHub Actions 会自动推送以下标签:
latest, debian, debian-时间戳alpine, alpine-时间戳bun, bun-时间戳查看构建状态:GitHub Actions
⚠️ 重要提示:带宽限制功能仅在 Debian 版本(latest / debian)中可用。
本工具的 Debian 版本内置了 trickle 带宽限制工具,可以模拟限速环境进行测速:
# 模拟 10 MB/s 限速环境进行测速 - 仅 Debian 版本
docker run -e bandwidth_limit_download=10240 zuohuadong/networkdownload:debian
# 同时限制下载和上传带宽进行测速(下载 10 MB/s,上传 5 MB/s) - 仅 Debian 版本
docker run -e bandwidth_limit_download=10240 -e bandwidth_limit_upload=5120 zuohuadong/networkdownload:latest
注意:带宽限制单位为 KB/s(千字节/秒)
版本限制说明:
latest, debian):支持带宽限速测试alpine):不支持(Alpine Linux 软件库中没有 trickle)bun):不支持(基于 Alpine)其他版本的替代方法:
如果你使用 Alpine 或 Bun 版本,可以使用 Docker 自带的网络限流功能:
# 使用 Docker 网络限流(需要 NET_ADMIN 权限)
docker run --network=my-network \
--cap-add=NET_ADMIN \
zuohuadong/networkdownload:alpine
或者使用系统级工具如 tc (Traffic Control) 进行限流。
运行时不显示日志(默认),如需查看详细测速统计:
# debian/alpine 版本
docker run -e ui="" zuohuadong/networkdownload
# bun 版本
docker run -e ui="" zuohuadong/networkdownload:bun
内置的测速节点都是知名 CDN 或网络服务商提供的公共测速文件:
启动时会对每个测速节点进行速度测试:
top_urls 限制数量并发测速优化:
双重过滤优化示例:
测试 10 个节点,结果如下:
节点 1: 6000 KB/s ⚡ (远超平均)
节点 2: 1500 KB/s ↑ (高于平均)
节点 3: 1200 KB/s ↑ (高于平均)
节点 4: 800 KB/s → (接近平均)
节点 5: 600 KB/s → (接近平均)
节点 6: 300 KB/s (低于平均)
节点 7-10: < 200 KB/s (慢速)
平均速度: 1200 KB/s
过滤阈值: max(200, 1200) = 1200 KB/s
✓ 保留节点 1、2、3(速度 ≥ 1200 KB/s)
✗ 过滤节点 4-10(速度 < 1200 KB/s 或 < 平均值)
结果:只使用真正高速的节点,确保测速准确性
运行过程中会定期监控下载速度,采用智能切换策略:
性能优化设计:
使用场景示例:
场景 1:最快节点稳定
节点 #1 (Cloudflare 6000 KB/s) → 持续使用 → 不切换
结果:流量稳定,速度始终保持在 6 MB/s
场景 2:短暂网络波动(新:智能容错)
测速 1: 5000 KB/s → 正常
测速 2: 180 KB/s → 检测到慢速 [1/2] 继续观察
测速 3: 5100 KB/s → 速度恢复,重置计数器
结果:识别出短暂波动,保持在优质节点,避免误判
场景 3:节点持续变慢(新:滑动窗口判断)
测速 1: 5000 KB/s → 滑动平均: 5000
测速 2: 180 KB/s → 滑动平均: 2590 (仍高于阈值) [1/2]
测速 3: 150 KB/s → 滑动平均: 1777 (低于阈值) [2/2]
↓ 连续 2 次检测到慢速,触发切换
节点 #2 (Hetzner 5000 KB/s) → 切换成功
结果:准确识别真正变慢的节点并切换
场景 4:所有快速节点都变慢
节点 #1, #2, #3 都低于阈值
↓ 触发全局重测
重新测试所有 10 个 URL
↓ 发现其他节点变快
更新为新的最快 3 个节点
结果:适应网络环境变化,始终使用最优节点
可以!使用 url_custom 环境变量:
docker run -e url_custom=https://your-cdn.com/file.bin zuohuadong/networkdownload
也可以修改 entrypoint.sh 中的 URLS 变量添加更多备用 URL。
Webhook 通知功能可以帮助你实时监控下载状态,在出现异常时及时收到告警。
支持的 Webhook 服务:
配置示例:
# 1. 基本配置(最简单)
docker run -e webhook_url=https://your-webhook.com/notify zuohuadong/networkdownload
# 2. 生产环境配置(推荐)
docker run \
-e webhook_url=https://your-webhook.com/notify \
-e webhook_min_interval=3600 \
-e webhook_notify_slow=true \
-e webhook_notify_no_nodes=true \
-e min_speed=500 \
-e slow_threshold=3 \
zuohuadong/networkdownload
# 3. 仅关键告警(只在无可用节点时通知)
docker run \
-e webhook_url=https://your-webhook.com/notify \
-e webhook_notify_slow=false \
-e webhook_notify_no_nodes=true \
zuohuadong/networkdownload
通知触发条件:
速度过低(webhook_notify_slow=true):
min_speed 阈值slow_threshold 次数后触发通知无可用节点(webhook_notify_no_nodes=true):
min_benchmark_speed 或平均速度频率限制:
webhook_min_interval 避免通知轰炸本工具采用动态节点更新机制:
首次启动:
https://raw.githubusercontent.com/uu6/llxhq/main/index.php 获取最新测速节点运行时更新:
url_update_interval 配置)url_update_enabled=false 禁用自动更新配置示例:
# 禁用运行时自动更新
docker run -e url_update_enabled=false zuohuadong/networkdownload
# 自定义更新间隔(每 3 天更新一次)
docker run -e url_update_interval=3 zuohuadong/networkdownload
注意:即使节点更新失败,工具仍会使用已有的节点列表继续工作,不会影响核心测速功能。
欢迎提交 Issue 和 Pull Request!
Apache License 2.0
Content type
Image
Digest
sha256:9c4903932…
Size
11.9 MB
Last updated
6 months ago
docker pull zuohuadong/networkdownload:alpine-20260126-0359