Python调用Scratch API获取ID值遇请求超限问题求助
解决Scratch API请求返回"Too many requests"的问题
问题原因
Scratch的API会对无标识的默认请求进行限流,或是你的请求频率超出限制,导致返回{"response": "Too many requests"}。
解决方案
1. 添加请求头模拟浏览器请求
给requests.get加上User-Agent请求头,让API识别请求为合法的浏览器发起请求,规避基础限流。
2. 控制请求频率
若需要多次请求,添加适当延迟,避免短时间内发送大量请求触发限流。
3. 正确解析JSON获取ID
请求成功后直接解析JSON响应,提取目标ID值。
修改后的代码示例
import requests import time # 配置请求头,模拟浏览器请求 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' } # 发起API请求 response_API = requests.get('https://api.scratch.mit.edu/users/FlyPhoenix/', headers=headers) # 处理响应结果 if response_API.status_code == 200: data = response_API.json() user_id = data['id'] print(f"用户ID: {user_id}") else: print(f"请求失败,状态码: {response_API.status_code},响应内容: {response_API.text}") # 若需循环请求,添加延迟避免限流 # time.sleep(1) # 每次请求间隔1秒
补充说明
User-Agent可以直接复制自己浏览器的请求头标识,或使用通用的浏览器标识字符串- 如果仍触发限流,进一步延长请求间隔时间,检查是否存在其他频率限制规则
内容的提问来源于stack exchange,提问作者FlyPhoenix
相关产品推荐
相关产品推荐

