Splatoon 2 API 完全参考手册:NintendoSwitchRESTAPI 覆盖 14 个端点的全量调用指南
Splatoon 2 API 完全参考手册:NintendoSwitchRESTAPI 覆盖 14 个端点的全量调用指南
【免费下载链接】NintendoSwitchRESTAPIReverse engineered REST API used in the Nintendo Switch app for iOS. Includes documentation on Splatoon 2's API.项目地址: https://gitcode.com/gh_mirrors/ni/NintendoSwitchRESTAPI
Splatoon 2 API 是《斯普拉遁 2》(Splatoon 2)内置网页应用背后的整套 REST 接口。开源项目 NintendoSwitchRESTAPI 通过逆向工程,将这套 Splatoon 2 API 文档完整整理出来,覆盖 14 个端点,从对战战绩、单人模式、地图排程到祭典排行、在线商店,一应俱全。本文面向新手和普通开发者,用最直白的方式带你认识这 14 个端点的用途、调用顺序与关键字段,是一份可以直接上手的 Splatoon 2 API 参考手册。
什么是 NintendoSwitchRESTAPI?
NintendoSwitchRESTAPI 是一个"逆向工程"开源项目,作者在 iPhone 7(iOS 10.3.3)上安装 Nintendo Switch App 1.0.4 版本,借助 mitmproxy 抓包工具,把 App 与服务器之间的所有请求、响应、认证流程全部记录下来,整理成一套结构化的 REST API 文档。由于该 App 完全没有做证书固定(cert-pinning),抓包过程非常顺利。
项目文档由四部分组成:
- readme.md:总体介绍与 8 步认证流程说明
- NintendoAccountBlueprint.md:Nintendo Account 账号体系接口(登录、令牌)
- SwitchBlueprint.md:Nintendo Switch App 本体接口(账号登录、游戏列表、Web 服务令牌)
- Splatoon2Blueprint.md:核心的 Splatoon 2 API 文档,即本文的主角,共 14 个端点
- Splatoon 2.paw:面向 macOS 用户的 Paw 调试工程,填好环境变量即可直接调试接口
💡 想本地查阅完整文档,可以克隆仓库:
git clone https://gitcode.com/gh_mirrors/ni/NintendoSwitchRESTAPI
调用 Splatoon 2 API 前需要准备什么
在动手调用之前,先备齐下面几样东西,可以少走很多弯路:
- 一个任天堂账号:Splatoon 2 API 的鉴权完全依托 Nintendo Account,账号是硬前提。
- 一份可用的访问凭证:最终通过 8 步认证流程换取一个
iksm_sessionCookie,所有接口都靠它。 - 推荐设置 User-Agent:文档建议所有 Splatoon 2 API 请求统一使用
Mozilla/5.0 (iPhone; CPU iPhone OS 10_3_3 like Mac OS X) AppleWebKit/603.3.8 (KHTML, like Gecko) Mobile/14G60,服务器目前不校验,但"低调"总没错。 - (可选)Paw 工具:macOS 用户可以直接打开 Splatoon 2.paw 工程,填入 Client ID、Login Page Token Code 等环境变量,按顺序执行即可完成鉴权。
Splatoon 2 API 鉴权流程:8 步拿到访问凭证
Splatoon 2 API 的鉴权链路较长,但思路清晰,可以概括为"账号令牌 → 游戏令牌 → 会话 Cookie"三个阶段:
| 步骤 | 动作 | 说明 |
|---|---|---|
| 1 | 浏览器访问授权链接 | 登录 Nintendo Account,从重定向 URL 中提取session_token_code与state |
| 2 | 换取 session token | POST /connect/1.0.0/api/session_token |
| 3 | 换取 service token | POST /connect/1.0.0/api/token,用上一步的session_token |
| 4 | 登录 Switch 账号 | POST /v1/Account/Login,需要id_token及f参数 |
| 5 | 获取游戏列表 | POST /v1/Game/ListWebServices,用webApiServerCredential中的 accessToken |
| 6 | 获取 Splatoon 游戏令牌 | POST /v1/Game/GetWebServiceToken,拿到 Splatoon 2 专属accessToken |
| 7 | 获取会话 Cookie | GET /(首页),携带X-GameWebToken请求头,从Set-Cookie中取iksm_session |
| 8 | 开始调用 14 个端点 | 之后的每个请求都带上步骤 7 拿到的 Cookie |
其中最容易卡住的是第 4 步的f参数,它由 App 客户端生成,目前只能通过 mitmproxy 从真机抓取,具体可参考 SwitchBlueprint.md 中的说明。
Splatoon 2 API 14 个端点全览
拿到 Cookie 之后,Splatoon 2 的全部 14 个端点即可按需调用,先看总表:
| 端点 | 方法 | 功能 |
|---|---|---|
| / | GET | 首页,换取会话 Cookie |
| /api/results | GET | 最近 50 场对战记录 |
| /api/results/{battle_number} | GET | 单场对战详情 |
| /api/records/hero | GET | 单人模式(英雄模式)通关数据 |
| /api/schedules | GET | 各模式的地图排程 |
| /api/data/stages | GET | 全部地图(舞台)数据 |
| /api/timeline | GET | 时间线(活动安排) |
| /api/nickname_and_icon | GET | 玩家昵称与头像(支持按 id 查询) |
| /api/festivals/active | GET | 当前进行中的祭典 |
| /api/festivals/{festival_id}/votes | GET | 祭典投票数据 |
| /api/festivals/pasts | GET | 往期祭典列表 |
| /api/festivals/{id}/rankings | GET | 祭典排行 |
| /api/onlineshop/merchandises | GET | 在线商店在售装备列表 |
| /api/onlineshop/order/{item_id} | POST | 下单购买指定装备 |
这些端点的完整请求/响应示例(含大量 JSON 样例)都在 Splatoon2Blueprint.md 中,按目录跳转即可对照查阅。
按功能分类详解端点
对战战绩查询接口
对战数据是 Splatoon 2 API 使用频率最高的一类:
- GET /api/results:返回最近 50 场比赛,每条记录包含胜负(
my_team_result)、模式(game_mode,如 regular / gachi)、规则(rule,如涂地、占地对战)、地图、武器、玩家段位(udemae)等;响应末尾还附有summary汇总(胜率、平均击杀等)。 - GET /api/results/{battle_number}:用结果列表里的
battle_number字段,查询单场对战的完整详情,包括双方全部玩家的装备、技能(主技能 + 副技能)、击杀/助攻/阵亡数据。
单人模式记录接口
- GET /api/records/hero:返回英雄模式(单人战役)的关卡通关进度,包括
stage_infos中各关卡的通关时间、武器、Boss 关卡标记,以及总通关率等summary数据。
排程与地图数据接口
- GET /api/schedules:返回当前与未来的模式排程,覆盖普通对战、真格、联赛等,每条排程给出起止时间、规则以及两张地图(
stage_a/stage_b)。想做"换图提醒"或"排程日历"工具,这个接口是核心数据源。 - GET /api/data/stages:返回全部地图的静态数据(id、名称、图片地址),适合用于本地建索引。
时间线与玩家资料接口
- GET /api/timeline:返回活动时间线,可了解当前开放的模式与活动安排。
- GET /api/nickname_and_icon:查询玩家昵称与头像,支持传入
id参数查询指定玩家,适合做对战记录中的玩家信息展示。
祭典数据接口(4 个)
祭典(Splatfest)是 Splatoon 2 的招牌活动,API 专门提供了 4 个端点:
- GET /api/festivals/active:当前进行中的祭典信息
- GET /api/festivals/{festival_id}/votes:指定祭典的投票分布数据
- GET /api/festivals/pasts:往期祭典回顾
- GET /api/festivals/{id}/rankings:祭典期间的个人/队伍排行
在线商店与下单接口
- GET /api/onlineshop/merchandises:在线商店当前在售的全部装备(头饰、衣服、鞋子),包含价格、稀有度、品牌与附加技能。
- POST /api/onlineshop/order/{item_id}:对指定商品下单购买,是所有端点中唯一的写操作,可用于开发"每日限购提醒"类工具。
响应数据结构速览
Splatoon 2 API 返回的 JSON 结构层级清晰,几个高频字段值得先熟悉:
battle_number:对战编号,单场详情查询的入参udemae:玩家段位,含name(如 B、B+)与numbergame_mode/rule:模式与规则,均含key(代码)与name(显示名)stage:地图对象,含 id、名称与图片weapon:武器对象,含主武器、副武器(sub)与特殊武器(special)player_result:本人战绩,含击杀、助攻、阵亡、涂地面积my_team_result/other_team_result:胜负结果(victory / defeat)
常见问题 FAQ
问:第 4 步的f参数怎么生成?答:目前官方 App 之外的途径暂时无法生成,最稳妥的方式是手机装好 Switch App,用 mitmproxy 抓取一次登录请求,从请求体中提取f参数后缓存复用。
问:一定要用美区账号、英文语言吗?答:文档是基于美区 + 英文环境测试的,其他地区可能存在细微差异,但整体接口结构一致。
问:调用频率有限制吗?答:文档未提及限流,但建议请求带上推荐的 User-Agent,并控制合理的调用节奏,避免给服务器造成压力。
结语
NintendoSwitchRESTAPI 这份开源文档把 Splatoon 2 API 的 14 个端点、认证链路和数据结构完整还原,是研究任天堂 App 接口或开发 Splatoon 2 数据工具的绝佳起点。无论是想拉取自己的对战战绩、监控地图排程,还是做祭典排行分析,照着本文的顺序一步步来,都能快速跑通。更多细节(每个端点的完整 JSON 示例)可直接查阅项目内的 Splatoon2Blueprint.md 与 Splatoon 2.paw 工程。
【免费下载链接】NintendoSwitchRESTAPIReverse engineered REST API used in the Nintendo Switch app for iOS. Includes documentation on Splatoon 2's API.项目地址: https://gitcode.com/gh_mirrors/ni/NintendoSwitchRESTAPI
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
