DownOnly:用无害下载流量平衡你的宽带上下行

一款专为增加下行流量设计的轻量级工具,零磁盘写入、低内存占用,帮你规避运营商的 PCDN 误判。

家里有 NAS 跑 PT 或者做上传服务的朋友,大概率遇到过这种情况:宽带突然被限速,或者接到运营商电话,说你涉嫌"商业 PCDN 经营"。原因很简单——你的上行流量远大于下行,触发了运营商的风控模型。

DownOnly 就是为了解决这个问题而生的。它在设定的时间窗口内从公开源下载数据,然后直接丢弃,制造真实但无害的下行流量,把上下行比例拉回正常范围。

核心思路:不伪造数据、不修改流量统计,而是产生真实的 HTTP 下载行为。运营商看到的就是正常用户的下载流量。


为什么做这个

当前宽带运营环境下,NAS 用户、PT 玩家、自建服务用户由于上传流量与下载流量比例异常,容易被运营商的大数据算法误判为"商业 PCDN"行为,后果包括被限速甚至停网、强制签保证书、频繁接到"警告"电话。

DownOnly 的立场很明确:不推荐浪费公共网络资源,但也不希望合法合规的行为被套上莫须有的罪名。


设计原则

整个项目围绕一个目标:跑了跟没跑一样

  • 零磁盘写入:所有下载数据直接写入 io.Discard,不产生任何磁盘 I/O。对闪存设备(棒子、电视盒子)完全友好,不损耗 eMMC 寿命。
  • 极低资源占用:运行内存 6-15MB,进程优先级 nice 19(Linux 最低),GOGC=200 减少 GC 频率。512MB 内存的设备也能流畅运行,不会跟你的 PT 客户端抢资源。
  • 不影响其他服务:低优先级运行,带宽可限速,时间窗口可配置。

核心能力

智能调度

  • 自定义每日运行时间段(支持跨午夜),比如只在凌晨 2 点到 6 点跑
  • 每日流量限额区间随机化,避免每天流量一模一样被识别
  • 两次下载之间随机休息,也可禁用休息实现连续下载
  • 程序重启后自动恢复上次运行状态

流量伪装

  • 内置 4 种主流浏览器 User-Agent 自动轮换
  • 多下载源随机切换,单源失败自动重试,全部失败进入休息
  • 流量特征接近正常用户浏览行为

安全防护

  • 默认仅允许局域网访问 WebUI,需手动开启公网访问
  • 下载地址校验:禁止内网/私有地址,DNS 解析后二次校验防止 DNS Rebinding
  • 优雅退出:捕获 SIGINT/SIGTERM,退出前自动保存所有数据

监控与审计

  • 实时 Mbps 速率统计 + 30 秒折线图
  • 按日记录流量并以柱状图展示,支持按月查看历史
  • 日志按天归档,每日上限 1000 条,自动清理 7 天前过期日志
  • 数据自动归档本年度,跨年自动清理

WebUI

  • 深色/浅色模式,自动跟随系统主题
  • 响应式设计,手机、平板、PC 均可操作
  • 所有配置网页端实时修改,无需重启
  • 下载地址管理:添加/删除/批量测试可达性
  • 日志查看器:按日期切换,实时自动刷新

技术栈

项目 说明
语言 Go 1.22+
前端 单文件 HTML(embed 嵌入二进制)
部署 systemd / Docker / 一键脚本
平台 Linux(x86_64 / ARM64 / ARMv7 / ARMv6)
镜像 GHCR + Docker Hub

已测试设备

设备 内存 系统 备注
骁龙410棒子 512MB Debian 11 内存占用约 6MB,完全无压力
网心云 OEC 2GB fnOS 1.1.19 Docker 部署,稳定运行

部署与使用

项目提供一键安装脚本、Docker 部署和手动编译三种方式,详细的部署步骤、配置参数说明、API 文档和故障排查指南都在仓库 README 中。

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

安装完成后访问 http://设备IP:8080 即可进入 WebUI 管理。


免责声明

DownOnly 仅用于个人学习和研究目的。它产生的是真实下载流量,不涉及任何数据伪造或网络攻击行为。请合理使用,因使用本工具产生的一切后果由使用者自行承担。


项目地址:https://github.com/EchoPing07/DownOnly

有问题欢迎提 Issue,也欢迎 Star 支持。

使用 Hugo 构建
主题 StackJimmy 设计