英雄联盟旧版本回放文件下载教程
英雄联盟旧版本回放文件下载教程
英雄联盟的 .rofl 回放文件依赖客户端版本。客户端更新后,旧版本回放可能会显示 incompatible,从而无法通过客户端正常下载或播放。
本文记录一种通过客户端 F12 控制台调用 SGP 回放接口,手动下载旧版本 .rofl 文件的方法。
本文推荐使用 Pengu Loader 打开英雄联盟客户端内置浏览器的 F12 控制台。Pengu Loader 是面向英雄联盟客户端的 JavaScript 插件加载器,支持在客户端内使用 Chrome DevTools,也更方便访问 LCU 相关接口。
在安装并启动后,通常可以通过以下快捷键打开客户端 DevTools:
Ctrl + Shift + I
Pengu Loader 文档中也提到,可在客户端内使用 Chrome DevTools,并提供 window.openDevTools() 用于打开内置 DevTools。
注意:
请勿将idToken、leagueToken、mucJwt、Authorization Token等登录态相关内容公开发布或发送给他人。
如果调试过程中不慎复制或公开,建议结束后退出英雄联盟客户端并重新登录。
一、获取目标对局的 gameId
打开英雄联盟客户端并登录账号。
如果已经安装 Pengu Loader,
可以通过 Ctrl + Shift + I 打开客户端内置浏览器的 DevTools,然后进入 Console 控制台。
在 Console 中执行:
1 | const res = await fetch('/lol-match-history/v1/products/lol/current-summoner/matches?begIndex=0&endIndex=20'); |

执行后会列出最近 20 场对局。
找到需要下载的那一局,记录对应的 gameId。
示例:
1 | 40096571**** |
二、获取目标对局的大区 platformId
下载回放文件时,不能只使用 gameId,还需要知道该局所属大区,也就是 platformId。
在 Console 中执行:
1 | console.log(await fetch('/lol-lobby/v1/parties/player').then(r => r.text())); |

在返回内容中查找:
1 | "platformId":"TJ101" |
例如这里的 platformId 为:
1 | TJ101 |
那么该局回放对应的 matchId 应为:
1 | TJ101_40096571**** |
最终保存的文件名可以使用:
1 | TJ101-40096571****.rofl |
platformId 必须与对局所属大区一致。
如果大区填错,SGP 接口通常会返回 NoSuchKey。
三、确认对局所属大区与版本
为了避免 platformId 填错,可以进一步查询目标对局信息:
1 | const gameId = 40096571****; |

重点检查以下字段:
1 | platformId |
如果玩家信息中均显示:
1 | platformId: TJ101 |
即可确认该局属于 TJ101。
同时可以关注 gameVersion 字段。
例如目标对局版本为 16.10,而当前客户端已经更新到 16.11,客户端就可能将该回放标记为不兼容。
四、通过 SGP 接口下载 .rofl 文件
确认 gameId 与 platformId 后,即可通过 SGP 回放接口下载 .rofl 文件。
需要修改的字段只有两个:
1 | const gameId = 40096571****; |
完整代码如下:
1 | (async () => { |


成功输出 baseUrl 后,根据网络情况等待一段时间,浏览器会弹出保存窗口或直接开始下载:

最终会下载类似文件:
1 | TJ101-40096571****.rofl |
该文件即为英雄联盟回放文件。
五、使用 ReplayBook 播放旧版本回放
如果客户端尚未更新,ReplayBook 通常可以直接调用当前版本客户端播放对应版本的 .rofl 回放文件;如果客户端已经更新完成,旧版本回放可能会因为版本不一致而无法播放。此时需要准备与回放 gameVersion 对应的旧版客户端文件,再在 ReplayBook 中添加旧版本 League of Legends/Game 路径并扫描。旧版客户端可以前往 replays.xyz / Old League Clients 下载,该页面提供了多个历史版本的英雄联盟客户端归档,并说明压缩包需要使用 7-Zip 解压。:contentReference[oaicite:0]{index=0}.rofl 文件不是普通视频文件,而是需要通过对应版本的英雄联盟游戏程序重放比赛过程。
因此,旧版本回放通常需要准备对应补丁版本的:
1 | League of Legends/Game |
如果缺少对应版本的 Game 文件夹,即使已经下载到 .rofl 文件,也可能无法正常播放。
六、常见问题
1. Identifier has already been declared
如果 Console 中出现:
1 | Uncaught SyntaxError: Identifier 'leagueToken' has already been declared |
说明之前已经声明过同名变量。
本文使用的是自执行函数写法:
1 | (async () => { |
这种写法可以避免变量反复声明导致的冲突。
2. NoSuchKey
如果返回:
1 | <Code>NoSuchKey</Code> |
通常是 platformId 与对局实际大区不一致。
例如 SGP 地址为:
1 | https://tj101-sgp.lol.qq.com:21019 |
但请求的 matchId 是:
1 | NJ100_40096571**** |
此时服务器会在 TJ101 的回放资源中查找 NJ100 的回放,自然无法命中。
应改为:
1 | TJ101_40096571**** |
3. 文件体积异常
如果下载的文件只有几 KB,通常不是有效回放,而是错误信息被保存成了 .rofl。
可以根据 Console 输出检查:
1 | content-type |
正常回放文件一般会有一定体积,不应只有几 KB。
4. state 为 incompatible
如果通过回放 metadata 查询到:
1 | "state": "incompatible" |
说明当前客户端无法直接播放该局回放。
这并不一定代表回放文件无法下载,只代表当前客户端版本不匹配。
后续需要使用 ReplayBook,并准备对应版本的 League of Legends/Game 文件夹。
5. 客户端下载接口返回 204,但目录中没有 .rofl
客户端自带的回放下载接口可能返回:
1 | 204 No Content |
但 204 只代表接口调用成功,不代表 .rofl 文件一定已经成功写入磁盘。
如果回放版本与当前客户端不兼容,客户端可能识别到该局回放,但不实际落盘文件。
这种情况下,可以直接使用本文的 SGP 接口方式下载。
如果客户端已经更新,但对局刚结束不久,可以优先尝试本文方法。
如果英雄联盟的服务器端已删除或未保存该局 replay 文件,通过该方法也无法恢复。




