跳到主要内容

API 使用说明

本站开放 9 个只读 JSON 端点,覆盖镜像条目、PE 工具、启动快捷键、 常识问答与文章频道。全部端点无需密钥、 支持跨域(CORS *),抓取即用。

端点 9 个 镜像 256 条 文章 2017 篇 快捷键 68 条

通用约定

  • 只读:全部端点均为静态 GET,无参数、无鉴权、无写操作。
  • 跨域:响应头含 Access-Control-Allow-Origin: *,浏览器端可直接 fetch,无需代理。
  • 路径约定:各端点返回的 url / u 字段均为 站内相对路径(以 / 开头), 拼接站点根域即得完整 URL。
  • 数据版本:随站点构建更新,无版本协商机制; 字段发生不兼容变更时递增 index.json 的 version。
  • 空值:缺失的可选字段统一为空字符串或空数组,不为 null。
/api/index.json application/json

API 目录

入口文件:一次拿到全部端点清单、条目数、许可与归因信息。接入前先读它。

返回结构: 对象(Object)

字段 类型 说明
name string 数据集名称,如「装机系统库 API」。
version string API 版本号,当前 1.0。字段结构变更时递增。
description string 数据集一句话说明。
license string 许可协议(CC BY-NC 4.0)及其适用范围。
attribution string 归因要求:引用时需保留的来源标注。
generatedAt string 本次构建时间(ISO 8601 UTC),可用于判断缓存是否过期。
endpoints array 端点清单,元素字段见下表。

调用示例

              const index = await (await fetch('https://msdn.lopins.cn/api/index.json')).json();
for (const e of index.endpoints) {
  console.log(e.path, e.count, e.title);
}
            
  • 用 generatedAt 判断本地缓存是否需要刷新。
/api/mirrors.json application/json 256 条

镜像条目

全量官方原版镜像元数据:文件名、体积、发布日期、四类哈希、下载点与版本页归属。

返回结构: 数组,元素为镜像条目对象

字段 类型 说明
id string 稳定唯一标识(分类 + 文件名去扩展名),可用于去重与增量比对。
title string 条目显示名。
section string 二级分类名,如「Windows 11 26H2」。
version string 所属版本页 slug,如 windows-11-26h2。
group string 一级分类 key:windows / office / pe / linux / sqlserver / tools。
file string 镜像文件名。
size string 文件体积(原样文本,含单位)。
date string 发布日期。
platform string 平台标识,如 x64。
arch string[] 架构标签数组,由 tags 中匹配架构词得出,可能为空数组。
edition string 版本类型标签(如「企业版」),无匹配时为空字符串。
desc string 版本用途说明。
note string 注意事项(硬件要求、支持到期、授权边界等)。
tags string[] 原始标签数组(架构、版本类型、语言等)。
md5 string MD5 校验值,无值时为空字符串。
sha1 string SHA1 校验值,无值时为空字符串。
sha256 string SHA256 校验值,无值时为空字符串。
sm3 string SM3 校验值,无值时为空字符串。
downloads array 下载点数组,元素为 { name, href };不含夸克网盘,优先含官方渠道。
url string 站内详情页路径(以 / 开头的相对路径)。

调用示例

              const mirrors = await (await fetch('https://msdn.lopins.cn/api/mirrors.json')).json();

// 只要 Windows 11 26H2 且带 SHA256 校验的条目
const win1126h2 = mirrors.filter(
  (m) => m.version === 'windows-11-26h2' && m.sha256,
);

// 取官方渠道下载点(name 含「官方」)
const official = win1126h2.flatMap((m) =>
  m.downloads.filter((d) => d.name.includes('官方')),
);
            
  • 四类哈希可能为空字符串,做校验比对时请先判空。
  • downloads 的 href 指向第三方地址,请自行加 nofollow 且不要高频代理抓取。
/api/pe.json application/json 15 条

PE 维护工具

PE 维护系统工具清单:特点、使用提示、文件校验值与下载点。

返回结构: 数组,元素为 PE 工具对象

字段 类型 说明
slug string 工具标识,如 rufus、ventoy。
title string 工具显示名。
tags string[] 特性标签数组。
intro string[] 介绍段落数组,每项一段。
features string[] 特点条目数组。
tips string[] 使用提示条目数组。
files array 文件数组,元素为 { file, size, md5, sha1, sha256 }。
downloads array 下载点数组,元素为 { name, href }。
note string 备注与风险提示。
url string 站内详情页路径。

调用示例

              const tools = await (await fetch('https://msdn.lopins.cn/api/pe.json')).json();

// 找支持 UEFI + Legacy 双模式写入的启动盘工具
const bootTools = tools.filter((t) =>
  t.features.some((f) => /UEFI|Legacy/i.test(f)),
);
            
/api/hotkeys.json application/json 68 条

U盘启动快捷键

品牌机型 → U 盘启动快捷键与 BIOS 入口键,按机型类型分组。

返回结构: 数组,元素为机型类型对象(含 brands 子数组)

字段 类型 说明
type string 机型类型标识(分组键)。
label string 机型类型显示名,如「笔记本品牌」。
brands array 机型数组,元素字段见下表。
brands[].name string 品牌 / 机型名。
brands[].key string U 盘启动快捷键,如 F12。
brands[].bios string | null 进入 BIOS 的按键,无记录时为 null。
brands[].source string 数据来源标注:verified(厂商或原站核对)/ common(行业通识)。

调用示例

              const hotkeys = await (await fetch('https://msdn.lopins.cn/api/hotkeys.json')).json();

// 拉平所有机型,按快捷键归组
const byKey = {};
for (const group of hotkeys) {
  for (const b of group.brands) {
    (byKey[b.key] ??= []).push(b.name);
  }
}
console.log(byKey.F12);
            
  • source 为 common 的条目来自行业通识,BIOS 版本差异可能导致实际按键不同,建议以开机画面提示为准。
/api/articles.json application/json 2,017 条

系统常识与常见问题

全部 2017 篇文章的元数据(常识 + 问答),不含正文。

返回结构: 数组,元素为文章对象

字段 类型 说明
id string 文章标识(Markdown 文件名去扩展名)。
kind string 所属集合:knowledge(系统常识)/ faq(常见问题)。
title string 文章标题。
description string 文章摘要。
tags string[] 标签数组。
keywords string[] 关键词数组(SEO 词)。
published string 发布日期(YYYY-MM-DD)。
updated string 更新日期(YYYY-MM-DD);未标更新时为空字符串。
url string 站内文章页路径。

调用示例

              const articles = await (await fetch('https://msdn.lopins.cn/api/articles.json')).json();

// 按标签筛出 SQL Server 相关问答
const sqlFaq = articles.filter(
  (a) => a.kind === 'faq' && a.tags.some((t) => /SQL/i.test(t)),
);
            
  • 本端点只含元数据,正文请访问站内文章页(url 字段对应路径)。
/api/sections.json application/json 39 条

版本页清单

版本页(二级分类)清单:版本标识、名称、所属分类、用途介绍与条目数。

返回结构: 数组,元素为版本页对象

字段 类型 说明
slug string 版本页标识,如 windows-11-26h2。
name string 版本页名称。
group string 所属一级分类 key。
intro string 版本用途介绍;部分版本无介绍时为空字符串。
entries number 该版本页下的镜像条目数。
url string 站内版本页路径。

调用示例

              const sections = await (await fetch('https://msdn.lopins.cn/api/sections.json')).json();

// 找条目数最多的 10 个版本页
const top = sections
  .sort((a, b) => b.entries - a.entries)
  .slice(0, 10);
            
/api/groups.json application/json 6 条

一级分类

站点一级分类清单:Windows / Office / PE / Linux / SQL Server / 实用工具。

返回结构: 数组,元素为分类对象

字段 类型 说明
key string 分类 key:windows / office / pe / linux / sqlserver / tools。
label string 分类显示名。
desc string 分类覆盖范围说明。
url string 站内分类页路径。

调用示例

              const groups = await (await fetch('https://msdn.lopins.cn/api/groups.json')).json();
console.log(groups.map((g) => g.label).join(' / '));
            
/api/channels.json application/json 10 条

文章频道

10 个产品域频道及其文章归属清单,可用于按主题重建文章导航。

返回结构: 数组,元素为频道对象

字段 类型 说明
slug string 频道标识,如 windows-11。
title string 频道显示名。
domain string 内容规划域编号(K1–K10)。
knowledge number 该频道的系统常识篇数。
faq number 该频道的常见问题篇数。
total number 该频道文章总数。
url string 站内频道页路径。
articles array 归属文章数组,元素为 { kind, id, url }。

调用示例

              const channels = await (await fetch('https://msdn.lopins.cn/api/channels.json')).json();

// 按频道列出全部文章链接
for (const c of channels) {
  console.log(c.title, c.total);
  c.articles.forEach((a) => console.log('  ', a.url));
}
            
/api/search.json application/json 2,288 条

搜索索引

站内搜索页所用的精简索引,覆盖镜像、PE 工具与全部文章,字段为单字母缩写以压缩体积。

返回结构: 数组,元素为精简索引对象

字段 类型 说明
t string 标题(title)。
f string 副文本:镜像为文件名,PE 为文件名,文章为摘要。
s string 所属版本 / 分组名。
u string 站内路径(相对路径)。
g string 分组 key:windows / office / pe / linux / sqlserver / tools / knowledge / faq。
k string[] 搜索关键词:镜像与 PE 为 tags,文章为 tags + keywords 合并。
y string 条目类型:mirror / pe / knowledge / faq。

调用示例

              const index = await (await fetch('https://msdn.lopins.cn/api/search.json')).json();

// 简易前端搜索:标题命中优先
const q = 'ghost';
const hits = index
  .filter((d) => (d.t + d.f + d.k.join(' ')).toLowerCase().includes(q))
  .sort((a, b) => (a.t.includes(q) ? -1 : 1) - (b.t.includes(q) ? -1 : 1));
            
  • 字段为单字母缩写是刻意压缩体积(约 200KB),不适合直接当业务数据源,请用 mirrors / articles 等专用端点。

使用约定与许可

  • 数据为静态 JSON,随站点构建更新;请保留来源标注(装机系统库 + 上游 lm40.com)。
  • 许可为 CC BY-NC 4.0:可自由用于非商业用途,转载需注明来源;商业用途需另行授权。
  • 镜像版权归 Microsoft 及各发行商所有,下载请走各条目标注的下载点或官方渠道。
  • 文章端点仅含元数据,不含正文;正文请访问站内文章页。
  • 请勿高频全量拉取(每次请求均落至 CDN);按需请求分类端点即可,并缓存本地。