Skip to content

一款专为增加下行流量设计的轻量级工具

Notifications You must be signed in to change notification settings

EchoPing07/DownOnly

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

14 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

DownOnly

一款专为增加下行流量设计的轻量级工具

Go Version License Platform


📖 项目背景

在当前宽带运营环境下,许多 NAS 用户、PT 玩家或自建服务用户 由于上传流量与下载流量比例异常,容易被运营商的大数据算法误判为"商业 PCDN"行为,导致:

  • 🚫 被限速甚至停网
  • 📝 强制要求签订保证书
  • 📞 频繁接到"警告"电话

DownOnly 通过产生真实但"无害"的下载流量,在不损耗硬件寿命的前提下,平衡你的宽带上下行比例,规避运营商的弱智判断算法。

声明:我不推荐任何浪费公共网络资源的行为,但也不希望自身合法合规的行为被套上莫须有的罪名。


✨ 核心特性

🛡️ 零损耗设计

  • 黑洞机制:采用 io.Discard 技术,下载数据在内存中直接丢弃,0 磁盘写入
  • 闪存友好:保护 eMMC、SSD 等存储介质的硬件寿命
  • 低内存占用:运行时仅占用 6-15MB 内存,512MB 设备也能流畅运行

📊 专业审计系统

  • 实时监控:Mbps 级速率统计 + 秒级折线图
  • 流量统计:按日记录流量并以柱状图展示,支持按月查看历史
  • 数据持久化:自动归档年度数据

🧠 智能调度引擎

  • 时间窗口:自定义每日运行时间段(如仅在 18:00 - 23:00 运行)
  • 限额保护:设置每日流量封顶值,达到后自动待机
  • 伪装技术:随机化 User-Agent + 多源轮换,模拟正常用户行为

🎨 现代化 WebUI

  • 深色/浅色模式 自由切换
  • 响应式设计:完美适配手机、平板、PC
  • 交互友好:所有配置可在网页端实时修改,无需重启

🚀 部署指南

方式一:一键安装(推荐)

适用于 Linux 系统(x86_64 / ARM64),自动处理所有依赖和配置。

curl -fsSL https://raw.githubusercontent.com/EchoPing07/DownOnly/main/install.sh | bash

安装过程说明:

  1. 自动检测系统架构
  2. 从 GitHub Release 下载预编译文件(若无则本地编译)
  3. 配置 systemd 服务
  4. 安装管理脚本到系统

安装完成后:

  • 访问地址:http://你的设备IP:8080
  • 管理命令:直接输入 downonly 呼出管理菜单

方式二:手动部署

1. 前置准备

检查端口占用(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

2. 编译程序

# 克隆仓库
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

3. 配置系统服务

# 创建 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

4. 访问 Web 界面

在浏览器中输入:http://你的设备IP:8080


方式三:Docker 部署

Docker Run 运行:

docker run -d \
  --name downonly \
  -p 8080:8080 \
  -v /opt/downonly/data:/app/data \
  --restart always \
  ghcr.io/echoping07/downonly:latest

Docker 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 错误日志

🛠️ 进阶配置

1. 修改下载源

默认使用 Apple、Ubuntu 等大厂 CDN 地址,建议修改为运营商自有 CDN。

在 WebUI 的"策略配置"中,每行填入一个下载直链。例如:

http://updates-http.cdn-apple.com/...
https://releases.ubuntu.com/...
https://speed.cloudflare.com/__down?bytes=1000000000

2. 限速策略建议

建议下载速度设为 50Mbps ,请根据实际网络情况进行调整

3. 时间窗口设置

可以设置仅在半夜时段运行,避免和其他设备抢占网络资源。

4. 端口修改

如果 8080 端口被占用,可以在启动时指定端口:

./downonly 9999  # 使用 9999 端口

或修改 main.go 中的 port := "8080" 行。


🖥️ 已测试设备

  • ✅ 骁龙 410 棒子 (512MB 内存) - Debian 11
  • ✅ 网心云 OEC (2GB 内存) - fnOS 1.1.19

🔧 故障排查

1. 无法访问 WebUI

# 检查服务状态
systemctl status downonly

# 查看日志
tail -f /root/downonly/data/sys_err.log

# 检查端口是否被占用
netstat -tuln | grep 8080

2. 流量统计不准确

  • 检查系统时间是否正确(date
  • 确认 data/stats.json 文件权限正常

3. 内存占用过高

  • 检查是否有多个实例在运行(ps aux | grep downonly
  • 降低下载速率限制

⚖️ 开源协议

本项目采用 MIT License 开源。


⚠️ 免责声明

  1. 本工具仅用于个人学习编程以及评估宽带网络状况
  2. 请在当地法律及运营商协议允许范围内使用。
  3. 用户需自行承担因异常流量可能引发的运营商风险。
  4. 作者不对任何因使用本工具导致的直接或间接损失负责。

如果觉得这个项目对你有帮助,请点个 Star ⭐️ 支持一下!

About

一款专为增加下行流量设计的轻量级工具

Resources

Stars

Watchers

Forks