DownOnly:专为规避运营商PCDN误判而生的流量消耗工具

DownOnly:专为规避运营商PCDN误判而生的流量消耗工具
解决家庭宽带被运营商误判为PCDN而限速的困扰
项目简介
DownOnly 是一个专为消耗上行/下行流量设计的轻量级工具,通过模拟正常下载行为来"洗白"流量特征,避免被运营商的PCDN检测系统误判。
核心特点
1. 极简部署
- 单文件 + WebUI:编译后只有一个可执行文件,自带美观的网页控制面板
- 一键安装:一条命令即可完成部署
2. 超低资源占用
- 内存占用仅 10MB 左右
- 对NAS、软路由、电视棒等低配置设备极其友好
3. 零磁盘写入
- 下载的数据直接丢弃到
/dev/null - 完全不写硬盘,保护你的SSD/HDD寿命
- 纯粹为了消耗流量而生
4. 可视化报表
- 实时显示下载速率、今日消耗流量
- 柱状图展示每日流量趋势
- 支持深浅色主题切换
- 本月总计流量一目了然
5. 智能调度策略
- 时段控制:可设置每天只在指定时间段运行
- 流量限额:达到每日设定流量后自动暂停
- 行为模拟:随机化下载源地址和User-Agent,模拟真人下载行为
🚀 部署指南
方式一:一键安装(推荐)
适用于 Linux 系统(x86_64 / ARM64),自动处理所有依赖和配置。
curl -fsSL https://raw.githubusercontent.com/EchoPing07/DownOnly/main/install.sh | bash
安装过程说明:
- 自动检测系统架构
- 从 GitHub Release 下载预编译文件(若无则本地编译)
- 配置 systemd 服务
- 安装管理脚本到系统
安装完成后:
- 访问地址:
http://你的设备IP:8080 - 管理命令:直接输入
downonly呼出可视化管理菜单
管理菜单选项:
1- 启动服务2- 停止服务3- 重启服务4- 查看实时日志5- 更新至最新版本6- 卸载程序0- 退出菜单
方式二:手动部署
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 部署
GHCR 地址:
https://github.com/EchoPing07/DownOnly/pkgs/container/downonly
Docker Hub 地址:
https://hub.docker.com/r/echoping/downonly
以下模板使用 GHCR 仓库地址演示,且运行镜像请务必携带以下参数,以确保容器与宿主机时区保持一致
-v /etc/localtime:/etc/localtime:ro \
Docker Run 运行:
docker run -d \
--name downonly \
-p 8080:8080 \
-v /opt/downonly/data:/app/data \
-v /etc/localtime:/etc/localtime:ro \
--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
- /etc/localtime:/etc/localtime:ro # 同步宿主机时区
restart: always
运行命令:
docker-compose up -d
📂 目录结构
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" 行。
写在最后
这个工具的诞生源于社区的真实需求,也展示了AI辅助开发的效率。如果你也在为运营商的PCDN误判而烦恼,不妨试试DownOnly。
温馨提示:请合理合法使用,遵守当地网络运营商的相关规定。
Comments