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

augff.jpg

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

安装过程说明:

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

安装完成后:

  • 访问地址: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