
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 - 尝试用
curl或requests直接请求自定义 base URL,验证是否正常;若正常,则说明 SDK 客户端头部是嫌疑对象
解决步骤
- 在初始化
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 字段。很多案例中仅修改此项即可解决。
- 若仅修改 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. 则问题解决。



