为何调用Steam Inventory API持续返回429状态码?
问题分析与解决建议
以下是导致你持续收到429状态码的可能原因及对应解决方法:
1. 缺失浏览器请求头触发反爬检测
Steam社区API会验证请求来源,默认requests.get()发送的请求未携带User-Agent等浏览器标识,会被判定为非合法请求,触发的限制并非单纯的速率限制,因此间隔多久都无法恢复。
解决方法:添加模拟浏览器的请求头,示例代码:
import requests headers = { '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-Language': 'en-US,en;q=0.9' } link = "http://steamcommunity.com/inventory/STEAMID/APPID/2?l=english&count=2000" response = requests.get(link, headers=headers) if response.status_code == 200: print(response.json()) else: print(f"Status code: {response.status_code}, Response: {response.text}")
2. IP地址被Steam临时封禁
初始几次请求可能因无请求头、单次请求数据量过大等行为触发Steam安全机制,导致你的IP被加入临时黑名单,这类封禁的解除周期通常远长于30分钟。
解决方法:切换网络环境(如手机热点)测试,若切换后能正常请求,说明原IP被限制,需等待Steam自动解除封禁,或联系Steam支持申诉。
3. 单次请求数据量过大触发限制
你设置的count=2000属于单次请求大量数据,即使请求频率低,也可能触发Steam反爬规则,被判定为异常请求。
解决方法:拆分请求,将count参数降低至500以内,分多次获取库存数据。
4. 账户或库存权限异常
若目标STEAMID对应的账户库存设为私有,或账户存在异常状态,可能导致持续返回429(初始请求可能读取的是缓存数据)。
解决方法:手动在浏览器打开该库存链接,确认目标账户库存是否公开、账户状态是否正常。
内容的提问来源于stack exchange,提问作者frol
相关产品推荐
相关产品推荐

