【對決誘導】3 前置知識-火石數(shù)據(jù)獲取
與拆包教學相同,本文也只是解釋數(shù)據(jù)來源,不影響后文的閱讀。
另外,由于筆者對火石研究不深,僅僅只是在朋友幫助下翻到了火石控制對決部分的URL而已,大概對于研究酒館或者其他內(nèi)容的朋友,僅僅具有啟發(fā)性的工作。

https://github.com/Zero-to-Heroes/firestone/blob/master/libs/legacy/feature-shell/src/lib/js/services/duels/duels-state-builder.service.ts
以下代碼出自上面的網(wǎng)址,接下來我會簡單介紹一下代碼中的各個網(wǎng)址的功能,以及探索的一些竅門。
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';
這段代碼的目標是,將一串很長的網(wǎng)址,變成一個抽象的代號,這樣在接下來的工作中,輸代號易于識別,重復輸不會顯得代碼冗長,網(wǎng)址更替以后也只需要改動這一處地方就行。

可以直接訪問的網(wǎng)址:
DUELS_BUCKETS_URL?:這里的bucket就是國內(nèi)說的牌堆/詞條/選牌框,總之就是給你提供3張牌的環(huán)節(jié)。
DUELS_CONFIG_URL?:config,設置的意思,相信各位不會對這個詞陌生。里面存有目前構筑時可以使用的擴展包,以及構筑時被禁用的單卡。
DUELS_GLOBAL_STATS_DECKS:對決的高勝信息,即10+勝的信息,記錄了初始套牌,最終套牌,開始時間等等,很多信息,范圍大概是最近30天左右,具體來說,會存最近5k組高勝數(shù)據(jù)。值得一提的是它會提供runId,這是訪問詳細數(shù)據(jù)的關鍵。

目前破解出的其他網(wǎng)址:
DUELS_RUN_DETAILS_URL?:對戰(zhàn)詳細數(shù)據(jù),記錄了每一輪,遇到怎樣的對手,刷出了哪些選牌框,選牌框里哪些內(nèi)容,最后選了誰等等,事無巨細,相當有用,是本文數(shù)據(jù)的主要提供者。
接下來說說如何找到網(wǎng)址作用的,其實很簡單,ctrl+f搜索就行,看它這意思是往后面補上一個runId,正好前面發(fā)現(xiàn)了runId,依葫蘆畫瓢補上就行。
例如:https://static-api.firestoneapp.com/retrieveDuelsSingleRun/45cdbbc4-1941-4898-8b03-8c8c9c833842

DUELS_GLOBAL_STATS_URL_SPLIT?:
與上文相同,首先注意ctrl+f看看哪兒在用,發(fā)現(xiàn)了下圖代碼,注意劃線部分,如果某個東西等于'all',則mmr=100,說明至少100與之有關。

但是date尚未破譯,不著急,發(fā)現(xiàn)這涉及到prefs的變量,搜索發(fā)現(xiàn)全文有6個這里只有5個

去看看漏掉的那個,發(fā)現(xiàn)繼承了一個類,繼續(xù)搜一搜

發(fā)現(xiàn)import自這么個地方,照著地址去看一看,發(fā)現(xiàn)這文件內(nèi)容挺多沒關系,搜一搜處理date時候用到的函數(shù)

發(fā)現(xiàn)value繼承了一個東西,搜一搜是什么

最后訪問過去,就發(fā)現(xiàn)了取值范圍

訪問進去以后,其實文件內(nèi)部也記錄了mmr和date的取值范圍。

尚未破解的網(wǎng)址:
DUELS_LEADERBOARD_URL?
DUELS_RUN_INFO_URL?
涉及ow用戶登錄問題,而且與我想統(tǒng)計的數(shù)據(jù)無關,前者是排行榜的數(shù)據(jù),后者是玩家自己的對決數(shù)據(jù),就沒有繼續(xù)研究。