Steam:如何从包 ID 中获取包名称?

问题描述 投票:0回答:1

问题很简单:“Steam”(即游戏DRM平台),有“应用程序”和“程序包”;后者几乎是存储在您的帐户中的许可证,并授予您拥有的应用程序(又称游戏)。

如果您查看许可证概述(当然,这只有在您登录了 Steam 帐户的情况下才有效 - 但如果您没有登录,为什么还要阅读这个问题) - 那里显示的名称不是从技术上讲,您所拥有的游戏的名称,即软件包的名称。这就是为什么您可能会在此列表中看到“Space Crew:传奇版限量免费促销包 - 2024 年 3 月”之类的名称。

我可以从应用程序 ID 获取游戏名称并连接游戏(应用程序)和包(许可证)。

SteamDB 还可以显示所有内容的包名称。而且他们与 Valve 无关,因此他们也无权访问内部数据库或类似的东西。

现在,我一直在尝试以编程方式获取这些包名称,给定一个

package-id
(或者现在,任何东西 - 如果我可以以任何方式、形状或形式获取包名称,我可能可以找到一种连接方法他们到他们的
package-id
)。 SteamDB 也称它们为
sub-id
,但这是同一件事。

我有一个工作客户端应用程序,又名机器人,无论你想怎么称呼它,所以我什至不关心它是否是通过客户端连接发送的 protobuf 消息、经过身份验证的 Web 查询(即 http(s) 查询或需要登录),或任何人都可以使用的公共网络查询。我支持代码中的所有内容。

随着 protobufs 的发展,有

CMsgClientPICSProductInfoRequest
让我查询有关
package_id
的信息——响应包含有关包的各种信息,但没有名称。是的,我还添加了一个
meta_data_only=false
,以防万一这不是默认值。

我还发现了 StorefrontAPI——它有一个带有

packagedetails
参数的
packageids
查询,看起来很棒。它甚至达到了我的预期——但仅限于少数几个软件包。我在这个 API 上看到的每个提示都表明它是非官方的,并且由于它不提供绝大多数包的信息,因此它显然不是 SteamDB 使用的 API(显然,他们有每个包的信息)。

我还发现了一个

CMsgClientPackageInfoRequest
protobuf 消息,它有一个未指定的
buffer
响应(这种情况偶尔会发生;该缓冲区往往是包含各种项目的键值,但我目前不知道它实际包含什么) 。不幸的是,当我查找消息 ID 以便实际发送它时,我发现了 833 —— SteamKit 没有这个 ID,除了在标记为“已删除”的文件中。尽管如此,我还是尝试发送它,但没有收到任何回复...我不知道我是否使用正确,但发现 ID 为“已删除”让我认为这不是问题。

我还在 SteamKit 和原始文件中查找各种关键字,并查看弹出的内容,但什么也没有。

当然,谷歌通常对此没有帮助。

steam steam-web-api steam-protobufs
1个回答
0
投票

谷歌搜索 packageid,它似乎可以使用 Steam 支持页面来查找任何 packageid 的名称。但这被用来找出哪些是未宣布的/私有的软件包,这可能就是 Valve 明显删除此功能的原因。

但是,对于您拥有/拥有许可证的 packageid,您似乎可以使用最近添加的“我想从我的帐户中永久删除此游戏”支持页面,该页面可让您查看包的名称和 ID(后者)仅在 HTML 中)对于您拥有的 appid:https://help.steampowered.com/en/wizard/HelpWithGameIssue/?appid=APP_ID&issueid=123
您实际上不必继续删除 - 有一个确认按钮。

杂项。备注:
如果您确实删除了某个软件包,则可以使用 https://help.steampowered.com/en/wizard/HelpPackageRestored?appid=APP_ID&packageid=PACKAGE_ID 恢复它,它还会显示软件包名称。不过要小心 - 该页面显然会在您打开包后立即恢复包,因此如果您不想潜在地弄乱您帐户上包的状态,则前一个可能是抓取的最佳选择。

可以通过在此处输入游戏名称来找到这两个 URL:https://help.steampowered.com/en/wizard/HelpWithGame 并单击相应的选项以在库中添加/删除它们。

© www.soinside.com 2019 - 2024. All rights reserved.