【对决诱导】3 前置知识-火石数据获取
与拆包教学相同,本文也只是解释数据来源,不影响后文的阅读。
另外,由于笔者对火石研究不深,仅仅只是在朋友帮助下翻到了火石控制对决部分的URL而已,大概对于研究酒馆或者其他内容的朋友,仅仅具有启发性的工作。

https://github.com/Zero-to-Heroes/firestone/blob/master/libs/legacy/feature-shell/src/lib/js/services/duels/duels-state-builder.service.ts
以下代码出自上面的网址,接下来我会简单介绍一下代码中的各个网址的功能,以及探索的一些窍门。
const DUELS_RUN_INFO_URL = 'https://p6r07hp5jf.execute-api.us-west-2.amazonaws.com/Prod/{proxy+}';
const DUELS_GLOBAL_STATS_URL_SPLIT =
'https://static.zerotoheroes.com/api/duels/duels-global-stats-hero-class-%mmr%-%date%.gz.json';
const DUELS_GLOBAL_STATS_DECKS =
'https://static.zerotoheroes.com/api/duels/duels-global-stats-hero-class-decks.gz.json';
const DUELS_RUN_DETAILS_URL = 'https://static-api.firestoneapp.com/retrieveDuelsSingleRun/';
const DUELS_LEADERBOARD_URL = 'https://api.firestoneapp.com/duelsLeaderboard/get/duelsLeaderboard/{proxy+}';
const DUELS_CONFIG_URL = 'https://static.zerotoheroes.com/hearthstone/data/duels-config.json';
const DUELS_BUCKETS_URL = 'https://static.zerotoheroes.com/api/duels/duels-buckets.gz.json';
这段代码的目标是,将一串很长的网址,变成一个抽象的代号,这样在接下来的工作中,输代号易于识别,重复输不会显得代码冗长,网址更替以后也只需要改动这一处地方就行。

可以直接访问的网址:
DUELS_BUCKETS_URL :这里的bucket就是国内说的牌堆/词条/选牌框,总之就是给你提供3张牌的环节。
DUELS_CONFIG_URL :config,设置的意思,相信各位不会对这个词陌生。里面存有目前构筑时可以使用的扩展包,以及构筑时被禁用的单卡。
DUELS_GLOBAL_STATS_DECKS:对决的高胜信息,即10+胜的信息,记录了初始套牌,最终套牌,开始时间等等,很多信息,范围大概是最近30天左右,具体来说,会存最近5k组高胜数据。值得一提的是它会提供runId,这是访问详细数据的关键。

目前破解出的其他网址:
DUELS_RUN_DETAILS_URL :对战详细数据,记录了每一轮,遇到怎样的对手,刷出了哪些选牌框,选牌框里哪些内容,最后选了谁等等,事无巨细,相当有用,是本文数据的主要提供者。
接下来说说如何找到网址作用的,其实很简单,ctrl+f搜索就行,看它这意思是往后面补上一个runId,正好前面发现了runId,依葫芦画瓢补上就行。
例如:https://static-api.firestoneapp.com/retrieveDuelsSingleRun/45cdbbc4-1941-4898-8b03-8c8c9c833842

DUELS_GLOBAL_STATS_URL_SPLIT :
与上文相同,首先注意ctrl+f看看哪儿在用,发现了下图代码,注意划线部分,如果某个东西等于'all',则mmr=100,说明至少100与之有关。

但是date尚未破译,不着急,发现这涉及到prefs的变量,搜索发现全文有6个这里只有5个

去看看漏掉的那个,发现继承了一个类,继续搜一搜

发现import自这么个地方,照着地址去看一看,发现这文件内容挺多没关系,搜一搜处理date时候用到的函数

发现value继承了一个东西,搜一搜是什么

最后访问过去,就发现了取值范围

访问进去以后,其实文件内部也记录了mmr和date的取值范围。

尚未破解的网址:
DUELS_LEADERBOARD_URL
DUELS_RUN_INFO_URL
涉及ow用户登录问题,而且与我想统计的数据无关,前者是排行榜的数据,后者是玩家自己的对决数据,就没有继续研究。