Steam 许可分类器 用户手册
版本:2.5.5
适用页面:https://store.steampowered.com/account/licenses*
作者:SmallFork
主页:Keylol 讨论帖
📖 概述
Steam 许可分类器 是一款 Tampermonkey 用户脚本,用于对 Steam 账户的许可(License)列表进行智能分类、统计和深度分析。它自动识别许可类型(商店购买、零售激活、免费赠送、礼物/通行证),并提供强大的数据看板、筛选、排序、导出以及多种分析图表,帮助您全面了解自己的游戏库构成。
✨ 核心功能一览
| 功能模块 |
说明 |
| 自动分类 |
根据获取方式(Acquisition)将许可分为 商店、零售、免费、礼物 四类。 |
| 统计卡片 |
顶部显示各类别数量及总数,点击卡片快速筛选对应类别。 |
| 排除免费 |
一键排除免费许可,专注统计付费/零售/礼物游戏。 |
| 搜索与筛选 |
按游戏名称搜索;按日期范围、名称/日期排序;分页浏览。 |
| 许可分析窗口 |
统一的标签页式分析面板,包含 许可分布、月度占比、许可频率、增加曲线、日历热力、绝版检查、相同许可 七个视图。 |
| CDKey 批量激活 |
批量输入 CDKey,实时显示激活结果、覆盖图,支持复制失败 Key 和 Sub ID。 |
| 数据导出 |
导出为 CSV 或 JSON 格式,便于本地存档或二次分析。 |
| 缓存机制 |
使用 localStorage + IndexedDB 双层缓存,大幅提升加载速度,支持增量更新。 |
🖥️ 界面与操作指南
1. 主界面(许可列表上方)
加载完成后,脚本会在原表格上方插入一个深色风格的工具栏,包含:
2. 许可分析窗口
点击“许可分析”按钮,打开一个仿 Steam 好友管理器风格的统一窗口,顶部有 7 个标签页:
📊 许可分布(Donut)
- 左侧:年份堆叠柱状图(按年份显示各类别数量)。点击任意年份柱条,可下钻查看该年 月度堆叠柱状图,并显示返回按钮。
- 右上:环形图显示各类别占比,中心显示总数,图例显示百分比。
- 右下:分类柱状图,直观对比各类别数量。
📈 月度占比(Monthly Share)
- 按年份分组,每月用一个小饼图表示该月各类别构成,饼图中心显示当月总许可数。
- 图例显示类别颜色,底部汇总总许可数、有效月份数、峰值月许可数。
📅 许可频率(Predict)
- 基于非免费许可的历史添加日期,统计平均间隔、日均许可数,并预测下次添加日期。
- 右侧表格按年份统计:许可数、添加天数、日均许可、平均间隔、一年占比(进度条)。
📉 增加曲线(Trend)
- 按月绘制各类别许可累计或非累计曲线。
- 支持筛选类别(点击按钮切换显隐),并切换“累加模式”。
🗓️ 日历热力(Calendar Heatmap)
- 类似 GitHub 贡献图,按年份显示每天新增许可的数量,颜色深浅代表密度。
- 图例说明少→多的颜色映射。
🛡️ 绝版检查(Delisted)
- 从内置的绝版游戏数据库中匹配您的游戏库,展示您拥有的绝版游戏数量及占比。
- 支持按类型、拥有状态筛选,搜索游戏名,卡片/列表视图切换,排序(名称、日期、稀有度)。
- 点击游戏卡片可跳转 SteamDB 查看详情。
🔍 相同许可(Similar)
- 通过游戏名前缀分组,找出名称相似(可能是同一系列/版本)的许可,帮助识别重复购买或不同版本的许可。
- 可调整前缀单词数(1-10),分组可折叠展开。
3. CDKey 批量激活窗口
- 文本框中输入 CDKey(每行一个,或任意分隔),点击“激活Key”批量提交。
- 表格实时显示激活状态(成功/失败)、Sub ID、游戏名、AppID。
- 支持复制失败 Key、复制所有 Sub ID,切换卡片视图,并自动加载游戏封面图。
- 右侧区域展示已激活 Sub 的封面及 AppID 链接。
⌨️ 快捷键
| 快捷键 |
功能 |
Esc |
关闭当前打开的弹窗(分析窗口、激活窗口);若焦点在输入框则失焦。 |
D |
打开许可分析窗口并切换到“许可分布”标签。 |
M |
打开许可分析窗口并切换到“月度占比”标签。 |
F |
打开许可分析窗口并切换到“许可频率”标签。 |
T |
打开许可分析窗口并切换到“增加曲线”标签。 |
C |
打开许可分析窗口并切换到“日历热力”标签。 |
S |
打开许可分析窗口并切换到“相同许可”标签。 |
G |
打开许可分析窗口并切换到“绝版检查”标签。 |
R |
打开 CDKey 批量激活窗口。 |
注:快捷键需在页面焦点下生效,部分快捷键可能与浏览器默认冲突,请自行调整。
💾 缓存与加载机制
- 首次加载:脚本会遍历所有分页(最多 3000 页),逐页抓取数据,并在完成后建立缓存。
- 缓存结构:
localStorage 存储每条许可的指纹(日期+名称+类型),用于快速判断新增。
IndexedDB 存储每行的完整 HTML,用于快速恢复。
- 增量更新:再次打开页面时,仅抓取首屏之后的新页面,对比指纹识别新增许可,并追加到表格中,大幅减少网络请求。
- 缓存失效:若连续多页均为全新行且新增数超过缓存总量 50%,则自动判定缓存失效并执行全量重载。
- BFCache 兼容:页面从浏览器缓存恢复时,自动清理旧数据并重新加载,确保数据准确。
🔧 权限说明
脚本使用以下 Tampermonkey API:
| 权限 |
用途 |
GM_xmlhttpRequest |
跨域请求 Steam API、抓取分页、加载绝版数据等。 |
GM_setClipboard |
复制失败 Key、Sub ID 到剪贴板。 |
GM_getResourceText |
加载内置的绝版游戏列表(JSON)。 |
unsafeWindow |
获取 g_sessionID 等页面变量。 |
connect |
允许连接到 api.steampowered.com 和 raw.githubusercontent.com。 |
❓ 常见问题(FAQ)
Q1:脚本没有生效,统计卡片未出现?
- 确保您在正确的页面:
https://store.steampowered.com/account/licenses(必须带 licenses)。
- 检查 Tampermonkey 是否已启用该脚本。
- 尝试刷新页面,或重新安装脚本。
- 如果页面语言不是中/英,请手动切换至支持的语言。
Q2:加载一直在转圈,进度条卡住?
- 可能是网络问题或 Steam 分页器返回异常。尝试刷新页面。
- 若问题持续,可点击“清除缓存并刷新”按钮,强制全量重建缓存。
Q3:绝版检查显示“获取游戏库失败”?
- 确保您已登录 Steam,并且个人资料(游戏库)设置为公开。
- 检查浏览器是否允许跨域请求,或尝试关闭广告拦截插件。
Q4:激活 CDKey 时提示“No session ID”?
- 确保您已登录 Steam 商店页面,且会话未过期。刷新页面后重试。
Q5:数据导出 CSV 乱码?
- 导出的 CSV 已包含 BOM(
\uFEFF),请使用支持 UTF-8 的编辑器(如 Excel 需用“数据→自文本/CSV”导入并选择 UTF-8)。
Q6:缓存占用空间过大?
- IndexedDB 存储行 HTML,一般几千条许可约 1-2MB,属于正常范围。若想释放空间,可点击“清除缓存并刷新”。
📦 数据隐私说明
- 所有数据仅存储在您的浏览器本地(localStorage + IndexedDB),不会上传至任何服务器。
- 绝版游戏列表来自公共 GitHub 仓库,在脚本启动时加载。
- CDKey 激活仅通过 Steam 官方接口(
ajaxregisterkey)提交,不会泄露给第三方。
🛠️ 开发者信息
- 脚本采用原生 JavaScript,无外部依赖。
- 样式使用 CSS 变量,适配 Steam 暗色主题。
- 欢迎在 Keylol 讨论帖 反馈问题或建议。
📝 更新日志摘要
- 2.5.5:修复激活完成按钮状态、缓存重复叠加、BFCache 恢复问题;增强日历热力 hash;绝版检查安全加固;多语言无效行识别。
- 2.5.4:优化缓存指纹提取,跳过 SteamDB 扩展列;增量加载批内顺序保持;防回绕死循环;缓存版本升级至 v3。
- 2.5.0:重大 UI 升级,合并所有分析窗口为统一标签页;新增“月度占比”面板;许可分布集成年份柱状图及下钻月度。
完整更新日志请查看脚本注释或 GreasyFork 页面。
感谢使用 Steam 许可分类器!
如有任何疑问,欢迎参与社区讨论。