Steam API PHP无法获取用户库存 求助排查403错误
解决PHP cURL请求Steam库存返回403 Unsupported request的问题
问题原因
Steam社区服务器会验证请求的客户端身份,默认cURL请求的User-Agent标识会被判定为非浏览器请求,触发反爬机制返回403错误。另外需确认请求的SteamID格式是否为64位数字ID(/profiles/路径要求使用64位ID,而非STEAM_0:X:XXXX格式)。
解决方案
1. 添加浏览器模拟请求头
给cURL补充User-Agent、Accept等常见浏览器请求头,让请求符合浏览器访问的特征:
2. 验证SteamID格式
确保$steamid变量使用的是64位SteamID,可通过SteamID转换工具获取对应格式的ID。
修改后的示例代码
<?php // 替换为目标用户的64位Steam ID $steamid = "7656119XXXXXXXXX"; $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, "https://steamcommunity.com/profiles/$steamid/inventory/json/730/2"); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); curl_setopt($ch, CURLOPT_ENCODING, ''); // 添加浏览器请求头 curl_setopt($ch, CURLOPT_HTTPHEADER, [ 'User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/118.0.0.0 Safari/537.36', 'Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,*/*;q=0.8', 'Accept-Language: en-US,en;q=0.5', 'Connection: keep-alive', 'Upgrade-Insecure-Requests: 1' ]); // 执行请求并获取响应 $response = curl_exec($ch); $http_code = curl_getinfo($ch, CURLINFO_HTTP_CODE); // 检查cURL错误 if(curl_errno($ch)) { echo 'CURL错误: ' . curl_error($ch); } curl_close($ch); $response_data = json_decode($response, true); if(isset($response_data['rgDescriptions'])) { print_r($response_data['rgDescriptions']); } else { echo '获取失败: ' . ($response_data['Error'] ?? '未知错误'); } echo "HTTP状态码: $http_code"; ?>
额外注意事项
- 如果目标库存是私有库存,仅靠请求头无法访问,需要在cURL中携带用户登录Steam后的有效Cookie,但这种方式存在安全风险,建议优先使用Steam官方API进行授权访问。
- 避免频繁发送请求,防止触发Steam的频率限制导致IP被临时封禁。
内容的提问来源于stack exchange,提问作者William Bergman
相关产品推荐
相关产品推荐

