---
title: "方法论 —— VPSLedger 如何验证 VPS 价格"
description: "VPSLedger 如何采集、验证和给 VPS 套餐数据打分：只用官方来源、原生价格优先、只追加的价格观测、验证等级、优惠分公式、汇率快照策略。"
canonical: https://vpsledger.com/zh-hans/methodology/
verified: 2026-09-12
format: text/markdown
html: https://vpsledger.com/zh-hans/methodology/
---

> Markdown alternate of <https://vpsledger.com/zh-hans/methodology/>. Generated at build time from the
> same dataset as the HTML page; prices verified 2026-09-12. Data is a build-time
> snapshot — no live API, no auth. Machine entry point: <https://vpsledger.com/ai/>.

# 方法论

## 价格从哪来

套餐价格、配置和库存状态只取自服务商官方页面和官方价格 API。每行套餐都记录确切的 `source_url` 和 `checked_at` 日期。第三方目录（如 FindHost，CC BY 4.0）只用于服务商级元数据，例如总部所在国、地区和官方网址 —— 从不用于价格。

每次检查都会向只追加的观测日志（`data/price_observations.json`）追加一行：观测从不被编辑或删除，所以历史低价和中位价仅凭 git 就能复现。未通过验证的行进入复核队列（ `data/review-queue.json`，由构建期校验器生成）并被标记等待人工复核 —— 绝不会被静默自动改正。

## 归一化计算

原生价格才是事实：金额、币种和计费周期，与服务商公布的完全一致。为了排序和跨套餐比较，我们另外推导一个月均等值：

```
monthly_equivalent = native_price / billing_period_months × fx_rate(currency → USD)
```

计算示例 —— RackNerd 1 GB KVM VPS，$21.99/年：

```
$21.99 / 12 months × 1.00 (USD) = $1.8325/mo → displayed as "≈ $1.83/mo"
```

任何换算值都带「≈」标记。我们从不把原生周期价直接显示成「/mo」—— $21.99/year · ≈ $1.83/mo，绝不用「$21.99/mo」作为年付价格的标签。

## 续费与今日应付的语义

**今日应付** 是买家结账时为首期实际支付的金额。它是记录下来的数据，从不计算得出：$1.99/mo 按年计费的套餐记录今日应付 = $23.88（12 × 1.99），而 $21.99/year 的套餐记录今日应付 = $21.99 —— 周期达到一年或更长时，宣传价就是预付金额。来源没有给出金额时，今日应付显示为 Unknown。

**续费** 是首期之后的价格，有独立的币种和计费周期（`renewal_price`, `renewal_currency`, `renewal_period`）。续费已知时，我们还会相对宣传的月均等值计算续费涨幅 —— 例如 $9.99/mo 首期、$16.99/mo 续费，就是 +70%。续费价未公布时，该行显示 续费：未知；绝不默认等于首期价。

## 验证等级

每个价格都带证据等级。促销页抓到的价格绝不能标成 checkout verified，所以等级链严格，且图标始终与标签并排显示：

- **1. 🟢 结账已验证**: 一笔购买走完了最后的结账步骤，实际扣款金额（含今日应付和安装费）已被记录。最高等级。
- **2. 🔵 官方商店已验证**: 价格取自服务商自己的下单/商店系统（配置器、购物车 API），未登录状态。
- **3. 🔵 官方页面已验证**: 价格取自公开的官方定价页或官方价格 API。当前试点的所有行都处于这一级。
- **4. 🔵 官方促销已核实**: 取自官方促销或活动页。明确不是 checkout verified：促销页宣传的首期价可能随时失效，且不会另行通知。
- **5. 🟡 社区报告**: 由用户或第三方报告。绝不排在官方抓取之上；只在它是唯一证据时展示，并明确标注。
- **6. 🟡 历史数据**: 抓取时已验证、但页面此后更改或消失的价格。仅作历史保留，绝不当作当前价展示。
- **7. ⚪ 未知**: 无法建立证据等级。该行标注 Unknown，并从要求已验证价格的排名中排除。

当前试点的所有行都取自官方定价页和官方 API（🔵 官方页面已验证）；还没有一行走过结账验证。

## Unknown 的含义

Unknown 优于填错。官方来源没有公布的字段，就显示字面量「Unknown」—— 不是空单元格，不是占位符，更不是伪装成数据的猜测。第三方来源与官方页面冲突时，该行暂停发布，直到一次新的官方来源检查解决冲突。会被 Unknown 污染的优惠分组件，也会把这个字段排除在外。

## 优惠分怎么算

优惠分是五个分量的透明加权和，各自归一化到 0–1。「70% OFF」这类商家横幅不参与打分 —— 只有记录下来的观测才算数。

```
deal_score = 0.40 × discount_vs_median
         + 0.25 × historical_low_proximity
         + 0.15 × renewal_penalty
         + 0.10 × spec_value
         + 0.10 × freshness
```

- **discount_vs_median (0.40)**: (median − current) / median，截断到 [0, 1]。奖励当前价低于自身近期观测中位价的套餐。
- **historical_low_proximity (0.25)**: 1 − (current − low) / (high − low)；1 = 处于历史低价，0 = 处于最高价。high = low（只有一条观测）时该分量取 0.5。
- **renewal_penalty (0.15)**: 1 − 续费涨幅比例，截断到 [0, 1]：续费等于首期得 1，续费涨 100% 得 0，续费未知得 0.5。
- **spec_value (0.10)**: 该套餐每 GB 内存的美元价格在全数据集中的排名（1 = 每 GB 最便宜）。内存未知的套餐在该分量得 0。
- **freshness (0.10)**: 该行最近一次检查的时效等级（见下文）：fresh = 1.0，recent = 0.8，needs review = 0.5，stale = 0.2。

数据集里每个套餐只有一条观测时，多数分量都是中性值，总分围绕基线浮动。这是诚实的：只有一个数据点，就还不存在优惠 —— 结构摆在这里，是为了让历史随着复查累积逐渐增强信号。

## 汇率快照策略

美元等值使用手动刷新快照中的近似汇率（`data/fx_rates.json`，日期 2026-09-10）。汇率只用于排序和跨币种比较 —— 每行的原生币种金额永远是权威价格，且每个换算值都标「≈」。快照略旧不影响排序；它绝不会被当成报价。

## 时效等级

一次价格抓取只是对一个随时可能变化的页面的快照，所以每个已验证行都带一个机械计算的时效徽标，由其最近检查日期得出：

- **新 —— ≤ 1 天**: 今天或昨天检查；得 1.0
- **较新 —— ≤ 7 天**: 本周内检查；得 0.8
- **待复核 —— 8–30 天**: 该复查了；得 0.5
- **过期 —— > 30 天**: 所有数字都按历史对待；得 0.2

促销价行显示更严格的一档：过期页面上的折扣价是最不可信的组合，所以徽标永远不会比证据本身更好看。

## 联盟政策

部分链接可能是联盟链接。通过它们购买时，VPSLedger 可能获得佣金，你无需多付一分钱。联盟关系不影响排名和验证：上文的优惠分、排序和验证等级都只由记录的数据计算得出，我们也不接受任何付费位次。

## 构建期生成、版本化管理的数据

整个数据集以 JSON 形式放在公开的 GitHub 仓库里，每次构建都由 zod schema 校验。本站完全静态：构建通过，你看到的数字就是该 commit 里仓库中的数字。
