调用VirusTotal API v3触发KeyError: 'data'问题求助
解决VirusTotal API v3调用时的KeyError: 'data'问题
以下是可能的原因和对应的解决方法:
先排查实际返回的响应内容
在报错的代码行之前,先打印完整的decodedResponse,比如加一行print(decodedResponse)。很多时候API返回的是错误信息而非预期数据——比如API密钥无效、请求超限、URL未被收录,这时候响应里会有error字段而不是data。检查API配置与权限
确认脚本里的API密钥是否正确配置,免费版密钥有请求次数限制(每分钟最多4次),超限后会返回错误响应。另外,确保密钥有访问URL分析端点的权限。确认API请求端点是否正确
VirusTotal API v3中,查询已收录的URL需要先将URL进行不带填充的base64编码作为url_id,请求端点是/urls/{url_id};如果URL未被收录,需要先通过POST /urls提交URL,再用返回的分析链接获取结果。如果脚本里用了错误的端点(比如IP分析的端点),自然得不到data字段。添加异常处理逻辑
不要直接硬取data层级,先做判断避免KeyError:# 替换原有的取值代码 if "error" in decodedResponse: print(f"请求失败: {decodedResponse['error']['message']}") elif "data" not in decodedResponse: print("未找到URL分析数据,可能是URL未被收录或请求有误") else: last_analysis_date = decodedResponse["data"]["attributes"]["last_analysis_date"] # 后续处理逻辑
内容的提问来源于stack exchange,提问作者Korey Mendes
相关产品推荐
相关产品推荐

