建議移步我的博客來獲得具有完整Markdown支持的更好的閱讀體驗。小黑盒只有兩級標題並且不支持代碼塊,因此可能會造成一些層級混亂等的情況,敬請諒解。https://www.labox233.top/posts/3d6d45ef.html
每次寫這類科普文章的時候都寫不下去,因為在每次動筆之前的查資料階段總會忽然遇到一大堆我想要進一步瞭解而不能迅速明瞭的問題。但考慮到或許寫出來會對大家有所幫助,所以還是硬著頭皮寫了,如果發現文中有任何錯漏歡迎各位指正。
起因
隨著原神及之後一系列遊戲的風靡,出現了各類抽卡分析的小程序、軟件。而它們如何用一直是老生常談的問題:不斷有軟件等失效,也不斷有新朋友入坑,導致一直有人琢磨不透這東西到底是怎麼用的。
我在此總結和介紹一下他們的原理和用法,希望對讀者有所幫助。
看之前你或許需要了解的概念
畢竟是發在小黑盒,還是希望有更多的人能看懂的,所以挑了一些後文中可能會不懂的詞先解釋一下。
URL:統一資源定位符,本文中可以理解為網站的網址鏈接,但它的作用不止於此。
webviewer:安卓自帶的網頁查看器,本文中理解為瀏覽器即可。
qqbot:用於qq的機器人。
PC:個人電腦,就是你的電腦。
powershell:Windows系統提供的腳本環境,類似於cmd,可以通過命令行來在各種方面控制電腦完成各種任務。
如何進行抽卡分析?
我們知道遊戲中提供了抽卡的歷史記錄功能,可以供我們查看6-12個月不等的時間內的詳細抽卡記錄。
從思路上來講,我們只需要把這些數據抄出來就能進行各種計算和分析了。但手抄顯然是一種低效又沒意義的做法,因為這個顯示抽卡歷史的頁面是一個內嵌的網頁,我們能夠很自然地想到通過獲得這個網站的網址來直接獲得這些記錄,這也是現如今大部分小程序都會通過一個鏈接來取得你的抽卡記錄的原因吧。
老玩家或許還記得,在遊戲剛開服的一年多,這個鏈接是容易獲得的:只需要在手機上打開抽卡頁面,關掉手機的網絡再點擊打開抽卡記錄,webviewer就會因為沒有網絡、打不開網頁而直接把網址顯示出來。
雖然現在這樣做已經不行了,但總體來說思路還是一樣的:想辦法獲得這個鏈接,然後通過鏈接返回的內容進行分析即可。這種方案總體上來說就是你把抽卡記錄掏出來給了小程序來分析。
有沒有其他的方案呢,確實是有的,就例如小黑盒、一眾qqbot等。除了鏈接之外,它們有時還需要你手動登錄米哈遊通行證/米遊社掃描二維碼等,這就是另一種也好理解的思路:你把你的米哈遊賬戶給了這些程序,它們當然可以自己把你的抽卡記錄掏出來分析。但正如你所擔憂的,這種方案有隱性的風險:你在這些軟件/程序上登陸了你的賬戶,就等於把你的賬戶會話給了它們,它們是可以不經你的允許就對你的賬戶進行一些你不知道的操作的。小黑盒規模足夠大,我們相信它不會做什麼壞事,但如過我個人現在發佈一款“小五顏六色盒”的抽卡分析軟件、使用後者的方式來獲取你的抽卡信息,你就應該避免使用來規避風險。
具體如何獲得數據?
說了這麼多,總結來說就是兩種方案:
- 我自己獲得抽卡鏈接,把鏈接提供給程序。
- 我把賬號給程序,程序幫我完成所有操作。
在此我們只討論第一種方案。第二種因為操作比較簡單,只需要驗證碼登錄/掃碼即可;並且我個人並不推薦,因此不做討論。
要獲得這個鏈接,我們要根據設備不同選擇不同方案。
對於PC
獲取鏈接的方法大同小異,非小酋為原神的國服抽卡鏈接獲取提供了兩種方案,分別是使用它提供的腳本和在剪切板裡提取:

方法一:使用腳本
先打開原神遊戲,打開抽卡記錄頁之後按Win+R,輸入powershell並回車,然後在打開的powershell窗口中運行以下命令:
iex "&{$(irm https://tt.xianx.com.cn/link/ys/l.ps1)} china"
腳本會自動把你想要的鏈接輸出並放進你的剪切板,你可以直接粘貼出來。如此一來,把這個鏈接粘貼到任意抽卡分析程序裡就可以了,比如非小酋。

方法二:在剪切板中提取
非小酋還提供了另一種有趣的方案,先按Win+R,輸入powershell並回車,然後在打開的powershell窗口中運行以下命令:
pause;$m=(((Get-Clipboard -TextFormatType Html) | sls "(https:/.+log)").Matches[0].Value);$m;Set-Clipboard -Value $m
此時powershell會提示“按Enter繼續”,我們不要按enter,打開遊戲並打開抽卡記錄頁面,直接選中所有的抽卡記錄,按Ctrl+C複製並Ctrl+V粘貼進powershell裡:

安全嗎?
對這個話題不感興趣的朋友可以不看,如果你去我的博客看的話右邊可以直接跳轉。
可能有的網友有疑慮:方法一給出的命令看起來非常像Steam假入庫用到的命令(圖源網絡):
確實,這兩個操作的本質是類似的,都是下載一個ps1腳本文件並運行。我們來分析一下異同:
iex "&{$(irm https://tt.xianx.com.cn/link/ys/l.ps1)} china"
這是用irm(Invoke-RestMethod)下載
https://tt.xianx.com.cn/link/ys/l.ps1的內容作為一個字符串,然後iex(Invoke-Expression)把它當成powershell代碼,然後加上參數china來運行它。
而另一個假入庫的命令:
irm ███████████.run|iex
也是同理,通過irm下載某個網址的ps1文件,然後通過管道符|傳遞給iex來運行。
由此可見,關鍵問題就在於這個網址給出的程序是善是惡了。
我們可以通過irm來下載這個腳本並不運行它來檢查,比如在powershell裡運行這個:
irm https://tt.xianx.com.cn/link/ys/l.ps1
他就會打印出這個用來獲得原神抽卡鏈接的腳本到底幹了些啥:
這個腳本有100多行,太長了,真想看的話去我的博客吧,小黑盒手機編輯太要命了。
總結來說,這個程序打開了原神的log日誌,然後找到了緩存文件,最終從緩存文件中提取出了抽卡鏈接,並沒有異常操作,是安全的。
而那個假入庫的我也irm了一下,但那個網址現在似乎已經不用了,已經被設置顯性重定向到steam商店官網去了,所以把網址塗抹掉了,建議大家也不要嘗試。總而言之,遇到iex的情況都應該留心,可以把鏈接發給懂的人檢查一下。
第二種方案很有趣,先來看命令:
pause;$m=(((Get-Clipboard -TextFormatType Html) | sls "(https:/.+log)").Matches[0].Value);$m;Set-Clipboard -Value $m
這個命令先運行pause暫停住powershell,等待下一步輸入。我們複製了抽卡信息給它之後它會通過https:/特徵來提取出來抽卡鏈接並且塞回剪切板。
但是我們複製出的抽卡記錄直接粘貼只是一些簡單的文本信息,哪裡來的鏈接呢?比如我複製出來是這樣的:
歐洛倫 (四星)
角色活動祈願
2024-12-06 12:31:11
武器
黎明神劍
角色活動祈願
2024-12-06 12:31:06
武器
鴉羽弓
角色活動祈願
2024-12-05 12:14:07
武器
翡玉法球
角色活動祈願
2024-12-05 12:14:00
武器
冷刃
角色活動祈願
2024-12-04 21:11:07
1
實際上,這看似純文本的信息裡包含了不少元數據,我們可以通過這樣的方案看到:先複製抽卡記錄,然後用powershell運行這個
Get-Clipboard -TextFormatType Html | Out-File -FilePath "$env:TEMP\clipboard_content.html"
這會把我們的剪切板裡的內容以html的形式保存成一個html文件。我們再打開這個文件:
Start-Process "$env:TEMP\clipboard_content.html"
就可以看到剪切板裡實際的內容了,這其中就包括了我們需要的鏈接:
這個方案只是對剪切板內容進行了提取和字符處理,是安全的。
對於IOS設備
移動設備並不方便直接進行復制或是訪問遊戲的日誌。從思路上來講,既然抽卡記錄只是個網頁,我們可以通過抓包的方式獲得它。
對於IOS設備,抓包是容易的。不論是iPhone還是iPad等,都可以在AppStore獲得抓包軟件Stream:
先按照指引配置好軟件,打開遊戲切換到抽卡記錄頁,然後打開Stream,點擊Sniff Now來開始抓包,回到遊戲並切換一頁抽卡記錄,再回到Stream按Stop,然後去Histroy裡尋找,這種長得特別長的就是了,點進去再點複製鏈接即可。
對於Android設備
Android設備抓包是非常繁瑣的:經過不斷的版本更新,安卓系統的安全特性不斷增強。目前來說通常需要root權限把抓包軟件的中間人證書升級為系統證書,或是使用magisk模塊來讓軟件信任抓包軟件的中間人證書等,即便能做到,步驟也很複雜,因此並不推薦使用這樣的方法來獲得抽卡鏈接。
但合理配置後通過抓包的方式是可以和IOS設備一樣獲得所需要的抽卡鏈接的,圖中第六行就是我們需要的鏈接。
那安卓設備如何獲得抽卡鏈接呢?絕大多數程序和軟件都推薦安卓設備玩家使用PC來獲得抽卡鏈接,我也推薦,這樣確實比較方便。
但如果實在沒有條件,也可以嘗試一下這一個開源的軟件Ascent, 壞消息是它的使用條件也很複雜,過程也很繁瑣,最重要的是他甚至不能覆蓋全部的設備,但在各位使用直接短信驗證/掃碼登陸獲取記錄的軟件前我還是建議嘗試一下它。
使用Ascent
要使用這個軟件,首先要求你的手機支持無線調試,也就是至少你的系統版本應該大於Android 11。但這只是使用這個軟件的必要條件:除此之外很大部分手機也不在軟件的支持範圍內,比如華為運行鴻蒙系統的手機。
從這裡選擇自己的架構並下載:https://github.com/4o3F/Ascent/releases/
一般來說手機選擇armeabi-v7a就可以,模擬器選擇x86_64,如果拿不準也可以選擇下載那個什麼後綴都不帶的通用版本。
因為不同的手機差異很大,這裡只給出通用辦法,對於自己的設備可以加上型號去進一步搜索詳細教程。
要使用它首先有一個準備過程,它的原理類似於Shizuku,軟件會作為adb平臺通過無線調試來連接到手機本身:
安裝軟件並打開手機的開發者選項,然後點擊軟件中的配對按鈕,點擊開始配對,軟件應該會自動跳轉到開發者選項中。現在找到無線調試選項並進入,開啟後點擊使用配對碼配對設備,看到彈出的配對碼後不要關閉它,直接下拉狀態欄,點擊Ascent的通知,此時應該可以看到輸入的按鈕,輸入剛剛的配對碼就配對成功了,準備工作就結束了。
要使用他只需要點擊主頁的連接,點擊開始連接,然後打開遊戲,打開抽卡歷史的頁面,現在下拉狀態欄就可以看到Ascent已經獲取了抽卡鏈接,可以直接複製了。
安全嗎?
一般來說抓包過程不會運行什麼未知的程序,Ascent也是開源軟件,可以認為是安全的,唯一的風險可能就是信息洩露的風險了,因為本身經過tls加密的數據並不應該被中間人解密,但一般來說使用可信的軟件也不用擔心它,所以我認為也應該避免使用一些來路不明的閉源的、專門針對這些遊戲而開發的抓包軟件。
本文暫未完成,還會持續更新。