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

Python3调用NVD RESTful API发起GET请求出现JSONDecodeError如何解决?

问题排查与解决方案

这个报错的核心原因是调用的接口返回的内容不是合法JSON格式,根本原因是你构造的NVD API请求URL不符合规范,可按以下步骤排查修复:

  • 第一步:先加调试逻辑确认请求状态,不要直接调用.json()方法,先打印响应状态码和原始返回内容,排查是不是请求本身出错(比如404、403、被限流)
    调试代码示例:
    import requests
    
    response = requests.get('https://services.nvd.nist.gov/rest/json/CVE-2021-40463/1.0/')
    # 打印状态码
    print("响应状态码:", response.status_code)
    # 打印前500字符的原始返回内容,避免输出过长
    print("返回原始内容:", response.text[:500])
    
    运行这段代码会看到状态码为404,说明你请求的路径不存在,返回的是404错误页内容,自然无法解析为JSON。
  • 第二步:修正API请求URL,单CVE查询的正确请求格式是把CVE编号作为cveId查询参数传递,使用标准的cves/2.0接口路径,正确的URL格式为https://services.nvd.nist.gov/rest/json/cves/2.0?cveId=CVE-2021-40463
  • 第三步:补充可选优化配置,NVD API对未携带密钥的请求有6次/分钟的速率限制,低频请求可以不用密钥,请求频繁可以申请API密钥放到请求头中;也可以补充User-Agent头避免被服务端拦截。

修正后的完整可运行代码:

import requests

# 基础接口地址
url = "https://services.nvd.nist.gov/rest/json/cves/2.0"
params = {
    "cveId": "CVE-2021-40463"
}
# 补充请求头避免被拦截
headers = {
    "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36"
    # 有API密钥可以新增配置:"apiKey": "你的NVD API密钥"
}

response = requests.get(url, params=params, headers=headers)
# 先判断请求是否成功再解析JSON
if response.status_code == 200:
    cve_data = response.json()
    print(cve_data)
else:
    print(f"请求失败,状态码:{response.status_code},错误信息:{response.text}")

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 03:15:01