16 KiB
历史记录 / Historical record:ProxyDoctor 是项目旧名。以下旧版本、SHA256、测试数量与路径保留原样,不代表 VPSMaster 新构建已通过;当前范围见 README.md、CURRENT_STATUS.md 和新包同 SHA256 验收报告。
VPS 综合检测工具——完整开发与工程优化任务书
0. 项目背景与最终目标
我正在独立开发一个基于 Python 的开源 VPS 综合检测工具,主要面向中文 VPS 社区及 Linux 初学者。
当前已有初步完成的功能:
- Linux 发行版、内核、CPU、内存、磁盘等基础信息检测。
- Traceroute 路由跟踪及终端显示。
- 现有代码已在 Ubuntu 22.04 Server 和 Ubuntu 24.04 Desktop 虚拟机环境中进行过测试。
以上完成情况是我的阶段性描述,请通过实际代码和测试重新核实,不能仅凭我的描述认定全部测试通过。
本项目的目标不是简单复制其他 VPS 检测脚本,而是开发一个:
自主实现为主、安全透明、功能完整、结果准确、适合小白、可长期维护,并能被未来 FlexMaster 项目调用的 VPS 综合诊断工具。
项目现阶段只开发 Python CLI 检测工具,不开发代理部署功能和 Web UI。
未来 FlexMaster 将复用本项目的检测核心,但二者作为独立项目维护。
1. 开发原则(最高优先级)
- 自主实现优先。 能够通过 Python 标准库或成熟 Python 依赖完成的功能,优先自主编写。
- 保留已有成果。 不推倒重来,不重复开发已经稳定实现的本机检测与 Traceroute。
- 避免重复造轮子。 对磁盘基准、专业网络吞吐和高级路由诊断,可调用 fio、iperf3、mtr 等成熟工具。
- 合法利用外部资源。 对地理位置、ASN、IP 风险、信誉信息等本机无法独立获取的数据,可使用合法的第三方 API 或数据库。
- 源码借鉴必须合法。 先检查 LICENSE、版权声明及第三方依赖许可,不未经确认直接复制 GPL/AGPL 项目的实现代码。
- 检测结果必须真实。 不伪造延迟、丢包、IP 纯净度、流媒体解锁状态或测速结果。
- 默认安全。 普通检测只读;性能、磁盘写入、持续测速及较大流量测试必须明确提示并取得用户确认。
- 单模块故障隔离。 外部 API、网络、权限或依赖出错时,不能导致整个程序崩溃。
- 结构化优先。 检测逻辑、数据模型、CLI 输出、报告导出相互解耦。
- 面向小白。 最终实现一条命令启动,中文输出清楚,提供英文选项,并解释结果含义。
- 以证据判定完成。 每个任务必须有对应实现、测试记录及验收说明。
- 不得擅自执行高风险动作。 不自动修改 SSH、防火墙、路由、DNS、系统网络配置,不部署代理,不向外上传完整报告。
2. 需要解决的全部功能问题
请对以下十一类功能进行逐项审查、设计、实现及测试。
要求建立完整的问题追踪表,记录每项的状态:
- 已实现且通过测试
- 已实现但有缺陷
- 部分实现
- 尚未实现
- 外部条件不足,待实机验证
- 不适用,并说明原因
第一类:VPS 本机与硬件检测
- 准确识别 Linux 发行版、内核、CPU 架构及虚拟化类型。
- 识别 CPU 型号、核心数、频率及实际资源配额。
- 检测内存、Swap、磁盘容量与资源限制。
- 检测 CPU steal、内存压力、资源争用。
- 实现可重复、可比较的 CPU 性能基准。
- 检测磁盘吞吐、IOPS、读写延迟,严格限制磁盘写入和占用。
- 支持用户输入购买规格,并对比实际可见配置;无法核实时明确说明。
第二类:基础网络与 DNS
- 检测公网 IPv4、IPv6、默认路由和网络接口。
- 分别验证 IPv4/IPv6 外网连通性。
- 测量 DNS 解析时间、成功率和错误类型。
- 区分 DNS、网络路径及目标服务故障。
- 测试 TCP 连接、TLS 握手与 UDP 连通性。
- 检查 MTU/PMTU、双栈异常与 IPv6 连接问题。
- 正确处理 NAT、容器、多网卡环境,避免误判公网出口。
第三类:Traceroute、BGP 与线路分析
- 保留现有 Traceroute 核心代码并完善。
- 支持可行的 ICMP、UDP、TCP 探测方式。
- 显示逐跳 IP、RTT、超时及具有明确统计依据的丢包数据。
- 查询逐跳 ASN、运营商、推测地区。
- 避免将不响应的路由器错误判断为线路故障。
- 避免将单个中间节点的高延迟直接认定为拥堵。
- 检测中国电信、联通、移动相关线路特征。
- 支持 BGP、上游网络与 ASN 信息分析。
- 明确区分 VPS → 中国与中国 → VPS 的测试方向。
- 地理位置只显示推测结果,不声称是真实物理线路。
- 无中国侧测试节点时,不伪造中国到 VPS 的去程检测。
第四类:IP 地理位置、纯净度与信誉
- 查询国家、地区、城市、ASN、运营商。
- 识别住宅、机房、移动网络等 IP 分类。
- 查询代理、VPN、Tor 及相关风险标签。
- 支持多个数据源交叉验证与冲突提示。
- 查询公开黑名单、DNSBL、邮件信誉。
- 检测 PTR 等 DNS 邮件相关信息。
- 不使用缺乏依据的绝对“纯净度分数”。
- 处理 API 限速、失效、付费要求和服务条款。
- 每条结果记录来源、查询时间、可信度及限制。
第五类:流媒体与在线服务可用性
- 检测 Netflix、Disney+、YouTube 等服务。
- 检测 ChatGPT 等在线服务的网络与地区可用性。
- 区分网络可达、地区识别、受限、需要登录、无法确认及实际播放成功。
- 检测 DNS、TLS、HTTP 错误及服务端限制。
- 禁止将 HTTP 200 直接判定为成功解锁。
- 处理网站检测规则变化、反爬限制和误报。
- 明确声明账号权限、订阅资格和实际播放能力可能无法自动验证。
- 支持用户自定义合法检测目标。
- 不尝试绕过账号验证、反爬或访问限制。
第六类:多地区测速与长期稳定性
- 研究可信的全球及中国不同运营商测试节点。
- 测量延迟、抖动、丢包、下载和上传速率。
- 严格区分测试方向、节点地理位置与节点运营商。
- 限制带宽、并发、执行时间及流量消耗。
- 识别测试节点瓶颈,避免假性低速。
- 支持可中断的 24/48 小时低负载监测。
- 分析晚高峰性能劣化、间歇性断线、突发丢包。
- 关联 CPU steal、内存压力及网络质量的时间变化。
- 中断监测时安全退出并保留已有数据。
第七类:基础安全体检
- 只读检查 SSH 配置和潜在高风险认证方式。
- 检查监听端口及可能暴露的服务。
- 识别系统防火墙状态,说明云安全组无法从本机完整确认。
- 检查系统更新状态及基础安全设置。
- 检测重要文件权限风险。
- 避免把正常业务配置直接定义为漏洞。
- 提供有依据的修复建议,但不自动执行。
- 避免泄露密码、Token、私钥及其他敏感信息。
第八类:报告、诊断与历史记录
- 设计统一的结构化检测结果 Schema。
- 区分成功、失败、跳过、不支持和无法判断。
- 保存检测时间、方法、来源、错误与置信度说明。
- 将技术指标转换成普通用户能理解的中文解释。
- 提供基于规则和真实测量结果的诊断建议。
- 支持本地 JSON、Markdown 报告,必要时提供 HTML。
- 对分享用报告进行脱敏。
- 上传失败、断网或意外退出时不丢失已有报告。
- 支持历史记录及不同时间、不同服务器的对比。
- 生成 VPS 购买验收报告,区分实际测量与用户提供的购买规格。
- 不生成未经校准的绝对性能评分。
第九类:安装、兼容性与用户体验
- 实现面向小白的一键安装与运行。
- 检查 Python 版本、依赖及权限。
- 使用虚拟环境隔离依赖,不污染系统 Python。
- 优先兼容 Ubuntu 22.04 Server、24.04 Desktop。
- 评估其他发行版、容器、ARM/x86 架构兼容性。
- 提供中文和英文输出,处理终端编码问题。
- 尽可能支持非 root 检测。
- 缺少依赖时友好提示、降级或跳过。
- 提供帮助、参数说明、更新、卸载和离线说明。
- 安装脚本可审查,采用可信来源及版本固定/完整性验证。
- 不要求用户盲目执行来源不明的 curl | bash。
第十类:可靠性、隐私与自动化测试
- 验证默认检测确实不修改系统配置。
- 区分普通检测与高负载、有写入的基准测试。
- 对运行时间、CPU、磁盘、流量设置安全上限。
- 处理超时、网络失败、权限错误和依赖缺失。
- 保证模块故障隔离。
- 处理 Ctrl+C、安全取消与临时文件清理。
- 防止命令注入、路径问题、终端控制字符污染和敏感日志泄露。
- 使用 Mock、单元测试、集成测试和异常场景测试。
- 在两种 Ubuntu 虚拟机及真实 VPS 上验证。
- 建立安全的社区错误反馈方式。
- 检查第三方许可证、依赖安全和 API 使用条款。
第十一类:开源维护与未来 FlexMaster 集成
- 每个检测模块既能由 CLI 使用,也能通过 Python API 调用。
- 检测核心与终端 UI 解耦。
- 为未来 FlexMaster 设计稳定、可复用的接口。
- 完善 README、安装说明、贡献指南及测试文档。
- 提供标准 GitHub Issue 模板和脱敏日志机制。
- 明确支持系统、已知问题和未验证环境。
- 建立外部贡献代码审查与自动化测试规范。
- 为开源发布准备合适的 LICENSE、依赖声明及第三方版权通知。
3. 参考成熟项目,但不能直接拼接它们
请实际阅读以下 GitHub 仓库的相关源码、目录结构、检测逻辑和许可证文件:
-
NodeQuality
https://github.com/LloydAsp/NodeQuality -
OneClickVirt
https://github.com/oneclickvirt/oneclickvirt
重点研究:
- YABS:fio、iperf3、基准流程及结构化结果。
- Backtrace:三网回程、ASN、线路识别。
- 融合怪:多模块综合检测与功能覆盖。
- NodeQuality:环境隔离、报告组织、异常恢复。
- OneClickVirt:自动化工程组织及兼容性测试。
必须实际检查相关源码,不仅阅读 README。
每项借鉴方案要说明:
- 项目与源码链接
- 具体文件、函数或调用入口
- 采用何种实现方式
- 采用原因
- 许可证及版权义务
- 可能涉及的 API 条款或费用
- 安全风险及兼容性问题
如果可以自主开发,请优先自主实现。确需借助已有项目时,优先选择通过公开接口、系统命令或兼容许可证的独立依赖实现。
不要未经授权复制 GPL/AGPL 代码;不要认为调用外部程序就自动豁免全部许可证义务。必要时明确标记为待确认。
4. 与现有竞品的竞争策略
请参考融合怪和 NodeQuality 的功能覆盖,但不要只追求更多测试项目。
我们的重点竞争优势为:
A. Safe by Default
- 只读优先
- 低负载模式
- 资源限制
- 错误隔离
- 数据本地优先
- 不修改 SSH、防火墙及网络配置
B. Explain, Not Just Measure
- 用中文说明检测结果
- 提供数据来源和可信度
- 解释风险与异常
- 给出明确的下一步排查建议
- 不编造检测结论
C. Compare Over Time
- 本地检测历史
- 24/48 小时稳定性监测
- 晚高峰异常分析
- 多 VPS 比较
- 购买验收报告
请在竞品研究中区分:
- 竞争项目已经实现的能力。
- 竞争项目部分实现或存在局限的能力。
- 我们能够通过实际工程实现证明的优势。
不允许仅凭宣传描述声称优于竞争项目。
5. 技术架构与实现要求
保持 Python 为核心技术栈。
推荐采用以下逻辑分层,可以根据现有代码合理调整:
- Core:模块调度、配置、数据模型、异常处理。
- Checks:系统、网络、路由、IP、流媒体、安全等检测。
- Benchmarks:CPU、磁盘和吞吐性能基准。
- Providers:外部 API、数据库、测速节点接口。
- Diagnostics:解释规则和异常诊断。
- Reports:JSON、Markdown、HTML、脱敏和历史比较。
- CLI:终端交互、语言切换和进度展示。
- Tests:Mock、单元、集成与回归测试。
要求:
- 模块可以独立运行。
- 外部依赖允许替换。
- 接口返回结构化对象,不依赖解析 CLI 文字。
- 所有网络请求具有明确超时。
- 默认测试不要求 root。
- 高风险或高负载操作使用显式确认机制。
- 使用固定版本或受控版本范围管理依赖。
- 提供稳定的数据格式与错误编码。
- 保持未来与 FlexMaster 的接口兼容性。
6. Work 的执行流程
第一步:代码审查与现状确认
先查看我现有项目代码、Git 状态、测试、依赖和目录。
识别哪些功能已经存在、哪些功能不稳定、哪些功能尚未开发。
不得覆盖已有成果。
第二步:建立问题追踪表
把上面十一类需求全部登记。
为每一项标注:
- 编号及问题描述
- 当前代码位置
- 实际完成状态
- 建议实现方法
- 所需依赖/API
- 测试方法
- 风险及限制
- 完成证据
不要单纯因为某个功能名称出现在代码里就标记完成。
第三步:技术方案与开源研究
针对未实现或不可靠的功能,先比较自主实现、Python 依赖、系统工具及第三方 API 方案。
涉及 GPL/AGPL 代码复制、付费 API、上传用户数据或改变原有架构的重大决定时,先征求我确认。
第四步:逐模块开发
完成代码实现、测试、必要文档和错误处理。
优先复用现有组件,避免一次性进行无关的大规模重构。
第五步:测试与验证
在有权限的隔离测试环境中执行安全测试。
对于 Ubuntu 22.04 Server、24.04 Desktop,以及真实 VPS 的测试,分别记录结果。
没有真实 VPS 环境时,通过 Mock 和有限的本地测试推进,但必须注明尚未实机验证。
禁止擅自在生产 VPS 上运行高负载测试。
第六步:汇总与交付
输出真实完成情况和未解决问题。
不要为了交付而将模拟、跳过或不确定的检测伪装为通过。
7. 需要创建和维护的项目文件
建议在仓库中维护:
PROBLEM_BACKLOG.md:全部问题及实际状态ARCHITECTURE.md:模块架构与数据接口OPEN_SOURCE_RESEARCH.md:开源项目源码研究与许可证分析TEST_PLAN.md:测试场景及验收标准SECURITY.md:安全边界、隐私和漏洞报告CHANGELOG.md:已经完成的实际更新README.md:面向用户的使用说明
如果文件已存在,应审查并更新,不要无故覆盖。
8. 最终验收标准
我希望最终获得的不是只有功能菜单的半成品,而是实际可运行、可信的工具。
验收时需要证明:
- 十一类问题都有明确状态及依据。
- 声称完成的功能具有相应测试证据。
- 常规扫描不会擅自更改服务器网络和安全配置。
- 基准和大流量测试有明确授权及资源限制。
- 一个模块失败不影响其他模块运行。
- 结果可在终端查看、导出并安全保存。
- 第三方数据具有来源和不确定性说明。
- 用户能够理解检测结果及异常原因。
- 项目能够通过合理的安装流程运行。
- 代码模块可被未来 FlexMaster 独立调用。
- 开源借鉴内容具备合法的版权和许可证处理方案。
- 未验证的功能不得宣传为已经完成。
9. 本次工作授权边界
请先完成现有代码审查、问题登记、开源源码研究及架构分析。
完成这些后,在隔离分支中逐模块推进低风险开发和自动化测试,保留原有代码及 Git 历史。
未经我进一步确认,不要执行生产 VPS 测试、安装系统级依赖、修改防火墙/SSH、使用付费 API、上传检测数据、合并主分支或公开发布。
每完成一组实质性工作,请向我汇报:
- 实际完成了什么
- 修改了哪些文件
- 测试通过了哪些项目
- 哪些仍然存在问题
- 下一步建议
最终目标:建立一个具有独立代码价值、可信检测结果、安全工程设计,并能持续维护的 Python VPS 综合诊断工具。