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

使用Tkinter调用ChatGPT遇JSONDecodeError及Cloudflare拦截求助

解决调用ChatGPT API时的Cloudflare拦截与JSON解码错误

问题本质

你遇到的json.decoder.JSONDecodeError不是API密钥的问题,而是请求被Cloudflare安全拦截了——API返回的不是预期的JSON数据,而是一段拦截提示的HTML代码,导致JSON解析直接失败。

初学者友好的解决步骤

  • 确认API端点正确
    必须使用OpenAI官方的API接口地址,比如调用GPT-3.5/4聊天接口的地址是https://api.openai.com/v1/chat/completions,别用ChatGPT网页版的地址(网页版有严格的反爬验证)。

  • 添加浏览器风格的User-Agent请求头
    Cloudflare会识别请求的客户端身份,脚本默认的请求头很容易被判定为机器人。在你的请求头里加上一个模拟浏览器的标识,示例代码:

    headers = {
        "Authorization": "Bearer 你的API密钥",
        "Content-Type": "application/json",
        "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的JSON数据符合官方要求,比如聊天接口的正确格式:

    payload = {
        "model": "gpt-3.5-turbo",  # 注意模型名字别写错
        "messages": [{"role": "user", "content": "你要问的问题"}]
    }
    

    格式错误不仅会导致请求失败,也可能触发安全拦截。

  • 控制请求频率
    短时间内频繁发送请求会触发限流或拦截,每次请求后可以加1-2秒的延迟:

    import time
    # 发送请求后
    time.sleep(1)
    
  • 检查网络代理(如果需要)
    若你所在地区无法直接访问OpenAI API,要配置正确的代理。用requests库的话,示例代码:

    proxies = {
        "http": "http://你的代理地址:端口",
        "https": "http://你的代理地址:端口"
    }
    response = requests.post(API地址, headers=headers, json=payload, proxies=proxies)
    
  • 添加异常捕获,避免程序崩溃
    在代码里先检查响应状态码,再解析JSON,提前发现拦截问题:

    import requests
    import json
    
    response = requests.post(API地址, headers=headers, json=payload)
    if response.status_code != 200:
        print(f"请求失败,状态码:{response.status_code}")
        print("返回内容:", response.text)  # 可以直接看到是不是拦截页面
    else:
        try:
            result = response.json()
            # 处理返回的聊天内容
            print(result["choices"][0]["message"]["content"])
        except json.JSONDecodeError:
            print("解析失败,返回的不是有效JSON数据")
            print("返回内容:", response.text)
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.02 13:04:54