Прозрачный транзитный прокси для обхода блокировок (Groq, OpenAI, Anthropic, Google и др.). Мульти-target версия: один контейнер обслуживает несколько сервисов одновременно.
Принимает ЛЮБОЙ запрос и пересылает его на целевой API без изменений пути и заголовков.
Поддерживает принудительную подстановку language=ru в multipart-тело (для STT-распознавания).
- Универсальность: работает с любым API (Groq, OpenAI, Anthropic, Google и т.д.)
- Мульти-target: несколько сервисов в одном прокси (выбор по заголовку / пути / API-ключу)
- Обход блокировок: т.к. точка выхода — сервер в Нидерландах, 403 больше не будет
- FORCE_LANG: принудительно подставляет язык в multipart (например,
ruдля русского) - Максимально лёгкий: только стандартная библиотека Python, никаких зависимостей
Приоритет выбора:
- Заголовок
X-Target(например,X-Target: openai). - API-ключ в
Authorization(еслиROUTE_KEY=1и ключи уникальны). - Префикс пути (например,
/openai/chat/completions→ api.openai.com). - По умолчанию — первый таргет.
| Переменная | Описание | По умолчанию |
|---|---|---|
TARGET_HOSTS |
хосты через запятую | api.groq.com |
TARGET_NAMES |
имена таргетов (для маршрутизации) | = первая часть хоста |
TARGET_SCHEMES |
схемы для каждого (http/https) | https |
FORCE_LANGS |
язык для каждого ("" = выключено) |
ru |
API_KEYS |
ключи через запятую (пересылаются как Bearer) | пусто |
ROUTE_KEY |
маршрутизация по API-ключу (1) |
пусто |
PORT |
порт (Koyeb ожидает 8080) | 8766 |
export TARGET_HOSTS="api.groq.com,api.openai.com"
export TARGET_NAMES="groq,openai"
export TARGET_SCHEMES="https,https"
export FORCE_LANGS="ru,"
export API_KEYS="gsk_...,sk-..."
export ROUTE_KEY="1"
python3 universal_proxy.py 8766export TARGET_HOSTS="api.groq.com"
export API_KEYS="gsk_..."
export FORCE_LANGS="ru"
python3 universal_proxy.py 8766- Залейте этот репозиторий на GitHub.
- Koyeb → Create Service → GitHub → выберите репозиторий.
- Укажите регион: Amsterdam (Нидерланды) — это ключевой пункт, он даёт точку выхода в NL.
- Порт контейнера: 8766 (или поменяйте
PORTна 8080; Koyeb часто ожидает 8080). - В настройках укажите переменные окружения (особенно
API_KEYS). - Деплой. Endpoint:
https://<app>.koyeb.app
curl https://<app>.koyeb.app/healthВернёт:
{"status":"ok","mode":"universal-proxy-multitarget","targets":[{"name":"groq","host":"api.groq.com","scheme":"https","force_lang":"ru"},{"name":"openai","host":"api.openai.com","scheme":"https","force_lang":""}]}https://<app>.koyeb.app/v1/audio/transcriptions
Модель: whisper-large-v3 (подставляется в запросе). Язык форсируется: language=ru.
Просто добавьте хост и имя в списки TARGET_HOSTS / TARGET_NAMES:
| Сервис | TARGET_HOST | name |
|---|---|---|
| Groq | api.groq.com |
groq |
| OpenAI | api.openai.com |
openai |
| Anthropic | api.anthropic.com |
anthropic |
| Google Gemini | generativelanguage.googleapis.com |
gemini |