如何用Python编写函数根据SteamID获取CS:GO物品信息?现有脚本故障求助
修复Steam CSGO库存获取脚本的问题
你的脚本无法运行主要有几个关键问题,以下是修复方案:
核心问题与修复步骤
- 替换HTTP为HTTPS:Steam社区已全面禁用HTTP请求,原URL使用
http会被拒绝或重定向,必须改为https。 - 添加请求头绕过反爬拦截:Steam会拦截无合法浏览器标识的请求,需要在请求中加入
User-Agent头模拟正常访问。 - 增加异常处理:处理网络错误、HTTP状态码错误、JSON解析失败等常见情况,避免脚本直接崩溃。
修复后的完整代码
import urllib.request import json def parseInventory(steam64): # 修正为HTTPS协议的正确URL inventory_url = f"https://steamcommunity.com/profiles/{steam64}/inventory/json/730/2" print(inventory_url) # 模拟浏览器的请求头,避免被Steam拦截 request_headers = { 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/114.0.0.0 Safari/537.36' } try: # 构造带请求头的请求 req = urllib.request.Request(inventory_url, headers=request_headers) with urllib.request.urlopen(req) as response: # 读取并解析返回的JSON数据 inventory_data = json.loads(response.read().decode()) print(inventory_data) except urllib.error.HTTPError as http_err: print(f"HTTP错误: {http_err.code} - {http_err.reason}") except urllib.error.URLError as url_err: print(f"网络连接错误: {url_err.reason}") except json.JSONDecodeError: print("JSON解析失败,可能是返回内容不符合预期(比如库存私有)")
额外说明
- 如果目标玩家的CSGO库存设为私有,该接口会返回空数据或错误响应,需要玩家将库存设为公开,或者使用Steam Web API并申请开发者密钥来访问私有库存。
- 确保输入的
steam64是有效的17位纯数字SteamID,格式错误会导致请求失败。
内容的提问来源于stack exchange,提问作者szczery
相关产品推荐
相关产品推荐

