家里有 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 支持。