A API da OpenAI vive expirando? Crie um proxy particular com Workers, grátis e mais estável

Introdução
Na semana passada, eu queria desenvolver um aplicativo com ChatGPT. Terminei o código do frontend, mas, ao chamar a API, a conexão expirou — a OpenAI não pode ser acessada diretamente da China. Testei alguns serviços de proxy comprados no Taobao, mas sempre fiquei com receio de que não fossem confiáveis e de que minha API Key vazasse. Também pensei em contratar uma VPS, mas isso custaria algumas dezenas de yuans por mês, além do trabalho para configurar e manter o servidor.
Depois descobri a solução com Cloudflare Workers: não custa nada e fica pronta em 5 minutos. Estou usando há mais de dois meses e gostei muito — além de estável, ela é mais rápida do que muitos proxies pagos. Neste artigo, compartilho todo o processo de configuração, com um código pronto para usar.
Por que escolher o Cloudflare Workers?
Custo zero e capacidade suficiente para desenvolvedores individuais
O plano gratuito do Workers oferece 100 mil requisições por dia e mil por minuto. Talvez você se pergunte se algo gratuito realmente funciona bem. Eu também pensei assim no início. Mas, depois de usar, percebi que essa cota é mais do que suficiente para desenvolvimento pessoal, estudos ou projetos pequenos.
Vamos fazer as contas: se cada requisição levar, em média, 2 segundos e você fizer chamadas sem parar durante uma jornada de 8 horas, ainda assim serão pouco mais de 2 mil requisições. Para consumir uma cota de 100 mil, seria preciso manter esse ritmo por vários dias.
Sem servidor para comprar e sem dor de cabeça
Em uma solução tradicional, você precisa contratar uma VPS, instalar o Nginx, configurar um proxy reverso e ainda se preocupar com a possibilidade de o servidor cair. Com Workers, nada disso é necessário — a Cloudflare cuida de toda a infraestrutura, e você só precisa escrever algumas linhas de código.
O Workers também roda na rede global de CDN da Cloudflare. Em teoria, ele pode ser mais rápido do que um único servidor montado por você, já que a Cloudflare tem nós em mais de 300 cidades ao redor do mundo.
Proteção nativa para a API Key
Esse ponto é especialmente importante. Se você chamar a API da OpenAI diretamente pelo frontend, a chave ficará exposta no navegador e qualquer pessoa poderá vê-la ao abrir as ferramentas de desenvolvedor. Com o Workers como camada intermediária, o frontend chama apenas o endereço do seu Worker, enquanto a API Key real permanece armazenada com segurança nas variáveis de ambiente da Cloudflare.
"Em agosto de 2025, a Cloudflare firmou uma parceria com a OpenAI para integrar os modelos de código aberto da OpenAI diretamente ao Workers AI, oferecendo gratuitamente uma cota diária de 10.000 Neurons"
Uma nova vantagem em 2025
Em agosto de 2025, a Cloudflare também firmou uma parceria com a OpenAI e integrou diretamente ao Workers AI os modelos de código aberto da empresa. Isso significa que, além de atuar como proxy para a API original, você pode usar os modelos oferecidos pela própria Cloudflare, com uma cota diária gratuita de 10.000 Neurons.
Preparativos antes da configuração
Os preparativos são bem simples. Você vai precisar de:
Contas e recursos:
- Uma conta Cloudflare (o cadastro é gratuito e leva poucos minutos)
- Uma API Key da OpenAI ou do Claude (provavelmente você já tem uma)
- Um domínio (opcional, pois o Workers oferece gratuitamente um subdomínio .workers.dev)
Conhecimentos técnicos:
- Noções básicas de JavaScript (basta entender uma requisição fetch)
- Entendimento básico de HTTP
Tempo necessário:
- Primeira configuração: 5 a 10 minutos
- Depois de se familiarizar: 3 minutos
Na prática: crie um proxy da OpenAI em 5 minutos
Etapa 1: crie o Worker
Entre no painel da Cloudflare e localize “Workers & Pages” no menu lateral. Clique em “Create Application” e selecione “Create Worker”.
A Cloudflare atribui automaticamente um nome aleatório ao seu Worker (por exemplo, aged-shadow-1234). Você pode trocá-lo por algo de sua preferência, como “openai-proxy”. Depois, clique em “Deploy” para fazer a implantação.
Nesse momento, você já terá um Worker em execução, embora ele ainda não faça nada.
Etapa 2: escreva o código
Clique em “Edit Code” para abrir o editor e cole o código abaixo:
export default {
async fetch(request, env) {
const url = new URL(request.url);
// Substitui o domínio pelo endereço da API da OpenAI
url.hostname = 'api.openai.com';
// Cria uma nova requisição
const newRequest = new Request(url, {
method: request.method,
headers: request.headers,
body: request.body
});
// Encaminha a requisição e retorna a resposta
const response = await fetch(newRequest);
// Trata o acesso entre origens com CORS
const newResponse = new Response(response.body, response);
newResponse.headers.set('Access-Control-Allow-Origin', '*');
newResponse.headers.set('Access-Control-Allow-Methods', 'GET, POST, PUT, DELETE, OPTIONS');
newResponse.headers.set('Access-Control-Allow-Headers', 'Content-Type, Authorization');
return newResponse;
}
};
Em termos simples, esse código faz o seguinte:
- Recebe a requisição enviada pelo frontend
- Troca o domínio do endereço da requisição por
api.openai.com - Encaminha a requisição modificada para a OpenAI
- Devolve ao frontend a resposta da OpenAI sem alterações
- Também resolve o problema de acesso entre origens (CORS)
Clique em “Save and Deploy” para salvar.
Etapa 3: faça um teste
Depois da implantação, você verá a URL do Worker, por exemplo, https://openai-proxy.你的名字.workers.dev.
Faça um teste com curl (substitua YOUR_API_KEY pela sua chave da OpenAI):
curl https://openai-proxy.你的名字.workers.dev/v1/chat/completions \
-H "Content-Type: application/json" \
-H "Authorization: Bearer YOUR_API_KEY" \
-d '{
"model": "gpt-3.5-turbo",
"messages": [{"role": "user", "content": "Hello!"}]
}'
Se você receber uma resposta normal da OpenAI, parabéns: deu certo!
Avançado: suporte a vários serviços de IA
Proxy para a API do Claude
A estrutura da API do Claude é um pouco diferente da OpenAI, principalmente nos headers da requisição. Modifique o código para oferecer suporte ao Claude:
export default {
async fetch(request, env) {
const url = new URL(request.url);
// Identifica o serviço pelo caminho
if (url.pathname.startsWith('/claude')) {
// Remove o prefixo /claude e encaminha para a Anthropic
url.pathname = url.pathname.replace('/claude', '');
url.hostname = 'api.anthropic.com';
} else {
// O padrão é a OpenAI
url.hostname = 'api.openai.com';
}
const newRequest = new Request(url, {
method: request.method,
headers: request.headers,
body: request.body
});
const response = await fetch(newRequest);
const newResponse = new Response(response.body, response);
newResponse.headers.set('Access-Control-Allow-Origin', '*');
return newResponse;
}
};
Agora, o acesso a /claude/v1/messages será encaminhado para a API do Claude.
Proxy para a API do Gemini
O endpoint da API do Gemini, do Google, é generativelanguage.googleapis.com. Basta adicionar uma condição:
if (url.pathname.startsWith('/gemini')) {
url.pathname = url.pathname.replace('/gemini', '');
url.hostname = 'generativelanguage.googleapis.com';
}
Assim, um único Worker consegue atuar como proxy para três serviços de IA.
Boas práticas de segurança
Não insira a API Key diretamente no código
Talvez você tenha visto tutoriais que colocam a API Key diretamente no código do Worker. Não faça isso! O código é armazenado como texto simples e pode acabar sendo compartilhado por engano.
O jeito correto é usar variáveis de ambiente. Nas configurações do Worker, localize “Variables and Secrets” e adicione uma variável de ambiente:
- Nome:
OPENAI_API_KEY - Valor:
sua API Key - Tipo: selecione “Secret” (armazenamento criptografado)
Depois, use-a no código desta forma:
export default {
async fetch(request, env) {
// Lê a API Key da variável de ambiente
const apiKey = env.OPENAI_API_KEY;
// Modifica o header e adiciona a API Key
const headers = new Headers(request.headers);
headers.set('Authorization', `Bearer ${apiKey}`);
// O restante do código é igual ao anterior...
}
};
Assim, o frontend não precisa enviar a API Key, o que torna a solução mais segura.
Adicione um token de autenticação personalizado
Se você tem receio de que alguém descubra a URL do Worker e abuse do serviço, pode adicionar uma camada simples de autenticação:
export default {
async fetch(request, env) {
// Verifica o token personalizado
const authToken = request.headers.get('X-Custom-Auth');
if (authToken !== env.MY_SECRET_TOKEN) {
return new Response('Unauthorized', { status: 401 });
}
// Se a verificação passar, continua processando a requisição...
}
};
Defina MY_SECRET_TOKEN nas variáveis de ambiente e envie esse header personalizado nas chamadas feitas pelo frontend.
Monitore o uso
O painel da Cloudflare tem uma aba Analytics que mostra o número diário de requisições, a taxa de erros e outros dados. Vale a pena verificá-la regularmente para perceber com antecedência qualquer risco de ultrapassar a cota gratuita.
Você também pode configurar um alerta: em “Notifications”, crie uma regra para receber um e-mail quando o número de requisições se aproximar de 100 mil.
Problemas comuns e soluções
Requisições lentas ou expirando
Se as respostas estiverem muito lentas, o nó atribuído ao Worker talvez não seja o ideal.
Solução: vincule um domínio personalizado. A Cloudflare otimiza a rota de acordo com a configuração DNS do seu domínio, o que costuma ser um pouco mais rápido do que usar o domínio gratuito .workers.dev.
Nas configurações do Worker, selecione “Triggers” → “Add Custom Domain”, informe seu domínio (por exemplo, api.yourdomain.com) e siga as instruções para adicionar o registro DNS.
Erros 403 ou 401
Geralmente, esses erros estão relacionados à API Key:
- Confira se o nome da Key na variável de ambiente é o mesmo usado no código
- Verifique se a API Key é válida e tem saldo disponível
- Confira se a OpenAI ou o Claude impõem restrições regionais (embora o Workers tenha distribuição global, alguns nós podem ser identificados)
Dica de depuração: adicione um log ao código:
console.log('API Key:', env.OPENAI_API_KEY ? 'configurada' : 'não configurada');
Depois, consulte os logs em tempo real na aba “Logs” do Worker.
O que fazer se a cota gratuita não for suficiente?
Se 100 mil requisições realmente não forem suficientes - por exemplo, em um projeto comercial - você pode considerar o plano pago:
- Plano pago do Workers: US$ 5 por mês, com 10 milhões de requisições
- Excedente: US$ 0,50 por milhão de requisições
Sinceramente, para aplicações pequenas e médias, esse preço é muito mais vantajoso do que contratar uma VPS. Além disso, você não precisa se preocupar com a manutenção do servidor, e o tempo economizado vale ainda mais.
Sugestões de otimização:
- Implemente cache no frontend para não repetir chamadas idênticas
- Use APIs em lote, quando disponíveis, para reduzir o número de requisições
- Durante o desenvolvimento, use dados mock em vez de chamar sempre a API real
Conclusão
Depois de tudo isso, as principais vantagens da solução de proxy com Workers se resumem a três pontos:
- Custo zero: a cota gratuita é mais do que suficiente para desenvolvimento pessoal
- Facilidade: a configuração leva 5 minutos e usa menos de 30 linhas de código
- Segurança: a API Key é armazenada com segurança e não fica exposta
Essa solução é especialmente adequada para estudos, desenvolvimento de demos e projetos pequenos. Se você também procura uma forma estável de acessar APIs de IA, vale muito a pena experimentar o Workers.
Comece a montar o seu agora mesmo! Salve este artigo para consultar quando surgir alguma dúvida. Se você encontrar outros problemas durante a configuração, conte nos comentários — também quero saber o que mais pode ser melhorado.
Os projetos de código aberto mencionados no artigo também são muito bons, principalmente o chatgptProxyAPI e o worker-openai-proxy. O código é bem claro e vale a pena estudá-lo no GitHub.
Qual solução você usa atualmente para acessar APIs de IA? Vamos conversar nos comentários?
FAQ
O plano gratuito do Cloudflare Workers é suficiente?
Cota do plano gratuito:
• 100 mil requisições por dia
• Mil requisições por minuto
• Mesmo usando sem parar durante uma jornada de 8 horas, você faria pouco mais de 2 mil chamadas
Só vale considerar o plano pago em projetos comerciais ou cenários de alta concorrência (US$ 5 por mês, com 10 milhões de requisições).
Um proxy com Workers fica mais lento do que acessar a OpenAI diretamente?
Vantagens:
• A Cloudflare tem nós de CDN em mais de 300 cidades ao redor do mundo
• Em algumas regiões, acessar o Workers pode ser mais rápido do que se conectar diretamente à OpenAI
Ao vincular um domínio personalizado, a Cloudflare otimiza as rotas e pode melhorar ainda mais a velocidade.
Como evitar o vazamento da API Key?
Medidas adicionais de segurança:
• Adicione um token de autenticação personalizado (header X-Custom-Auth)
• Somente clientes que conhecem o token conseguem fazer chamadas
• Se estiver preocupado com o vazamento da URL do Worker, vincule um domínio personalizado e configure uma lista de IPs permitidos
O Workers consegue atuar como proxy para OpenAI, Claude e Gemini ao mesmo tempo?
Use prefixos de caminho para diferenciar os serviços:
o O caminho padrão encaminha para a OpenAI
o O caminho /claude encaminha para o Claude
o O caminho /gemini encaminha para o Gemini
Um único Worker dá conta dos três principais serviços de IA com menos de 50 linhas de código.
Como monitorar o uso e os custos do Workers?
• Número de requisições
• Taxa de erros
• Tempo de resposta e outras métricas
Também é possível criar uma regra em Notifications para receber um e-mail automaticamente quando o volume se aproximar de 100 mil requisições.
O plano pago ainda oferece logs e dados de rastreamento mais detalhados.
10 min de leitura · Publicado em: 1 dez 2025 · Atualizado em: 4 set 2026
Guia Cloudflare AI Stack
Você está lendo o primeiro post desta série. Continue para o próximo ou abra o hub da série para ver toda a trilha.



Comentários
Entre com GitHub para comentar