Come eseguire script locali e app web attraverso un account ChatGPT invece dell'API OpenAI a pagamento

Le bollette dell'API OpenAI crescono più velocemente di quanto il tuo ultimo side project raggiunga il completamento. Nel frattempo, molti hanno già un abbonamento ChatGPT Plus a pagamento, eppure devi pagare di nuovo per ogni richiesta per accedere a modelli come gpt-5.4-mini o generare immagini.
Il progetto EvanZhouDev/openai-oauth offre un modo per evitare questo doppio pagamento. Trasforma un normale account ChatGPT in un endpoint API, completamente compatibile con il client OpenAI standard e il Vercel AI SDK.
Perché eseguire un proxy locale
OpenAI offre lo strumento CLI Codex per lavorare con il codice. Sotto il cofano, questa CLI effettua richieste agli endpoint interni chatgpt.com/backend-api/codex, utilizzando l'autorizzazione OAuth.
La libreria openai-oauth intercetta questi token e avvia un server HTTP locale. Invi richieste standard a localhost:10531/v1, e la libreria le traduce in ChatGPT.
Lo strumento risolve due problemi:
- Avvia un server locale per script e utility senza acquistare chiavi API.
- Fornisce un pulsante "Accedi con ChatGPT" per app React di terze parti. Gli utenti accedono con il proprio account, e le richieste passano attraverso il loro abbonamento.
Avvio locale con un comando
Il modo più veloce per testare il proxy è attraverso la CLI. Non è necessario inserire chiavi API.
npx openai-oauth
L'utility aprirà una finestra del browser per l'autorizzazione ChatGPT, salverà i token in ~/.codex/auth.json, e mostrerà l'indirizzo nella console:
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
Il server può essere inviato in modalità background con il flag --detach, o gestito con i comandi logs e stop.
Se stai scrivendo in TypeScript, non hai bisogno di avviare un processo proxy separato. La libreria si connette direttamente nel tuo codice:
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: "Привет!",
});
Il codice prende l'autorizzazione dal profilo Codex locale e invia richieste direttamente al backend di ChatGPT.
Come funziona l'SDK
L'architettura della libreria è suddivisa in due livelli: Credential Sources e Client Adapters.

Le fonti di autorizzazione gestiscono il recupero dei token:
@openai-oauth/locallegge i token dal disco locale nella directory~/.codex.@openai-oauth/reactestrae il token dalla sessione del browser dell'utente.
Gli adapter avvolgono il token nel formato richiesto:
@openai-oauth/ai-sdkprepara un provider per Vercel AI SDK.@openai-oauth/openai-clientcrea una configurazione per il pacchetto ufficialeopenai.@openai-oauth/corefornisce un clientfetchebaseURLdi basso livello per l'uso in qualsiasi altro client.
Ecco un esempio di lavoro con il client ufficiale 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: "Привет!" }],
});
Generazione di immagini
Il repository supporta il lavoro con il modello GPT Image 2. Gli endpoint /v1/images/generations e /v1/images/edits vengono proxyati allo stesso modo dei modelli di testo.
Esempio di richiesta tramite 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"}'
Oppure nel codice con Vercel AI SDK:
const result = await generateImage({
model: openai.image("gpt-image-2"),
prompt: "A tiny house in a forest",
});
Accedi con ChatGPT in React

La funzionalità più interessante nella v2 è l'autorizzazione pronta all'uso per i servizi web. Installi il pacchetto @openai-oauth/react e aggiungi un pulsante alla tua interfaccia:
import { SignInWithChatGPT } from "@openai-oauth/react";
export default function LoginPage() {
return <SignInWithChatGPT />;
}
I browser bloccano le chiamate dirette alle API di terze parti a causa di CORS. Ecco perché il client invia le intestazioni di autorizzazione al tuo backend, e il backend fa da proxy alla richiesta.
Per la trasmissione sicura della sessione OAuth, gli utenti devono installare l'estensione del browser "Accedi con ChatGPT" per Chrome o Firefox. Il pulsante pronto all'uso rileverà automaticamente la presenza dell'estensione e offrirà di installarla se necessario. All'interno del browser, la sessione viene crittografata usando WebCrypto e archiviata in IndexedDB.
Limitazioni e rischi
Non puoi definire questo progetto completamente universale. Ha limitazioni notevoli:
- L'elenco dei modelli disponibili è limitato a ciò che Codex CLI fornisce per il tuo piano.
- L'autorizzazione delle app web funziona solo in Chrome e Firefox. Nessun supporto per Safari ancora.
- L'endpoint
/v1/responsesnella CLI funziona in modalità stateless. Dovrai passare l'intera cronologia della conversazione in ogni richiesta. - L'uso non ufficiale del backend di ChatGPT viola i termini di servizio di OpenAI.
Il progetto non dovrebbe essere utilizzato per servizi di produzione pubblici con molti utenti. Il pooling di account o la condivisione di token con terze parti può portare al ban del tuo account ChatGPT.
A chi sarà utile questo repository
La libreria vince per la sua semplicità di avvio per lo sviluppo individuale, i side project e il test di prototipi. Ottieni l'accesso ai modelli OpenAI durante il debug locale senza collegare una carta di credito alla dashboard API.
La licenza Apache-2.0 apre il codice per qualsiasi esperimento. Puoi provare il proxy in azione in un paio di minuti eseguendo npx openai-oauth nel tuo terminale.
Progetti correlati