ARTICLE · INTELLIGENCE

战地情报 · 详情页

来自尧图项目组的一线实战观察与深度解析

Electron桌面应用逆向获取游戏数据:以原神祈愿记录导出为例

Electron桌面应用逆向获取游戏数据:以原神祈愿记录导出为例 1. 项目概述当祈愿记录遇上桌面应用如果你是一位《原神》的深度玩家那么“抽卡”这个行为对你来说一定不陌生。从新手期的第一个十连到为了某个心仪角色而攒了几个版本的原石每一次祈愿都伴随着期待与忐忑。游戏内自带的“祈愿历史”功能虽然能让你回溯最近六个月的记录但它的局限性也显而易见无法导出、无法长期保存、无法进行深度的数据分析。你或许曾想过如果能把这些数据完整地保存下来分析自己的“欧非”曲线或者只是单纯地做个纪念该有多好。genshin-wish-export正是为了解决这个痛点而生的工具。它不是一个简单的网页脚本而是一个基于 Electron 框架构建的、功能完整的桌面应用程序。它的核心使命就是安全、便捷地将你在《原神》中的所有祈愿记录从游戏的服务器中“搬运”到你的本地电脑上并以结构化的格式如 JSON、Excel保存下来。这听起来简单但背后涉及了与游戏服务器的通信、数据解密、本地存储以及跨平台桌面应用开发等一系列技术点。对于玩家而言它解锁了数据自主权对于开发者或数据分析爱好者而言它提供了一个绝佳的数据源。接下来我将从一个工具使用者和技术实践者的双重角度为你彻底拆解这个项目。2. 核心原理与架构拆解2.1 数据获取的底层逻辑逆向工程与安全通信工具要获取祈愿记录首先得弄清楚游戏客户端是如何与服务器交互的。这并非通过公开的 API而是需要一定的逆向工程分析。游戏客户端在请求祈愿记录时会向特定的服务器端点发送一个经过认证的请求。这个请求的核心是玩家的“认证密钥”通常以authkey的形式存在。这个authkey是获取数据的关键。genshin-wish-export工具的设计思路并不是去破解或模拟登录而是引导用户从游戏日志或网络抓包中自行提取这个临时有效的密钥。这是一种非常巧妙且安全的设计因为它完全依赖于用户自己的游戏会话工具本身不接触、不存储用户的账号密码极大降低了安全风险。获取到authkey后工具会模拟游戏客户端的请求格式向米哈游的官方数据接口发起 HTTPS 请求。服务器在验证authkey有效后便会返回加密的祈愿记录数据。注意authkey具有时效性通常为24小时和一次性。每个authkey只能用于获取该账号在该时间段内的数据且使用后即失效。这保证了即使密钥不慎泄露影响范围也极其有限。2.2 数据处理流程解密、解析与结构化服务器返回的数据并非明文而是经过加密的。这就需要工具内置对应的解密算法。这部分代码通常是逆向分析游戏客户端数据包后还原出来的。解密之后我们得到的是原始的、嵌套的 JSON 数据。原始数据虽然包含了所有信息但格式并不友好可能包含大量冗余字段或不易读的标识符。genshin-wish-export的核心工作之一就是对这些原始 JSON 进行解析和清洗。它会提取关键信息如祈愿时间、祈愿类型角色活动祈愿、武器活动祈愿、常驻祈愿、新手祈愿、获取的物品名称、物品类型角色/武器、物品星级、是否触发保底等。数据标准化将内部使用的物品 ID 映射为玩家可读的中文名称并补充物品的详细信息如角色属性、武器类型。分页聚合游戏接口通常一次只返回一页例如20条记录。工具需要自动、循环地请求所有页码的数据并将它们无缝拼接成一个完整的数据列表。这个过程确保了最终输出的数据是干净、完整、可直接用于分析的。2.3 应用架构Electron 的优势与挑战为什么选择 Electron 来构建桌面应用而不是一个网页工具这背后有深刻的考量。优势跨平台一套代码JavaScript/HTML/CSS可以打包成 Windows、macOS、Linux 三个平台的桌面应用极大地降低了开发和维护成本。本地化体验应用可以拥有独立的窗口、系统托盘图标、本地菜单栏提供比浏览器书签更接近原生软件的体验。数据导出、文件保存等操作可以直接调用系统对话框无需经过浏览器沙盒。更强的本地能力可以更直接、更稳定地读写本地文件系统管理应用配置这对于需要持久化存储用户authkey本地加密存储和导出数据的需求来说非常合适。规避浏览器环境限制一些较新的 JavaScript API 或 Node.js 模块在浏览器中可能受限而在 Electron 的主进程Node.js环境中可以自由使用。挑战与应对应用体积Electron 应用需要打包整个 Chromium 内核和 Node.js 运行时导致安装包体积较大通常超过100MB。开发者需要通过优化依赖、压缩资源等手段来缓解。性能开销相比原生应用内存占用更高。但对于genshin-wish-export这类数据工具性能开销几乎可以忽略不计。安全性需要谨慎处理来自渲染进程网页部分的请求防止潜在的 XSS 攻击。所有与游戏服务器通信、数据解密等敏感操作应放在主进程中完成。项目的架构通常是经典的双进程模型主进程Main Process负责窗口管理、系统集成和核心业务逻辑如网络请求、数据解密、文件读写渲染进程Renderer Process负责呈现用户界面。两者通过 IPC进程间通信进行安全的数据交换。3. 从零开始的完整实操指南3.1 环境准备与工具获取首先你需要获取genshin-wish-export工具。由于项目可能托管在 GitHub 等平台最安全的方式是前往其官方仓库下载最新发布的版本。查找官方发布页在搜索引擎或 GitHub 搜索genshin-wish-export找到项目主页。务必认准作者和星标数避免下载来路不明的修改版。选择对应平台版本在项目的Releases页面你会看到针对 Windows通常是.exe安装程序或绿色压缩包、macOS.dmg或.zip和 Linux.AppImage或.deb的打包文件。选择与你的操作系统匹配的版本下载。安装与运行Windows如果下载的是安装程序.exe直接运行并按照指引安装。如果是绿色版.zip解压后直接运行文件夹内的可执行文件如Genshin Wish Export.exe。macOS下载.dmg文件后打开并将应用图标拖入“应用程序”文件夹即可。首次运行时系统可能会提示“无法验证开发者”需要在“系统设置”-“隐私与安全性”中允许运行。Linux对于.AppImage文件下载后赋予其可执行权限 (chmod x filename.AppImage) 即可运行。3.2 关键步骤AuthKey 的获取与导入这是整个流程中最关键的一步。authkey的获取主要有两种主流方法方法一从游戏日志文件中获取推荐最稳定完全退出《原神》游戏客户端。找到游戏日志文件的位置。以 Windows 为例路径通常为C:\Users\[你的用户名]\AppData\LocalLow\miHoYo\原神\output_log.txt。AppData是隐藏文件夹需要在文件管理器地址栏直接输入路径或开启“显示隐藏的项目”。用记事本等文本编辑器打开output_log.txt。在日志文件中搜索https://webstatic.mihoyo.com/hk4e/event/e20190909gacha-v2/index.html这个 URL。你会发现在这个 URL 后面紧跟着一个非常长的、以authkey开头的字符串。复制从authkey开始直到下一个符号或明显换行结束的整个字符串。这就是你需要的authkey。方法二通过开发者工具F12网络抓包获取在 PC 端打开《原神》游戏进入“祈愿”界面点击“历史记录”。此时按下F12打开浏览器的开发者工具游戏内嵌了浏览器组件。切换到“网络”Network选项卡刷新祈愿历史页面。在网络请求列表中寻找一个包含getGachaLog关键词的请求。点击该请求在“标头”Headers或“负载”Payload部分找到authkey参数复制其完整的值。实操心得强烈推荐使用日志文件法。网络抓包法有时会因为游戏更新或抓包工具不同而失效且操作相对复杂。日志文件中的authkey是游戏启动时生成的获取成功率几乎是100%。复制时务必完整不要遗漏任何字符。获取到authkey后回到genshin-wish-export应用界面。一般会有明显的输入框或“导入密钥”按钮将复制的完整authkey字符串粘贴进去即可。应用会自动识别并开始获取数据。3.3 数据获取、预览与导出导入authkey后工具会自动开始工作。你会在界面上看到以下流程选择祈愿类型工具会列出角色活动祈愿、武器活动祈愿、常驻祈愿、新手祈愿等所有卡池类型。你可以选择导出全部或只导出某个特定卡池的记录。开始获取点击开始后工具会显示获取进度包括当前正在获取的卡池类型和页码。由于历史记录可能多达数百页这个过程可能需要几分钟请耐心等待。数据预览获取完成后工具通常会提供一个表格视图进行预览。你可以清晰地看到每一次抽卡的时间、物品、星级并会自动统计出各星级物品的数量、当前保底计数等关键信息。导出数据这是最终步骤。工具一般支持多种导出格式JSON保留最完整的数据结构适合程序进一步处理或导入到其他分析工具。Excel/CSV适合用 Excel、Numbers 或 WPS 表格进行手动查看、排序和制作图表。其他格式有些工具可能支持导出为 SQL 脚本方便导入数据库或为特定社区网站如 paimon.moe设计的格式。我个人的习惯是同时导出 JSON 和 Excel 两份。JSON 作为原始数据备份Excel 用于日常查看和简单分析。4. 深度应用与数据分析实践4.1 基础统计看清你的抽卡全景图拿到数据后最简单的分析就是基础统计。genshin-wish-export通常内置了基础统计面板但你也可以将数据导入 Excel 进行更自由的分析。抽数总计统计你在每个卡池、乃至全游戏的总抽数。这是衡量“投入”的基本指标。星级分布计算你抽到的五星、四星、三星物品各自的数量和占比。一个健康的账号五星占比通常在0.6%左右官方概率四星占比约5.1%。保底分析这是核心中的核心。通过数据你可以精确地回顾每一次五星是在多少抽时出现的。计算实际保底抽数筛选出所有五星记录计算该五星距离上一个五星或卡池开始之间的抽数。你会发现大部分五星集中在74-90抽之间角色/武器祈愿保底为90抽这就是“软保底”和“硬保底”的体现。“歪”的记录在角色活动祈愿中标记出那些不是当期UP角色的五星。统计你“歪”的次数和频率这能直观反映你的“运气”成分。4.2 高级分析时间序列与概率验证对于有数据分析基础如会用 Python 的 Pandas、Matplotlib的玩家本地 JSON 数据是一座金矿。抽卡时间序列分析将抽卡记录按时间排序绘制“抽数-时间”折线图。你可以清晰看到自己活跃抽卡的版本周期。计算“原石/抽数积累速度”结合版本更新和活动日历可以优化你未来的原石规划策略。概率验证与期望计算以每10000抽为一个滑动窗口计算窗口内的五星出率观察其是否围绕0.6%上下波动从而验证游戏概率的公平性当然个人数据量小仅供参考。根据你的历史数据计算你抽出五星的“期望抽数”。例如如果你70%的五星在78抽前抽出那么你的个人期望抽数可能就是78这比理论的62.5抽综合软保底概率更具个人参考价值。资源消耗复盘结合抽卡时间回溯当时正在进行的游戏活动分析你是在什么情况下例如新角色强度诱人、武器池“毒”性大做出了抽卡决策。这有助于你未来更理性地对待“强度焦虑”和“外观诱惑”。4.3 数据安全、隐私与合规使用必须严肃讨论这一点。使用此类第三方工具务必保持警惕本地优先原则genshin-wish-export的优秀设计在于其数据流程完全在本地进行。authkey仅在本地用于向官方服务器请求数据请求到的数据在本地解密、处理和保存。选择工具时务必确认其是开源项目代码可审且承诺无任何网络回传功能。隐私数据保护导出的数据文件尤其是 JSON包含了你的全部祈愿记录。请像保管其他重要文件一样保管它不要随意上传到不明网站或分享给他人。合规使用这些数据仅供个人分析、纪念使用。切勿用于任何商业用途或开发、使用任何干扰游戏正常运营、破坏游戏公平性的外挂或脚本。尊重游戏开发者的劳动成果。风险自担尽管目前没有因使用此类只读数据导出工具而被封号的案例但任何非官方的客户端交互行为理论上都存在风险。使用前请自行权衡。5. 常见问题与故障排查实录在实际使用中你可能会遇到一些问题。以下是我和社区用户遇到过的一些典型情况及解决方法。问题现象可能原因排查与解决步骤无法找到authkey1. 游戏日志路径错误。2. 游戏日志被覆盖。3. 网络抓包方法失效。1.确认路径确保找到了正确的output_log.txt文件。可以尝试在文件资源管理器搜索output_log.txt。2.重启游戏完全关闭游戏重新启动并进入一次祈愿历史页面再关闭游戏。这样能生成最新的、包含authkey的日志。3.使用日志法放弃网络抓包100%使用日志文件法。导入authkey后提示无效或过期1.authkey复制不完整首尾缺失字符。2.authkey已超过24小时有效期。3. 游戏账号在另一设备登录原authkey失效。1.重新复制仔细检查复制的字符串确保是从authkey开始完整复制没有多余空格或换行。2.重新获取authkey是消耗品。每次需要导出数据时都必须重新从游戏日志中获取一个新的。昨天的authkey今天肯定不能用。3.稳定环境在获取和使用authkey期间尽量不要切换游戏登录设备。获取数据过程中卡住或报错1. 网络连接不稳定请求超时。2. 游戏服务器维护或接口暂时不可用。3. 工具版本过旧无法兼容游戏更新后的新接口。1.检查网络确保电脑网络通畅可以尝试切换网络环境。2.等待重试访问官方游戏公告确认服务器状态。等待一段时间后再试。3.更新工具前往项目发布页下载最新版本的工具。游戏大版本更新后数据接口可能微调工具也需要同步更新。导出的数据乱码或格式错误1. 导出时选择了不兼容的编码。2. Excel 打开 CSV 时编码识别错误。3. JSON 文件被不正确的编辑器修改。1.指定编码导出 CSV 时如果工具可选选择UTF-8 with BOM编码这对 Excel 兼容性最好。2.正确打开 CSV用 Excel 打开 CSV 时选择“数据”-“从文本/CSV”在导入向导中手动选择UTF-8编码。3.使用专业编辑器查看 JSON 文件使用 VS Code、Notepad 等专业文本编辑器不要用系统自带的记事本。应用无法启动或闪退1. 系统缺少运行库多见于 Windows。2. 应用文件损坏或被杀毒软件误删。3. 与其他软件冲突。1.安装运行库尝试安装最新版的Visual C Redistributable和.NET Framework。2.重新下载/添加信任从官方渠道重新下载安装包。在杀毒软件中将该应用添加为信任。3.兼容模式运行右键点击应用图标尝试以“兼容模式”或“管理员身份”运行。独家避坑技巧建立数据归档习惯每次大版本更新前例如新角色卡池开放前做一次全量数据导出并备份。这样你就能拥有每个版本节点的精确抽卡快照。善用“UID”筛选如果你有多个游戏账号导出数据时工具可能会混合记录。在分析前先按 UID 字段进行筛选避免数据混淆。关注开源社区genshin-wish-export这类项目通常托管在 GitHub。关注其 Issues 和 Discussions 页面你遇到的大部分问题很可能已经有人提出并解决了。这也是判断项目是否活跃、是否安全的重要依据。这个工具的价值远不止于“导出数据”这个动作本身。它代表了一种玩家对自身游戏数据所有权的追求以及用技术手段提升游戏体验的极客精神。通过它那些曾经模糊的“感觉”变成了清晰的“数据”让你能更理性、也更充满仪式感地回顾自己在提瓦特大陆的每一次相遇。
RELATED READING

延伸阅读

更多一线实战笔记与深度复盘,助您持续精进