如何通过package-id获取Steam平台的package名称?
如何通过Steam Package-ID获取包名称
方案1:调用登录后的账户许可证API(最可靠,支持所有账户拥有的包)
Steam账户许可页面的后端接口https://store.steampowered.com/account/getlicenses/,在登录状态下发送GET请求,可获取账户关联的所有许可证信息,其中包含packageid和对应的name字段(即包的完整名称)。
示例请求(Python,需携带登录后的Steam cookies):
import requests # 替换为你的登录cookie cookies = { 'steamLoginSecure': '你的steamLoginSecure值', 'sessionid': '你的sessionid值' } response = requests.get('https://store.steampowered.com/account/getlicenses/', cookies=cookies) licenses = response.json() # 遍历或过滤目标package-id for license in licenses['licenses']: print(f"Package ID: {license['packageid']}, 名称: {license['name']}")
方案2:修正CMsgClientPICSProductInfoRequest参数(支持账户有权限/公开包)
你之前使用该请求时可能遗漏了语言参数,导致未返回本地化名称。正确构造请求(以SteamKit2为例):
var request = new ClientMsgProtobuf<CMsgClientPICSProductInfoRequest>(EMsg.ClientPICSProductInfoRequest); request.Body.meta_data_only = false; request.Body.packageids.Add(目标PackageID); // 指定语言,确保返回对应名称 request.Body.language = "schinese"; // 或"english"等语言代码 client.Send(request);
监听EMsg.ClientPICSProductInfoResponse后,在返回的packageinfo的key_values字段中,可提取name条目作为包名称。此方法仅能获取账户有权限访问或公开的包信息。
方案3:Steam Storefront API的packagedetails接口(补充方案,支持公开包)
针对公开可购买的包,可通过指定区域和语言参数调用接口获取信息,部分非公开包需登录后访问。
示例请求:
import requests package_id = 目标PackageID response = requests.get(f"https://store.steampowered.com/api/packagedetails/?packageids={package_id}&cc=CN&l=schinese") data = response.json() if str(package_id) in data and data[str(package_id)]['success']: package_name = data[str(package_id)]['data']['name'] print(f"Package ID: {package_id}, 名称: {package_name}")
参数说明:
cc:国家代码(如CN、US),影响区域包信息l:语言代码(如schinese、english),获取对应语言名称
方案4:解析Steam商店包页面(仅支持有公开页面的包)
部分包有公开商店页面(https://store.steampowered.com/sub/[PackageID]/),可通过爬取页面标题获取名称:
import requests from bs4 import BeautifulSoup package_id = 目标PackageID url = f"https://store.steampowered.com/sub/{package_id}/" response = requests.get(url) soup = BeautifulSoup(response.text, 'html.parser') package_name = soup.title.string.split(' on Steam')[0] print(f"Package ID: {package_id}, 名称: {package_name}")
注意:无公开页面的内部促销包无法通过此方法获取。
内容的提问来源于stack exchange,提问作者Christian Stieber
相关产品推荐
相关产品推荐

