如何通过 ChatGPT 账户运行本地脚本和 Web 应用,而无需使用付费的 OpenAI API

OpenAI API 的账单增长速度比你最新的副业项目完成得还快。与此同时,许多人已经有了付费的 ChatGPT Plus 订阅,但每次访问 gpt-5.4-mini 等模型或生成图片时,仍需再次付费。
EvanZhouDev/openai-oauth 项目提供了一种避免这种双重付费的方法。它可以将普通 ChatGPT 账户转换为 API 端点,完全兼容标准 OpenAI 客户端和 Vercel AI SDK。
为什么要运行本地代理
OpenAI 提供了 Codex CLI 工具用于代码操作。在底层,这个 CLI 向内部端点 chatgpt.com/backend-api/codex 发起请求,使用 OAuth 授权。
该库 openai-oauth 拦截这些令牌并启动一个本地 HTTP 服务器。你向 localhost:10531/v1 发送标准请求,库会将其转换为 ChatGPT 请求。
该工具解决了两个问题:
- 为脚本和工具启动本地服务器,无需购买 API 密钥。
- 为第三方 React 应用提供"使用 ChatGPT 登录"按钮。用户使用自己的账户登录,请求通过他们自己的订阅进行。
一条命令本地启动
测试代理最快的方式是通过 CLI。无需输入任何 API 密钥。
npx openai-oauth
该工具会打开浏览器窗口进行 ChatGPT 授权,将令牌保存到 ~/.codex/auth.json,并在控制台输出地址:
OpenAI-compatible endpoint ready at http://127.0.0.1:10531/v1
Use this as your OpenAI base URL. No API key is required.
Available Models: gpt-5.6-terra, gpt-5.6-sol, gpt-image-2
可以使用 --detach 标志将服务器切换到后台模式,或使用 logs 和 stop 命令进行管理。
如果你使用 TypeScript 编写,则无需启动单独的代理进程。该库可以直接在你的代码中连接:
npm i @openai-oauth/local @openai-oauth/ai-sdk ai
import { createOpenAIOAuth } from "@openai-oauth/ai-sdk";
import { openaiCredentials } from "@openai-oauth/local";
import { generateText } from "ai";
const openai = createOpenAIOAuth(openaiCredentials());
const result = await generateText({
model: openai("gpt-5.4-mini"),
prompt: "Привет!",
});
代码从本地 Codex 配置文件中获取授权,并直接向 ChatGPT 后端发送请求。
SDK 工作原理
该库架构分为两个层级:凭证源和客户端适配器。

授权源负责获取令牌:
@openai-oauth/local从本地磁盘的~/.codex目录读取令牌。@openai-oauth/react从用户的浏览器会话中获取令牌。
适配器将令牌包装成所需格式:
@openai-oauth/ai-sdk为 Vercel AI SDK 准备 provider。@openai-oauth/openai-client为官方openai包创建配置。@openai-oauth/core提供低级别的fetch和baseURL,可用于任何其他客户端。
以下是使用官方 openai 客户端的示例:
import { createOpenAIOptions } from "@openai-oauth/openai-client";
import { openaiCredentials } from "@openai-oauth/local";
import OpenAI from "openai";
const client = new OpenAI(createOpenAIOptions(openaiCredentials()));
const response = await client.chat.completions.create({
model: "gpt-5.4-mini",
messages: [{ role: "user", content: "Привет!" }],
});
图像生成
该仓库支持使用 GPT Image 2 模型工作。端点 /v1/images/generations 和 /v1/images/edits 的代理方式与文本模型相同。
通过 cURL 的示例请求:
curl http://127.0.0.1:10531/v1/images/generations \
-H "Content-Type: application/json" \
-d '{"model":"gpt-image-2","prompt":"A tiny house in a forest"}'
或在代码中使用 Vercel AI SDK:
const result = await generateImage({
model: openai.image("gpt-image-2"),
prompt: "A tiny house in a forest",
});
在 React 中使用 ChatGPT 登录

v2 中最诱人的功能是 Web 服务的现成授权。你安装 @openai-oauth/react 包并向界面添加一个按钮:
import { SignInWithChatGPT } from "@openai-oauth/react";
export default function LoginPage() {
return <SignInWithChatGPT />;
}
浏览器会阻止对第三方 API 的直接调用(由于 CORS)。因此客户端将授权头发送到你的后端,后端再将请求转发。
为了安全传输 OAuth 会话,用户需要安装 Chrome 或 Firefox 的"使用 ChatGPT 登录"浏览器扩展。现成的按钮会自动检测扩展是否存在,必要时提供安装提示。在浏览器内部,会话使用 WebCrypto 加密并存储在 IndexedDB 中。
局限性和风险
你不能称这个项目是完全通用的。它有明显的局限性:
- 可用模型列表仅限于 Codex CLI 为你的计划提供的模型。
- Web 应用授权仅在 Chrome 和 Firefox 中可用。尚不支持 Safari。
- CLI 中的
/v1/responses端点是无状态的。你需要在每次请求中传递完整的对话历史。 - 非官方使用 ChatGPT 后端违反 OpenAI 的服务条款。
该项目不应用于有大量用户的公共生产服务。账户池化或将令牌传递给第三方可能导致你的 ChatGPT 账户被封禁。
谁会发现这个仓库有用
该库以其个人开发、副业项目和原型测试的启动简便性而胜出。你可以在本地调试时访问 OpenAI 模型,而无需在 API 控制台绑定信用卡。
Apache-2.0 许可证开放代码用于任何实验。你可以通过在终端运行 npx openai-oauth 在几分钟内试用代理。
相关项目