Skip to content

SteamTokenDumperPlugin zh TW

ArchiBot edited this page Nov 16, 2023 · 19 revisions

Steam Token 輸出外掛程式

SteamTokenDumperPlugin is official ASF plugin developed by us, which allows you to contribute to SteamDB project by sharing package tokens, app tokens and depot keys that your Steam account has access to. 關於所收集的資料的進一步說明,以及為什麼SteamDB需要這些資訊,可以在SteamDB的​Token Dumper​頁面上查看。 如上所述,提交的資料不包含任何敏感資訊,也不存在安全/隱私風險。


啟用外掛程式

ASF在釋出時附帶了​SteamTokenDumperPlugin​外掛程式,但是外掛本身預設是停用的。 您可以將ASF全域設定屬性​SteamTokenDumperPluginEnabled​設定成​true​來啟用外掛程式,採用JSON語法:

{
  "SteamTokenDumperPluginEnabled": true
}

在開啟ASF程式時,外掛程式會以標準ASF日誌的形式通知您它是否已成功啟用。 您也可以在設定檔生成器網頁工具中啟用外掛程式。


技術細節

啟用後,本外掛程式將會收集您在ASF中執行的Bot有權存取的組合包權杖、應用程式權杖及Depot金鑰。 資料收集模組包含被動與主動常式,它們應盡可能減少資料收集所造成的額外負擔。

為了完成預期的使用場景,除了上述的資料收集常式以外,提交常式負責確定哪些資料需要定期提交至SteamDB。 這個常式將在您啟動ASF最多​1​個小時後啟動,之後每​24​小時重複一次。 本外掛程式會盡量減少需要傳送的資料量,因此某些外掛程式收集到的資訊會被認為是無用提交而被略過(例如應用程式更新但並未更改存取權杖)。

本外掛程式使用了儲存於​config/SteamTokenDumper.cache​的持續快取資料庫,其用途類似於ASF的​config/ASF.db​。 這個檔案用於記錄收集到及要提交的資料,並盡可能減少下次ASF執行時必須完成的工作量。 刪除此檔案會使程序從頭開始,如果可以,應避免這種情形。


資料

ASF會在請求中包含貢獻者的​steamID​,即您在ASF中設定的​SteamOwnerID​。若您並未設定它,則會選擇擁有最多許可的Bot的Steam ID。 被宣告的貢獻者可能會因持續貢獻而從SteamDB獲得一些額外的好處(例如網站上的貢獻排名),但這完全是由SteamDB所決定。

無論如何,SteamDB的工作人員預先感謝您的協助。 提交的資料可以使SteamDB運作,特別是追蹤組合包、應用程式及Depot的資訊。若沒有您的協助,這些將不復存在。


進階設定

Our plugin supports advanced config which might come useful for people that would like to tweak the internals to their preference.

進階設定在​ASF.json​中有下列結構:

{
  "SteamTokenDumperPlugin": {
    "Enabled": false,
    "SecretAppIDs": [],
    "SecretDepotIDs": [],
    "SecretPackageIDs": [],
    "SkipAutoGrantPackages": true
  }
}

所有選項解釋如下:

Enabled

bool​型別,預設值為​false​。 這個屬性與上述​SteamTokenDumperPluginEnabled​根級屬性的作用相同,可以相互代替,給那些希望在自己的結構中擁有整個外掛程式相關設定的人所使用(這些人很可能已經使用了下列所述的其他進階屬性)。


SecretAppIDs

ImmutableHashSet<uint>​型別,預設值為空。 這個屬性使外掛程式不解析指定的​appIDs​,若它們已被解析,則不提交權杖。 這個屬性對於有權存取有關未發布物品的敏感資訊的人非常有用,特別是開發人員、發行商或Beta封閉測試人員。


SecretDepotIDs

ImmutableHashSet<uint>​型別,預設值為空。 這個屬性使外掛程式不解析指定的​depotIDs​,若它們已被解析,則不提交金鑰。 這個屬性對於有權存取有關未發布物品的敏感資訊的人非常有用,特別是開發人員、發行商或Beta封閉測試人員。


SecretPackageIDs

ImmutableHashSet<uint>​型別,預設值為空。 這個屬性使外掛程式不解析指定的​packageIDs​(也稱為​subIDs​),若它們已被解析,則不提交權杖。 這個屬性對於有權存取有關未發布物品的敏感資訊的人非常有用,特別是開發人員、發行商或Beta封閉測試人員。


SkipAutoGrantPackages

bool​型別,預設值為​true​。 這個屬性的作用類似於​SecretPackageIDs​,在啟用後,會使下列所述的解析常式跳過具有​AutoGrant​的​EPaymentMethod​的套裝。 Steamworks​會使用​AutoGrant​付款方式自動為開發人員帳號授與組合包。 雖然這不像其他的​Secret​選項一樣明確指定ID,因此不能保證能符合預期(因為您可能還擁有其他非​AutoGrant​的組合包,而仍不想提交),但它應該足以跳過大多數的(可能非全部的)私密組合包。 這個選項預設為啟用,因為實際上能存取​AutoGrant​組合包的人幾乎不會希望公開洩漏這些資訊,因此使用​false​值得情形非常有限。


詳細解說

最基礎的概念是每個Steam帳號都擁有一套組合包(授權、訂閱),對應它們的​packageID​來分類(也稱為​subID​)。 每個組合包可能含有數個應用程式,對應各自的​appID​。 每個應用程式可能包含數個Depot,對應各自的​depotID​。

├── sub/124923
│     ├── app/292030
│     │     ├── depot/292031
│     │     ├── depot/378648
│     │     └── ...
│     ├── app/378649
│     └── ...
└── ...

我們的外掛程式包含兩個考慮跳過物品的常式:解析常式及提交常式。

解析常式負責解析上述的樹狀結構。 透過提前將組合包/應用程式/Depot加入黑名單,您能有效地在樹狀結構中切斷指定的分支及葉節點,而不需要額外指定其剩餘部分。 在上述範例中,若組合包​124923​被忽略,不論是透過​SecretPackageIDs​或​SkipAutoGrantPackages​,且在您所擁有的組合包中,只有這個能夠鏈結到AppID ​292030​,則AppID ​292030​也不會被解析。依據定義,若沒有其他可被解析的應用程式鏈結至Depot ​292031​及​378648​,那麼它們也不被解析。 但是,請注意如果外掛程式已解析了樹,那麼就只會停止更新給定的物品(例如新增的應用程式),而不會「忘掉」已被解析過的現有物品(例如您在加入黑名單前就被找到存在於組合包中的應用程式)。 若您剛剛啟用了一些忽略選項,且希望確保ASF不會遍歷已解析過的樹,您或許可以考慮刪除一次外掛程式儲存快取的​config/SteamTokenDumper.cache​檔案。

提交常式負責提交已被解析物品的組合包權杖、應用程式權杖及Depot金鑰(透過上述的解析常式)。 在這裡,您的黑名單會立即生效,因為即使外掛程式已解析了資訊,但若您將其加入黑名單,提交常式實際上就不會把它提交給SteamDB,無論是否已被解析。 請注意,在此處我們不再與樹有任何關連,提交常式不會知道應用程式的資訊是來自這個或那個組合包,所以它只會跳過特定的、已加入黑名單中的物品,而不會考慮它們的相關性。

對於大部分的開發人員及發行商來說,啟用​SkipAutoGrantPackages​應已足夠滿足需要。若有額外需要,可以使用​SecretPackageIDs​,它能有效地從起始分支切斷,並且只要沒有其他組合包鏈結至相同的應用程式,能保證裡面包含的應用程式及Depot都不會被提交。 若您需要雙重保險,您還可以使用​SecretAppIDs​,即使有其他未加入黑名單的組合包鏈結至應用程式,它也會被跳過解析。 一般情形不需要使用​SecretDepotIDs​,除非您有特殊需要(例如提交組合包及應用程式資訊時跳過特定的Depot),或您想要多加一層以獲得三重保險。

Clone this wiki locally