You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何通过Steam API从CS2物品检视链接获取classId以提取float值与paint seed

解决CS2 Steam市场物品classId获取及float/seed提取问题

一、从两种检视链接提取classId

Steam的CS2物品检视链接分两种格式(M开头对应市场物品,S开头对应玩家库存物品),classId的提取位置不同,以下是具体方法:

1. M开头的市场检视链接

格式示例(URL编码后):
steam://rungame/730/76561202255233023/+csgo_econ_action_preview%20M%7C%7C<classid>%7C%7C<instanceid>%7C%7C<market_hash_name>

提取步骤:

  • 先解码URL编码字符(%20替换为空格,%7C替换为|)
  • 用||分割解码后的字符串,第二个元素就是classId

Python代码实现:

import urllib.parse

# 示例市场检视链接
market_inspect_link = "steam://rungame/730/76561202255233023/+csgo_econ_action_preview%20M%7C%7C12345%7C%7C67890%7C%7CAK-47%20%7C%20Redline"
decoded_link = urllib.parse.unquote(market_inspect_link)
parts = decoded_link.split("||")
class_id = parts[1]
print(f"Market ClassID: {class_id}")  # 输出: 12345

2. S开头的玩家库存检视链接

格式示例(URL编码后):
steam://rungame/730/76561202255233023/+csgo_econ_action_preview%20S%7C%7C<steamid>%7C%7C<classid>%7C%7C<instanceid>%7C%7C<assetid>

提取步骤:

  • 同样先解码URL编码字符
  • 用||分割后,第三个元素就是classId

Python代码实现:

import urllib.parse

# 示例玩家库存检视链接
inventory_inspect_link = "steam://rungame/730/76561202255233023/+csgo_econ_action_preview%20S%7C%7C765611980XXXXXXX%7C%7C12345%7C%7C67890%7C%7C98765"
decoded_link = urllib.parse.unquote(inventory_inspect_link)
parts = decoded_link.split("||")
class_id = parts[2]
print(f"Inventory ClassID: {class_id}")  # 输出: 12345

二、通过classId获取float值与Paint Seed

拿到classId后,有两种可靠方式获取目标属性:

方法1:调用Steam官方API(需API Key)

  1. 先在Steam开发者平台申请API Key(免费,需绑定Steam账号)
  2. 从检视链接中同时提取instanceid(M链接的第三个元素,S链接的第四个元素)
  3. 若为市场物品,需先获取assetid(通过登录后的Steam会话访问市场页面解析),再调用IEconItems_730/GetAssetInfo接口获取详细属性

Python代码示例:

import requests
import urllib.parse
import re

API_KEY = "你的Steam API Key"
APP_ID = 730
market_hash_name = "AK-47 | Redline"
class_id = "12345"
instance_id = "67890"

# 1. 登录Steam会话(需替换为自己的登录Cookie)
session = requests.Session()
session.cookies.set("steamLoginSecure", "你的Steam登录Cookie值")

# 2. 访问市场物品页面提取assetid
market_url = f"https://steamcommunity.com/market/listings/{APP_ID}/{urllib.parse.quote(market_hash_name)}"
response = session.get(market_url)
asset_match = re.search(r'var g_rgAssets = ({.*?});', response.text)
if not asset_match:
    print("无法提取assetid,请检查登录状态或链接有效性")
    exit()

asset_data = eval(asset_match.group(1))
asset_id = asset_data[str(APP_ID)][str(instance_id)][0]['id']

# 3. 调用API获取float和paint seed
asset_info_url = f"https://api.steampowered.com/IEconItems_730/GetAssetInfo/v1/?key={API_KEY}&appid={APP_ID}&assetid={asset_id}"
info_response = requests.get(asset_info_url)
info_data = info_response.json()

if info_data.get("success"):
    float_value = info_data['result']['assets'][0]['float_value']
    paint_seed = info_data['result']['assets'][0]['paint_seed']
    print(f"Float值: {float_value:.6f}")
    print(f"Paint Seed: {paint_seed}")
else:
    print("API请求失败,请检查API Key或assetid")

方法2:通过Steam物品解析接口(无需API Key)

直接向Steam的物品解析接口发送请求,传入检视链接即可获取属性,需携带登录Cookie:

Python代码示例:

import requests

inspect_link = "steam://rungame/730/76561202255233023/+csgo_econ_action_preview%20M%7C%7C12345%7C%7C67890%7C%7CAK-47%20%7C%20Redline"

# 初始化登录会话(替换为自己的Steam Cookie)
session = requests.Session()
session.cookies.set("steamLoginSecure", "你的Steam登录Cookie值")

# 发送解析请求
parse_url = "https://steamcommunity.com/economy/parseitem/"
payload = {
    "appid": 730,
    "itemurl": inspect_link
}

response = session.post(parse_url, data=payload)
item_data = response.json()

if item_data.get("success"):
    float_value = item_data['iteminfo']['floatvalue']
    paint_seed = item_data['iteminfo']['paintseed']
    print(f"Float值: {float_value:.6f}")
    print(f"Paint Seed: {paint_seed}")
else:
    print(f"解析失败: {item_data.get('error', '未知错误')}")

三、注意事项

  • 若链接解码后分割出错,检查是否存在未正确解码的特殊字符(可手动替换%7C为|)
  • 市场物品的assetid提取需登录Steam,否则无法获取私有资产信息
  • S链接的classId位置为分割后的第三个元素,M链接为第二个,不要混淆

内容的提问来源于stack exchange,提问作者Gaël Kcoh

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.17 04:42:34