kosareva.cloud

OpenAI через VPN и прокси: почему ломается, как настроить и когда не нужен

VPN пускает вас на сайт, но API живёт по другим правилам: 403 по IP, обрывы соединения и чужие лимиты. Разбираем, как задать прокси в SDK и когда проще обойтись без него.

Коротко: OpenAI API через VPN ломается по трём причинам. Первая — регион: если хотя бы часть запросов уходит с российского IP, приходит 403 с кодом unsupported_country_region_territory, и OpenAI может ограничить аккаунт. Вторая — соединение: туннель рвётся или меняет маршрут, и SDK отдаёт APIConnectionError или APITimeoutError, хотя ключ и запрос в порядке. Третья — общие адреса: на популярном VPN-сервере сидят сотни клиентов, и 429 вы получаете за чужой трафик.

/ Подробнее

Что важно знать

Прокси удобнее системного VPN тем, что его можно задать точечно — для одного клиента, а не для всей машины. В Python SDK прокси берётся из переменных HTTP_PROXY и HTTPS_PROXY или передаётся через свой httpx-клиент. В Node.js — через параметр агента при создании клиента.

И честный вопрос: нужен ли VPN вообще. Он нужен, только если вы ходите напрямую на api.openai.com с ключом OpenAI. Если запросы идут через сервис, который принимает их с российских IP и сам стоит за границей, ни VPN, ни прокси в коде не нужны — меняется только base_url.

/ На kosareva.cloud

OpenAI API без VPN и прокси

Запросы к нашему адресу идут из России напрямую, VPN и прокси не нужны. Ключ OpenAI тоже не нужен — используется наш.

Адрес
https://api.kosareva.cloud/v1, ключ из кабинета
Оплата
Карта РФ или СБП от 50 ₽, компаниям — по счёту
Доступ
Без VPN, запросы идут с российских IP
from openai import OpenAI

client = OpenAI(
    api_key="ВАШ_API_КЛЮЧ",
    base_url="https://api.kosareva.cloud/v1",
)

response = client.chat.completions.create(
    model="gpt-5-6",
    messages=[{"role": "user", "content": "Привет!"}],
    stream=True,
)
import OpenAI from "openai";

const client = new OpenAI({
  apiKey: "ВАШ_API_КЛЮЧ",
  baseURL: "https://api.kosareva.cloud/v1",
});

const response = await client.chat.completions.create({
  model: "gpt-5-6",
  messages: [{ role: "user", content: "Привет!" }],
  stream: true,
});
curl https://api.kosareva.cloud/v1/chat/completions \
  -H "Authorization: Bearer ВАШ_API_КЛЮЧ" \
  -H "Content-Type: application/json" \
  -d '{"model":"gpt-5-6","messages":[{"role":"user","content":"Привет!"}],"stream":true}'
/ Почему

Почему через VPN ломается

403 по IP

Часть запросов ушла мимо туннеля (split tunneling, отвал VPN) с российского адреса. OpenAI видит регион и отвечает unsupported_country_region_territory.

Connection error

Туннель пересобрался посреди запроса, DNS внутри VPN не резолвит api.openai.com или соединение режет провайдер. Ключ ни при чём.

429 за чужой трафик

С одного IP-адреса VPN-сервера работают десятки аккаунтов. Лимиты по IP срабатывают раньше ваших.

Таймауты на длинных ответах

VPN добавляет задержку и рвёт долгие соединения; без стриминга ответ на 2–3 минуты не доживает до конца.

Проблема с аккаунтом, а не с сетью

Если 403 приходит и через прокси с иностранным IP, аккаунт уже ограничен, сетевые настройки не помогут.

/ Симптомы

Что вы видите и что это значит

Текст ошибкиПричинаЧто делать
403 unsupported_country_region_territoryЗапрос ушёл с российского IPПроверить, что весь трафик клиента идёт через прокси; если повторяется — аккаунт ограничен
APIConnectionError: Connection errorТуннель оборвался, DNS не резолвит, прокси не отвечаетПроверить прокси через curl, задать timeout и max_retries
APITimeoutError: Request timed outДлинный ответ не уложился в таймаут через медленный туннельВключить стриминг, поднять timeout
429 rate_limit_exceeded на первом запросеОбщий IP VPN-сервера с чужими аккаунтамиСвой прокси вместо общего VPN или сервис без VPN

Тело ответа OpenAI приходит без изменений через любой прокси, поэтому первым делом читайте code и type.

/ Что делать

Порядок действий

01

Определите, какая из трёх ошибок у вас

403 с unsupported_country — регион. Connection error и timeout — сеть. 429 сразу — общий адрес. От этого зависит, что менять.

02

Задайте прокси переменными окружения

SDK OpenAI и httpx читают HTTPS_PROXY сами. Это работает для всего процесса, включая другие библиотеки.

export HTTPS_PROXY=http://user:pass@proxy.example:3128
export HTTP_PROXY=http://user:pass@proxy.example:3128
python app.py
03

Или только для клиента OpenAI

Свой httpx-клиент с прокси, таймаутом и повторами. Остальной код процесса ходит в сеть напрямую.

import httpx
from openai import OpenAI

client = OpenAI(
    http_client=httpx.Client(proxy="http://user:pass@proxy:3128"),
    timeout=60,
    max_retries=3,
)
04

Проверьте прокси отдельно от кода

Если curl через прокси возвращает список моделей, сеть в порядке и проблема в коде или аккаунте.

curl -x http://user:pass@proxy.example:3128 \
  https://api.openai.com/v1/models \
  -H "Authorization: Bearer $OPENAI_API_KEY"
05

Уберите VPN, если он не нужен

Сервис, принимающий запросы с российских IP, снимает все три проблемы разом: прокси в коде не нужен, аккаунт OpenAI не нужен, лимиты свои.

client = OpenAI(
    api_key="ваш ключ",
    base_url="https://api.kosareva.cloud/v1",
)
/ По инструментам

Где это чинится в разных инструментах

VS Code, Cline, Continue

Прокси задаётся в настройках редактора (http.proxy), расширения его наследуют. Системный VPN при этом можно выключить.

Claude Code, Codex CLI

Читают HTTPS_PROXY из окружения терминала. Задайте переменную в той же сессии, где запускаете команду.

Docker, n8n

Переменные HTTP_PROXY и HTTPS_PROXY передаются в контейнер через environment; VPN на хосте внутрь контейнера не попадает.

Python и Node.js SDK

Python — переменные окружения или httpx-клиент, Node.js — параметр агента при создании клиента. В обоих задайте timeout и max_retries.

/ FAQ

Частые вопросы

Нарушает ли VPN условия OpenAI?

OpenAI оказывает услуги по списку стран, России в нём нет. Работа через VPN — обход этого ограничения, аккаунт могут ограничить без предупреждения.

Подойдёт ли SOCKS5-прокси?

Да, httpx умеет socks5 после установки дополнения httpx[socks]; адрес пишется как socks5://host:port. В переменных окружения тот же формат.

Почему 429 приходит, хотя я почти не делаю запросов?

Общий IP VPN-сервера: лимит срабатывает по адресу, а не по вашему ключу. Свой прокси или сервис без VPN снимают это.

Сайт OpenAI через VPN открывается, а API отвечает 403. Почему?

Скорее всего, VPN включён только в браузере: расширение не трогает терминал, редактор и скрипты, и они по-прежнему ходят в сеть с российского адреса. Нужен VPN для всей системы или прокси, заданный в переменных окружения либо прямо в клиенте.

Почему через прокси ответы приходят медленнее?

Каждое соединение идёт через лишний участок сети, и далёкий или перегруженный прокси добавляет задержку ещё до начала ответа. Создавайте клиент OpenAI один раз и переиспользуйте его: так соединение с прокси не устанавливается заново на каждый запрос. А стриминг покажет первые слова сразу, не дожидаясь конца генерации.

Ключ, который работает из России

OpenAI-совместимый адрес, оплата в рублях, ключ сразу после регистрации. Пополнение картой от 50 ₽.

Получить ключ