一款专为增加下行流量设计的轻量级工具
在当前宽带运营环境下,许多 NAS 用户、PT 玩家或自建服务用户 由于上传流量与下载流量比例异常,容易被运营商的大数据算法误判为"商业 PCDN"行为,导致:
- 🚫 被限速甚至停网
- 📝 强制要求签订保证书
- 📞 频繁接到"警告"电话
DownOnly 通过产生真实但"无害"的下载流量,在不损耗硬件寿命的前提下,平衡你的宽带上下行比例,规避运营商的弱智判断算法。
声明:我不推荐任何浪费公共网络资源的行为,但也不希望自身合法合规的行为被套上莫须有的罪名。
- 黑洞机制:采用
io.Discard技术,下载数据在内存中直接丢弃,0 磁盘写入 - 闪存友好:保护 eMMC、SSD 等存储介质的硬件寿命
- 低内存占用:运行时仅占用 6-15MB 内存,512MB 设备也能流畅运行
- 实时监控:Mbps 级速率统计 + 秒级折线图
- 流量统计:按日记录流量并以柱状图展示,支持按月查看历史
- 数据持久化:自动归档年度数据
- 时间窗口:自定义每日运行时间段(如仅在 18:00 - 23:00 运行)
- 限额保护:设置每日流量封顶值,达到后自动待机
- 伪装技术:随机化 User-Agent + 多源轮换,模拟正常用户行为
- 深色/浅色模式 自由切换
- 响应式设计:完美适配手机、平板、PC
- 交互友好:所有配置可在网页端实时修改,无需重启
适用于 Linux 系统(x86_64 / ARM64),自动处理所有依赖和配置。
curl -fsSL https://raw.githubusercontent.com/EchoPing07/DownOnly/main/install.sh | bash安装过程说明:
- 自动检测系统架构
- 从 GitHub Release 下载预编译文件(若无则本地编译)
- 配置 systemd 服务
- 安装管理脚本到系统
安装完成后:
- 访问地址:
http://你的设备IP:8080 - 管理命令:直接输入
downonly呼出管理菜单
检查端口占用(DownOnly 默认使用 8080 端口):
# 检查 8080 端口是否被占用
netstat -tuln | grep 8080
# 或
lsof -i:8080
# 如果有输出,说明端口被占用,请先关闭占用进程或修改 main.go 中的端口号安装 Go 环境(如果未安装):
# 下载 Go(以 ARM64 为例)
wget https://golang.google.cn/dl/go1.22.5.linux-arm64.tar.gz
sudo tar -C /usr/local -xzf go1.22.5.linux-arm64.tar.gz
# 配置环境变量
echo 'export PATH=$PATH:/usr/local/go/bin' >> ~/.bashrc
source ~/.bashrc
# 验证安装
go version# 克隆仓库
git clone https://github.com/EchoPing07/DownOnly.git
cd DownOnly
# 初始化模块
go mod init downonly
# 编译
go build -ldflags="-s -w" -o downonly main.go
# 创建数据目录
mkdir -p data# 创建 systemd 服务文件
sudo tee /etc/systemd/system/downonly.service > /dev/null <<EOF
[Unit]
Description=DownOnly Traffic Guard
After=network.target
[Service]
WorkingDirectory=$(pwd)
ExecStart=$(pwd)/downonly
Restart=always
RestartSec=5
StandardOutput=append:$(pwd)/data/sys_out.log
StandardError=append:$(pwd)/data/sys_err.log
[Install]
WantedBy=multi-user.target
EOF
# 重载并启动服务
sudo systemctl daemon-reload
sudo systemctl enable downonly
sudo systemctl start downonly
# 查看运行状态
sudo systemctl status downonly在浏览器中输入:http://你的设备IP:8080
Docker Run 运行:
docker run -d \
--name downonly \
-p 8080:8080 \
-v /opt/downonly/data:/app/data \
--restart always \
ghcr.io/echoping07/downonly:latestDocker Compose 运行:
创建 docker-compose.yml 文件:
services:
downonly:
image: ghcr.io/echoping07/downonly:latest
container_name: downonly
ports:
- "8080:8080"
volumes:
- ./data:/app/data
restart: always运行命令:
docker-compose up -d安装完成后,可以通过以下命令管理服务:
downonly # 呼出可视化管理菜单菜单选项:
1- 启动服务2- 停止服务3- 重启服务4- 查看实时日志5- 在线更新到最新版本6- 卸载程序0- 退出菜单
DownOnly/
├── downonly # 主程序二进制文件
├── main.go # 后端源代码
├── index.html # 前端 WebUI
└── data/ # 数据目录
├── config.json # 用户配置
├── stats.json # 流量统计数据
├── logs.json # 详细日志
├── sys_out.log # systemd 标准输出
└── sys_err.log # systemd 错误日志
默认使用 Apple、Ubuntu 等大厂 CDN 地址,建议修改为运营商自有 CDN。
在 WebUI 的"策略配置"中,每行填入一个下载直链。例如:
http://updates-http.cdn-apple.com/...
https://releases.ubuntu.com/...
https://speed.cloudflare.com/__down?bytes=1000000000
建议下载速度设为 50Mbps ,请根据实际网络情况进行调整
可以设置仅在半夜时段运行,避免和其他设备抢占网络资源。
如果 8080 端口被占用,可以在启动时指定端口:
./downonly 9999 # 使用 9999 端口或修改 main.go 中的 port := "8080" 行。
- ✅ 骁龙 410 棒子 (512MB 内存) - Debian 11
- ✅ 网心云 OEC (2GB 内存) - fnOS 1.1.19
# 检查服务状态
systemctl status downonly
# 查看日志
tail -f /root/downonly/data/sys_err.log
# 检查端口是否被占用
netstat -tuln | grep 8080- 检查系统时间是否正确(
date) - 确认
data/stats.json文件权限正常
- 检查是否有多个实例在运行(
ps aux | grep downonly) - 降低下载速率限制
本项目采用 MIT License 开源。
- 本工具仅用于个人学习编程以及评估宽带网络状况。
- 请在当地法律及运营商协议允许范围内使用。
- 用户需自行承担因异常流量可能引发的运营商风险。
- 作者不对任何因使用本工具导致的直接或间接损失负责。
如果觉得这个项目对你有帮助,请点个 Star ⭐️ 支持一下!