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

请求MagicEden接口获取JSON失败,报JSONDecodeError如何解决?

问题解决方法

这个报错是因为接口返回的内容不是有效的JSON格式,大概率是网站的反爬机制识别出你的请求不是来自浏览器,返回了非JSON内容(比如验证页面、空内容)。可以按以下步骤解决:

  • 先排查返回内容:在解析JSON前,先打印响应的状态码和文本,确认实际返回的是什么:

    import requests
    url = 'https://api-mainnet.magiceden.io/idxv2/getBidsByMintAddresses?hideExpired=true&mintAddresses=GXXBt4tzJ6aGoNvz87Xzh1PqXwB4qVRdQdHcX65iXtRZ&direction=1&field=2&limit=500&offset=0'
    response = requests.get(url)
    print(response.status_code)
    print(response.text[:500])  # 打印前500字符查看内容
    

    如果状态码不是200,或者返回的是HTML/验证码页面,就说明被反爬拦截了。

  • 添加请求头模拟浏览器:给请求加上浏览器的User-Agent标识,让服务器认为是浏览器请求:

    import requests
    import json
    
    url = 'https://api-mainnet.magiceden.io/idxv2/getBidsByMintAddresses?hideExpired=true&mintAddresses=GXXBt4tzJ6aGoNvz87Xzh1PqXwB4qVRdQdHcX65iXtRZ&direction=1&field=2&limit=500&offset=0'
    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'
    }
    response = requests.get(url, headers=headers)
    # 先检查请求是否成功
    if response.status_code == 200:
        try:
            data = json.loads(response.text)
            print(data)
        except json.JSONDecodeError:
            print("返回内容不是JSON,内容片段:", response.text[:500])
    else:
        print(f"请求失败,状态码:{response.status_code}")
    
  • 额外注意事项:

    • 如果加了User-Agent还是不行,可以从浏览器的请求里复制更多请求头(比如Accept、Referer)加到代码中;
    • 部分网站会校验Cookie,你可以从浏览器中复制对应接口的Cookie,加到请求的cookies参数里;
    • 不要频繁发送请求,避免IP被封禁。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.23 05:00:24