OpenAIException – “Your request was blocked” with custom API base

用户在 OpenAI Python SDK v2.x.x 中通过 OpenAI(base_url="...") 设置自定义 API base URL(例如第三方 API 网关或代理服务),随后调用 chat/completions 等接口时出现该错误。即使 API key 有效且使用 request

OpenAIException – "Your request was blocked" with custom API base

OpenAIException – “Your request was blocked” with custom API base

快速结论:此报错通常在使用 OpenAI Python SDK 设置自定义 API base URL 时触发,根本原因可能是目标服务器(如反向代理或第三方网关)的 Cloudflare 反机器人系统拦截了 SDK 默认的 User-Agent 请求头。优先排查并修改 SDK 客户端中的默认请求头。

问题场景

用户在 OpenAI Python SDK v2.x.x 中通过 OpenAI(base_url="...") 设置自定义 API base URL(例如第三方 API 网关或代理服务),随后调用 chat/completions 等接口时出现该错误。即使 API key 有效且使用 requests 库直接发送 HTTP 请求可正常返回,但通过 SDK 即被拦截。

报错原文

OpenAIException - Your request was blocked.

原因分析

根据 Issue 评论区反馈,该问题不是 OpenAI 官方 API 的拦截,而是自定义 API base 对应的服务器(通常是带有 Cloudflare 保护的反代或第三方网关)检测到 SDK 默认的 User-Agent(例如“OpenAI/Python 2.x.x”)等 HTTP 请求头不符合浏览器行为特征,触发了 Cloudflare 反机器人系统,导致请求被拒绝。直接使用 requests 库时,由于默认 User-Agent 不同(通常类似“python-requests/2.x.x”),可能并未触发同样的风控策略,或者用户手动携带了浏览器头。

环境排查

  • Python 版本:3.13(Issue 中使用)
  • OpenAI Python SDK 版本:v2.x.x
  • 操作系统:Windows
  • 确认是否使用了自定义 base_url 而非官方的 https://api.openai.com
  • 尝试用 curlrequests 直接请求自定义 base URL,验证是否正常;若正常,则说明 SDK 客户端头部是嫌疑对象

解决步骤

  1. 在初始化 OpenAI 客户端时,通过 default_headers 参数覆盖默认的 User-Agent 为模拟浏览器的值:
from openai import OpenAI

client = OpenAI(
    api_key="your_api_key_here",
    default_headers={
        "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 "
                      "(KHTML, like Gecko) Chrome/122.0.0.0 Safari/537.36"
    }
)

可优先尝试:至少修改 User-Agent 字段。很多案例中仅修改此项即可解决。

  1. 若仅修改 User-Agent 无效,可以进一步模拟完整的浏览器请求头集合(根据 Issue 用户反馈,替换全部头部后生效),示例如下:
from openai import OpenAI

client = OpenAI(
    api_key="your_api_key_here",
    default_headers={
        "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 "
                      "(KHTML, like Gecko) Chrome/122.0.0.0 Safari/537.36",
        "Accept": "application/json, text/plain, */*",
        "Accept-Language": "en-US,en;q=0.9",
        "Content-Type": "application/json",
        "Origin": "https://platform.openai.com",
        "Referer": "https://platform.openai.com/",
        "Connection": "keep-alive",
        "sec-ch-ua": '"Chromium";v="122", "Not:A-Brand";v="99"',
        "sec-ch-ua-mobile": "?0",
        "sec-ch-ua-platform": '"Windows"',
        "Sec-Fetch-Site": "same-site",
        "Sec-Fetch-Mode": "cors",
        "Sec-Fetch-Dest": "empty"
    }
)

验证方法

修改请求头后,重新发送一个简单的 Chat Completion 请求(例如 client.chat.completions.create(model="gpt-3.5-turbo", messages=[...])),若不再抛出 OpenAIException - Your request was blocked. 则问题解决。

参考来源

openai/openai-python #2879

GamsGo AI

AI 工具推荐

想把多个 AI 模型放在一个入口?

GamsGo AI 集成 ChatGPT、DeepSeek、Gemini、Claude、Midjourney、Veo 等常用模型,适合写作、绘图、视频和日常 AI 工作流。

了解 GamsGo AI

推广链接:通过此链接购买,我可能获得佣金,不影响你的价格。

celebrityanime
celebrityanime
文章: 7997

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注