You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python实现VirusTotal API Key验证:如何循环重试校验?

VirusTotal API Key 验证代码问题解析与修复

代码存在的错误

  • 函数auth_vt_apikey仅定义了文档字符串,未包含任何校验逻辑,调用该函数完全无效
  • 校验流程仅执行一次:输入错误API Key后,仅重新获取输入但未再次发起验证请求,程序直接终止
  • 代码结构混乱:核心校验逻辑都在函数外部,不符合代码封装的基本规范
  • 有效性判断不准确:仅通过响应状态码200判断API Key是否有效,VirusTotal在Key无效时仍可能返回200,但响应内容会包含错误提示

改进建议

  • 将所有校验逻辑封装到auth_vt_apikey函数中,提升代码可复用性
  • 使用while循环实现重复校验,直到用户输入有效的API Key
  • 结合响应内容判断有效性,避免状态码误判
  • 增加输入空值的处理,防止用户误输入空字符串

修正后的代码

import requests

def auth_vt_apikey():
    """验证VirusTotal API Key的有效性"""
    api_key = ''
    # 循环校验直到输入有效Key
    while True:
        if not api_key:
            api_key = input("请输入你的VirusTotal API Key: ").strip()
            # 处理空输入
            if not api_key:
                print("API Key不能为空,请重新输入")
                continue
        
        # 发起验证请求,使用简单的文件扫描查询端点
        url = 'https://www.virustotal.com/vtapi/v2/file/report'
        params = {'apikey': api_key, 'resource': 'dummy_hash'}  # dummy_hash用于触发API验证
        
        try:
            response = requests.get(url, timeout=10)
            response.raise_for_status()  # 处理HTTP错误状态码
            result = response.json()
            
            # 根据响应内容判断Key是否有效
            if result.get('response_code') == -2:
                # response_code=-2表示资源不存在,但API Key有效(因为能正常返回API响应)
                print("你的API Key验证通过")
                return api_key
            elif result.get('verbose_msg') == 'Invalid API key':
                print("API Key无效,请重新输入")
                api_key = ''  # 重置api_key,触发重新输入
            else:
                print(f"验证过程出现未知错误: {result.get('verbose_msg')}")
                api_key = ''
        except requests.exceptions.RequestException as e:
            print(f"请求失败: {str(e)}")
            api_key = ''

# 调用函数执行验证
valid_api_key = auth_vt_apikey()

相关学习指南

  • Python循环结构:学习while循环的使用场景,掌握如何通过循环实现重复执行的逻辑
  • 函数封装:了解如何将重复使用的逻辑封装为函数,提升代码的可读性和复用性
  • requests库使用:学习HTTP请求的发送方式,如何处理响应、异常情况,以及解析JSON格式的响应内容
  • API响应解析:学会根据API文档返回的结构,通过键值对提取关键信息,准确判断请求结果

内容的提问来源于stack exchange,提问作者k1np3r

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.12 18:35:40