Files
OmniRoute/docs/i18n/uz/docs/ops/PROXY_GUIDE.md
Diego Rodrigues de Sa e Souza 8feea123bb feat(docs): mirror every docs/ page in all 65 locales (#14106)
* feat(docs): mirror every docs/ page in all 65 locales

Extends the documentation mirrors from the 22-page core set (#13940) to
every Markdown page under docs/: 152 sources x 65 locales = 9,880 mirrors
(6,208 new), language bars rewritten for the full locale list, state
adopted so the blocking drift gate now covers all 152 pages.

run-translation.mjs: an oversized block made only of table rows or list
items (PROVIDER_REFERENCE.md 244-row table, FREE_TIERS.md 71-item list) is
cut at item boundaries and rejoined without a blank line — the single
16-40 KB request outlived the backend socket for verbose scripts. 48
older mirrors whose tables had lost rows were retranslated with --force.

* docs(i18n): refresh mirrors for the sources the base changed since the branch cut

Section-level retranslation of the 29 docs (and README.md) whose source
or mirrors moved on release/v3.8.51 during the run, then state adoption;
the drift gate is green again on the merged tree.
2026-09-18 13:16:46 -03:00

43 KiB
Raw Blame History

🌐 OmniRoute Proxy Guide (Oʻzbekcha)

🌐 Languages: 🇺🇸 English · 🇪🇹 am · 🇸🇦 ar · 🇦🇿 az · 🇧🇬 bg · 🇧🇩 bn · 🇨🇿 cs · 🇩🇰 da · 🇩🇪 de · 🇬🇷 el · 🇪🇸 es · 🇪🇪 et · 🇮🇷 fa · 🇫🇮 fi · 🇫🇷 fr · 🇮🇪 ga · 🇮🇳 gu · 🇳🇬 ha · 🇮🇱 he · 🇮🇳 hi · 🇭🇷 hr · 🇭🇺 hu · 🇦🇲 hy · 🇮🇩 id · 🇳🇬 ig · 🇮🇹 it · 🇯🇵 ja · 🇬🇪 ka · 🇰🇭 km · 🇮🇳 kn · 🇰🇷 ko · 🇱🇹 lt · 🇱🇻 lv · 🇮🇳 ml · 🇮🇳 mr · 🇲🇾 ms · 🇲🇹 mt · 🇲🇲 my · 🇳🇵 ne · 🇳🇱 nl · 🇳🇴 no · 🇮🇳 or · 🇮🇳 pa · 🇵🇭 phi · 🇵🇱 pl · 🇵🇹 pt · 🇧🇷 pt-BR · 🇷🇴 ro · 🇷🇺 ru · 🇱🇰 si · 🇸🇰 sk · 🇸🇮 sl · 🇷🇸 sr · 🇸🇪 sv · 🇰🇪 sw · 🇮🇳 ta · 🇮🇳 te · 🇹🇭 th · 🇹🇷 tr · 🇺🇦 uk-UA · 🇵🇰 ur · 🇻🇳 vi · 🇳🇬 yo · 🇨🇳 zh-CN · 🇹🇼 zh-TW


Geografik bloklarni chetlab oʻting, shaxsingizni himoya qiling va AI trafigini istalgan proksi orqali yoʻnaltiring — sozlashdagi hech qanday murakkabliksiz.

OmniRoute yuqori oqimdagi AI provayderlari trafigini HTTP, HTTPS yoki SOCKS5 proksilari orqali yoʻnaltirish imkonini beruvchi toʻliq funksiyali proksi boshqaruv tizimini oʻz ichiga oladi. Bloklangan hududda boʻlsangiz, IP rotatsiyasi kerak boʻlsa yoki yashirin fingerprintingdan foydalanmoqchi boʻlsangiz — ushbu qoʻllanmada hammasi yoritilgan.


Mundarija


Nega proksilardan foydalanish kerak?

Koʻplab AI provayderlari geografik hududga qarab kirishni cheklaydi. Rossiya, Xitoy, Eron, Kuba, Turkiya va boshqa mamlakatlardagi dasturchilar quyidagiga oʻxshash xatolarga duch keladi:

unsupported_country_region_territory

Proksilar bloklangan hududlardan tashqarida ham foydalidir:

Foydalanish holati Tavsif
Geografik cheklovni chetlab oʻtish Bloklangan mamlakatlardan OpenAI, Anthropic, Codex, Copilot xizmatlariga kirish
IP rotatsiyasi Tezlik cheklovlariga duch kelmaslik uchun soʻrovlarni bir nechta IP boʻylab taqsimlash
Maxfiylik Haqiqiy IP manzilingizni yuqori oqim provayderlaridan yashirish
Muvofiqlik Trafikni muayyan yurisdiksiyalar orqali yoʻnaltirish
Sinovdan oʻtkazish Turli hududlardan yuborilgan soʻrovlarni simulyatsiya qilish

Arxitektura haqida umumiy maʼlumot

┌───────────────────────────────────────────────────────────────┐
│                       OmniRoute serveri                       │
│                                                               │
│  ┌─────────────┐    ┌──────────────┐    ┌──────────────────┐  │
│  │ Proksi      │    │ Proksi       │    │ Proksi           │  │
│  │ reyestri    │───▶│ dispetcheri  │───▶│ Fetch (undici)   │  │
│  │ (SQLite)    │    │ (keshlangan) │    │                  │  │
│  └─────────────┘    └──────────────┘    └────────┬─────────┘  │
│         ▲                                        │            │
│         │                                        ▼            │
│  ┌──────┴──────┐                        ┌──────────────────┐  │
│  │ 1proxy      │                        │ Yuqori oqim      │  │
│  │ sinxronlash │                        │ provayderi API'si│  │
│  │ (bepul pul) │                        │                  │  │
│  └─────────────┘                        └──────────────────┘  │
└───────────────────────────────────────────────────────────────┘

Asosiy komponentlar

Komponent Fayl Vazifasi
Proksi reyestri src/lib/db/proxies.ts Proksi yozuvlari va qamrov biriktirmalari uchun CRUD
Proksi dispetcheri open-sse/utils/proxyDispatcher.ts Keshlash bilan undici ProxyAgent/SOCKS dispetcherlarini yaratadi
Proksi Fetch open-sse/utils/proxyFetch.ts Proksi dispetcherini kiritish orqali fetch() funksiyasini oʻraydi
Sozlamalar marshruti src/app/api/settings/proxy/route.ts Eski proksi konfiguratsiyasi API'si (GET/PUT/DELETE)
Boshqaruv marshruti src/app/api/v1/management/proxies/route.ts Reyestr CRUD API'si (GET/POST/PATCH/DELETE)
1proxy maʼlumotlar bazasi src/lib/db/oneproxy.ts Bepul proksi marketpleysi maʼlumotlarini doimiy saqlash

4 darajali proksi tizimi

OmniRoute proksi konfiguratsiyasini ustuvorlik tartibida aniqlanadigan toʻrtta mustaqil doirada qoʻllab-quvvatlaydi:

Ustuvorlik boʻyicha aniqlash tartibi (eng yuqori → eng past):

  1. 🔵 Hisob/Ulanish proksisi  →  har bir API kaliti / OAuth ulanishi uchun
  2. 🟡 Provayder proksisi      →  har bir provayder uchun (masalan, barcha OpenAI trafigi)
  3. 🟠 Kombinatsiya proksisi   →  har bir kombinatsiya/marshrutlash konfiguratsiyasi uchun
  4. 🟢 Global proksi           →  barcha trafik, barcha provayderlar

Aniqlash qanday ishlaydi

OmniRoute yuqori oqimdagi provayderga soʻrov yuborganda, har bir darajani tartib bilan tekshiradigan resolveProxyForConnectionFromRegistry() funksiyasini chaqiradi:

  1. Hisob darajasi — Ushbu aniq ulanish ID identifikatoriga proksi biriktirilganmi?
  2. Provayder darajasi — Ushbu provayderga (masalan, openai) proksi biriktirilganmi?
  3. Global daraja — Global proksi sozlanganmi?
  4. Proksi yoʻq — Provayderga toʻgʻridan-toʻgʻri ulanish.

Birinchi mos kelgan sozlama ishlatiladi. Bu global proksini zaxira variant sifatida belgilash, ammo uni muayyan provayderlar yoki ulanishlar uchun qayta belgilash imkonini beradi.

Qaysi trafik proksilanadi

Trafik turi Proksilanadimi? Izohlar
Chat toʻldirishlari Barcha /v1/chat/completions soʻrovlari
Embeddinglar /v1/embeddings
Tasvir yaratish /v1/images/generations
Audio (TTS/STT) /v1/audio/*
OAuth token almashinuvi unsupported_country_region_territory xatosini hal qiladi
Ulanish sinovlari "Ulanishni sinash" tugmasi proksidan foydalanadi
Tokenni yangilash Fon rejimida OAuth yangilanishi
Model sinxronizatsiyasi Modellarni roʻyxatlash va aniqlash

Proksi reyestri (CRUD)

Proksi reyestri barcha proksilaringizni saqlaydigan SQLite jadvalidir (proxy_registry). Har bir proksi quyidagilarga ega:

Maydon Tur Tavsif
id UUID Noyob identifikator
name String Inson oʻqishi uchun qulay yorliq
type String Protokol: http, https, socks5
host String Proksi xost nomi yoki IP manzili
port Integer Port raqami
username String Autentifikatsiya foydalanuvchi nomi (saqlashda shifrlangan)
password String Autentifikatsiya paroli (saqlashda shifrlangan)
region String Geografik hudud yorligʻi
notes String Erkin matnli qaydlar
status String active yoki inactive
source String manual yoki oneproxy

Proksi yaratish

Boshqaruv paneli orqali:

  1. Sozlamalar → Proksi boʻlimiga oʻting
  2. Proksi qoʻshish tugmasini bosing
  3. Tur, xost, port va ixtiyoriy autentifikatsiya maʼlumotlarini kiriting
  4. Saqlang

API orqali:

curl -X POST http://localhost:20128/api/v1/management/proxies \
  -H "Content-Type: application/json" \
  -d '{
    "name": "US Proxy",
    "type": "http",
    "host": "proxy.example.com",
    "port": 8080,
    "username": "user",
    "password": "pass",
    "region": "US"
  }'

Proksini yangilash

curl -X PATCH http://localhost:20128/api/v1/management/proxies \
  -H "Content-Type: application/json" \
  -d '{
    "id": "proxy-uuid-here",
    "host": "new-proxy.example.com",
    "port": 9090
  }'

Eslatma: Agar boʻsh boʻlmagan yangi qiymatlarni ochiq yubormasangiz, hisob maʼlumotlari saqlanib qoladi. username/password uchun boʻsh satrlar yuborilsa, saqlangan qiymatlar oʻzgarmaydi.

Proksini oʻchirish

# Proksi biror doiraga biriktirilgan boʻlsa, bajarilmaydi
curl -X DELETE "http://localhost:20128/api/v1/management/proxies?id=proxy-uuid"

# Majburan oʻchirish (biriktirishlarni ham olib tashlaydi)
curl -X DELETE "http://localhost:20128/api/v1/management/proxies?id=proxy-uuid&force=1"

Proksilarni roʻyxatlash

curl "http://localhost:20128/api/v1/management/proxies?limit=50&offset=0"

Proksilarni doiralarga biriktirish

# Global doiraga biriktirish
curl -X PUT http://localhost:20128/api/settings/proxy \
  -H "Content-Type: application/json" \
  -d '{"level": "global", "proxy": {"type":"http","host":"proxy.example.com","port":8080}}'

# Muayyan provayderga biriktirish
curl -X PUT http://localhost:20128/api/settings/proxy \
  -H "Content-Type: application/json" \
  -d '{"level": "provider", "id": "openai", "proxy": {"type":"socks5","host":"socks.example.com","port":1080}}'

# Muayyan ulanish/kalitga biriktirish
curl -X PUT http://localhost:20128/api/settings/proxy \
  -H "Content-Type: application/json" \
  -d '{"level": "key", "id": "connection-uuid", "proxy": {"type":"http","host":"key-proxy.com","port":3128}}'

Amaldagi proksini aniqlash

Berilgan ulanish uchun qaysi proksi ishlatilishini tekshiring:

curl "http://localhost:20128/api/settings/proxy?resolve=connection-uuid"

Aniqlangan proksini uning darajasi (account, provider yoki global) va manbasi bilan qaytaradi.

Ommaviy biriktirish

Bitta proksini bir vaqtning oʻzida bir nechta provayder yoki ulanishga biriktiring:

curl -X POST http://localhost:20128/api/v1/management/proxies/bulk-assign \
  -H "Content-Type: application/json" \
  -d '{
    "scope": "provider",
    "scopeIds": ["openai", "anthropic", "codex"],
    "proxyId": "proxy-uuid"
  }'

Import/Eksport

Proksilar Zaxiralash/Tiklash tizimiga kiritilgan. OmniRoute konfiguratsiyangizni eksport qilganingizda:

  1. Boshqaruv paneli → Sozlamalar → Zaxiralash boʻlimiga oʻting
  2. Eksport tugmasini bosing — proksi reyestri va biriktirishlar ham kiritiladi
  3. Tiklash uchun Import tugmasini bosing va zaxira faylini yuklang

Proksi reyestri host+port boʻyicha upsert funksiyasini ham qoʻllab-quvvatlaydi — agar allaqachon mavjud boʻlgan proksini (xost va porti bir xil) import qilsangiz, dublikat yaratish oʻrniga u yangilanadi.

Eski versiyadan migratsiya

Agar proksilarni eski versiyada (reyestrdan oldingi) sozlagan bolsangiz, OmniRoute ularni avtomatik ravishda kochiradi:

Eski key_value ombori → proxy_registry + proxy_assignments

Bu yangilangandan keyingi ilk ishga tushirishda bir marta amalga oshadi. Qayta ishga tushirish uchun migrateLegacyProxyConfigToRegistry({ force: true }) dan foydalaning.


1proxy bepul proksi bozori

🆕 @oyi77 tomonidan qoʻshilgan — PR #1847 (Muammo #1788)

OmniRoute butun dunyo boʻylab yuzlab bepul, tekshirilgan proksilardan foydalanish imkonini berish uchun 1proxy hamjamiyat platformasi bilan integratsiyalashadi. Bu oʻz proksi infratuzilmasiga ega boʻlmagan foydalanuvchilar uchun juda mos keladi.

Bu qanday ishlaydi

┌─────────────┐  Sinxronlash  ┌─────────────────┐  Almashtirish ┌──────────────┐
│  1proxy API │ ────────────▶ │  proxy_registry  │ ────────────▶ │ Provayder API │
│  (tashqi)   │  500 tagacha  │  source=oneproxy │  sifat boʻyicha│              │
└─────────────┘   proksi      └─────────────────┘               └──────────────┘
  1. Sinxronlash — OmniRoute tekshirilgan proksilarni 1proxy API orqali oladi
  2. Saqlash — Proksilar ayni proxy_registry jadvalida source = 'oneproxy' qiymati bilan saqlanadi
  3. Filtrlash — Protokol, mamlakat va sifat bali boʻyicha filtrlang
  4. Almashtirish — Sifat, tasodifiy yoki ketma-ket strategiyalar yordamida eng yaxshi proksini tanlang
  5. Avtomatik pasaytirish — Ishlamagan proksilarning sifat bali kamaytiriladi; chegara qiymatidan past boʻlsa → nofaol deb belgilanadi

Proksilarni sinxronlash

Boshqaruv paneli orqali:

  1. Sozlamalar → 1proxy ichki oynasiga oʻting
  2. "Hozir sinxronlash" tugmasini bosing
  3. Statistikani koʻring: proksilarning umumiy soni, faol proksilar soni, oʻrtacha sifat va mamlakatlar boʻyicha taqsimot

API orqali:

# Sinxronlashni ishga tushirish
curl -X POST http://localhost:20128/api/settings/oneproxy \
  -H "Content-Type: application/json" \
  -d '{}'

# Javob:
# { "success": true, "added": 127, "updated": 45, "failed": 2, "total": 172 }

Proksilarni filtrlash

# Protokol boʻyicha filtrlash
curl "http://localhost:20128/api/settings/oneproxy?protocol=socks5"

# Mamlakat boʻyicha filtrlash
curl "http://localhost:20128/api/settings/oneproxy?countryCode=US"

# Minimal sifat bali boʻyicha filtrlash
curl "http://localhost:20128/api/settings/oneproxy?minQuality=80"

# Filtrlarni birlashtirish
curl "http://localhost:20128/api/settings/oneproxy?protocol=http&countryCode=DE&minQuality=70"

Proksi sifat ballari

Har bir 1proxy proksisi quyidagi metadata bilan taqdim etiladi:

Maydon Tavsif
qualityScore 1proxy tekshiruvi asosidagi 0-100 oraligʻidagi baho
latencyMs Oʻlchangan tarmoq kechikishi
anonymity transparent, anonymous yoki elite
googleAccess Proksi Google xizmatlariga kira olishi
countryCode Ikki harfli ISO mamlakat kodi
lastValidated Oxirgi tekshiruv vaqt belgisi

Sifat ballari dinamik ravishda oʻzgartiriladi:

  • Bajarilmagan soʻrovlar ballni 10 punktga kamaytiradi
  • Ball ≤10 gacha tushsa → proksi inactive deb belgilanadi
  • Nofaol proksilar almashtirish jarayonidan chiqarib tashlanadi

Almashtirish strategiyalari

# Sifat boʻyicha almashtirish (eng yaxshi proksi birinchi) — standart
curl -X POST http://localhost:20128/api/settings/oneproxy/rotate \
  -H "Content-Type: application/json" \
  -d '{"strategy": "quality"}'

# Tasodifiy almashtirish
curl -X POST http://localhost:20128/api/settings/oneproxy/rotate \
  -d '{"strategy": "random"}'

# Ketma-ket (eng oldin tekshirilgan proksi birinchi)
curl -X POST http://localhost:20128/api/settings/oneproxy/rotate \
  -d '{"strategy": "sequential"}'

Avtomatik uzgich

1proxy sinxronlashida ichki avtomatik uzgich mavjud:

  • Ketma-ket 5 ta sinxronlash xatosidan keyin keyingi sinxronlash urinishlari bloklanadi
  • resetOneproxyCircuitBreaker() yordamida qayta oʻrnating yoki serverni qayta ishga tushiring
  • Sinxronlash holati GET /api/settings/oneproxy?action=status manzilida mavjud

1proxy proksilarini tozalash

# Bitta 1proxy proksisini oʻchirish
curl -X DELETE "http://localhost:20128/api/settings/oneproxy?id=proxy-uuid"

# BARCHA 1proxy proksilarini tozalash (qoʻlda qoʻshilgan proksilarga tegilmaydi)
curl -X DELETE "http://localhost:20128/api/settings/oneproxy?clearAll=1"

Aniqlashdan himoyalanish va yashirinlik

OmniRoute trafikni shunchaki proksi orqali yoʻnaltiribgina qolmay, uni haqiqiy trafikdek koʻrsatadi:

TLS raqamli izini soxtalashtirish

Brauzerga oʻxshash TLS raqamli izlarini yaratish uchun wreq-jsdan foydalanadi va brauzerga tegishli boʻlmagan TLS ulanishlarini belgilaydigan botlarni aniqlash tizimlarini chetlab oʻtadi.

CLI raqamli iziga moslash

CLI raqamli izi almashtirgichi (Sozlamalar → Xavfsizlik) HTTP sarlavhalari va JSON tanasi maydonlarini mahalliy CLI ikkilik fayllarining (Claude Code, Codex va boshqalar) aniq signaturasiga mos ravishda qayta tartiblaydi. Bu proksi bilan birgalikda ishlaydi:

Sizning IP manzilingiz (bloklangan) → Proksi IP manzili (AQSH) → Provayder API
                                      + TLS soxtalashtirish
                                      + CLI raqamli izi

Shu tariqa bir vaqtning oʻzida ham IP manzilni yashirish, ham soʻrovning haqiqiyligi taʼminlanadi.

Proksi IP manzilini saqlash

Boshqaruv panelidagi rang bilan kodlangan nishonlar qaysi proksi darajasi faol ekanini koʻrsatadi:

Nishon Daraja Maʼnosi
🟢 Global Barcha trafik ushbu proksi orqali oʻtadi
🟡 Provayder Faqat ushbu provayder trafiki proksilanadi
🔵 Ulanish Ushbu aniq kalit/hisob shu proksidan foydalanadi

Nishon tekshirish uchun aniqlangan proksi IP manzilini ham koʻrsatadi.


Yuqori oqim proksi rejimlari

CLIProxyAPI andozasidan foydalanadigan provayderlar uchun OmniRoute yuqori oqim proksisining uchta rejimini qoʻllab-quvvatlaydi:

Rejim Tavsif
native OmniRoute proksi yoʻnaltirishni bevosita boshqaradi (standart)
cliproxyapi Tashqi CLIProxyAPI nusxasiga topshiradi
fallback Avval mahalliy usulni sinaydi, soʻng CLIProxyAPIga oʻtadi

Har bir provayder uchun sozlang:

curl -X PUT "http://localhost:20128/api/upstream-proxy/openai" \
  -H "Content-Type: application/json" \
  -d '{"mode": "native", "enabled": true}'

Boshqaruv paneli interfeysi

Sozlamalar → Proksi ichki oynasi

  • Global proksi konfiguratsiyasi (barcha trafik uchun bir marta sozlanadi)
  • Har bir provayder uchun proksi almashtirishlari
  • Har bir ulanish uchun proksi biriktirishlari
  • Sozlangan proksi orqali ulanish sinovi
  • Faol proksi darajasini koʻrsatuvchi rang bilan kodlangan nishonlar

Sozlamalar → 1proxy ichki oynasi

  • Bepul proksilarni olish uchun Hozir sinxronlash tugmasi
  • Statistika kartalari: Jami, Faol, Oʻrtacha sifat, Oxirgi sinxronlash
  • Filtrlar: Protokol, Mamlakat kodi, Minimal sifat
  • Xost, protokol, mamlakat, sifat bahosi, kechikish, anonimlik va Googleʼga kirish imkoniyati koʻrsatilgan proksi jadvali
  • Muvaffaqiyat/muvaffaqiyatsizliklarni kuzatish va ketma-ket muvaffaqiyatsizliklar soni koʻrsatilgan sinxronlash holati paneli
  • Barcha 1proxy yozuvlarini olib tashlash uchun Barchasini tozalash

API maʼlumotnomasi

Proksi sozlamalari API

Metod Yakuniy nuqta Tavsif
GET /api/settings/proxy Toʻliq proksi konfiguratsiyasini olish
GET /api/settings/proxy?level=global Global proksini olish
GET /api/settings/proxy?level=provider&id=openai Provayder proksisini olish
GET /api/settings/proxy?resolve=connectionId Amaldagi proksini aniqlash
PUT /api/settings/proxy Proksi konfiguratsiyasini yangilash
DELETE /api/settings/proxy?level=provider&id=openai Darajadagi proksini olib tashlash

Proksi reyestri API

Metod Yakuniy nuqta Tavsif
GET /api/v1/management/proxies Barcha proksilarni roʻyxatlash
GET /api/v1/management/proxies?id=uuid Proksini ID boʻyicha olish
GET /api/v1/management/proxies?id=uuid&where_used=1 Proksi biriktirishlarini olish
POST /api/v1/management/proxies Proksi yaratish
PATCH /api/v1/management/proxies Proksini yangilash
DELETE /api/v1/management/proxies?id=uuid Proksini oʻchirish
DELETE /api/v1/management/proxies?id=uuid&force=1 Majburan oʻchirish
POST /api/v1/management/proxies/bulk-assign Ommaviy biriktirish
GET /api/v1/management/proxies/assignments Biriktirishlarni roʻyxatlash
GET /api/v1/management/proxies/health Proksi holati statistikasi

Tunnellar API

Chiquvchi trafikni proksi orqali yoʻnaltirish oʻrniga OmniRoute nusxangizni ommaviy internetga (Cloudflare/ngrok/Tailscale) ochish uchun TUNNELS_GUIDE.md sahifasiga qarang. Tunnel REST API /api/tunnels/{cloudflared,ngrok,tailscale}/* ostida joylashgan va yuqorida hujjatlashtirilgan chiquvchi proksi zanjiridan mustaqil.

1proxy API

Metod Yakuniy nuqta Tavsif
GET /api/settings/oneproxy 1proxy proksilarini roʻyxatlash
GET /api/settings/oneproxy?action=stats Statistika va sinxronlash holatini olish
GET /api/settings/oneproxy?action=status Faqat sinxronlash holatini olish
POST /api/settings/oneproxy Sinxronlashni ishga tushirish
POST /api/settings/oneproxy/rotate Keyingi proksiga oʻtish
DELETE /api/settings/oneproxy?id=uuid Bittasini oʻchirish
DELETE /api/settings/oneproxy?clearAll=1 Barchasini tozalash

Yuqori oqim proksi API

Metod Yakuniy nuqta Tavsif
GET /api/upstream-proxy/:providerId Yuqori oqim proksi konfiguratsiyasini olish
PUT /api/upstream-proxy/:providerId Yuqori oqim proksi rejimini sozlash
DELETE /api/upstream-proxy/:providerId Yuqori oqim proksi konfiguratsiyasini olib tashlash

Muhit oʻzgaruvchilari

Oʻzgaruvchi Standart qiymat Tavsif
ENABLE_SOCKS5_PROXY true SOCKS5 proksi qoʻllab-quvvatlashini yoqish (.env.exampleda standart qiymat true)

Muammolarni bartaraf etish

"SOCKS5 proksi oʻchirilgan"

.env faylingizda ENABLE_SOCKS5_PROXY=true qilib belgilang va qayta ishga tushiring.

Proksi orqali "socket hang up" xatolari

Faol boʻlmagan ulanishlarni uzib qoʻyadigan arzon proksilarda bu odatiy holat. OmniRoute buni allaqachon quyidagicha boshqaradi:

  • Proksi ulanishlarida keep-alive funksiyasini oʻchirish (keepAliveTimeout: 1)
  • Pipelining funksiyasini oʻchirish (pipelining: 0)
  • Takroriy ulanish kelishuvlarini oldini olish uchun dispatcherlarni keshlash

Agar muammo davom etsa, boshqa proksini sinab koʻring yoki 1proxy rotatsiya funksiyasidan foydalaning.

OAuth paytida "unsupported_country_region_territory"

OAuth jarayonini boshlashdan oldin proksi sozlanganligiga ishonch hosil qiling. OmniRoute OAuth token almashinuvini sozlangan proksi orqali yoʻnaltiradi. Avval global yoki provayder darajasidagi proksini belgilang, soʻng ulaning.

Proksi ishlatilmayapti

Aniqlash tartibini tekshiring:

  1. GET /api/settings/proxy?resolve=your-connection-id orqali tekshiring
  2. Proksi status qiymati active (inactive emas) ekanini tekshiring
  3. Proksi tayinlash qamrovi ulanishingizga mos kelishiga ishonch hosil qiling

1proxy sinxronlashuvi bajarilmadi

Sinxronlash holatini tekshiring:

curl "http://localhost:20128/api/settings/oneproxy?action=status"

Agar consecutiveFailures >= 5 boʻlsa, avtomatik uzgich ishga tushgan. Uni qayta tiklash uchun serverni qayta ishga tushiring yoki qoʻlda tiklanishini kuting.


Maʼlumotlar bazasi sxemasi

proxy_registry jadvali

CREATE TABLE proxy_registry (
  id TEXT PRIMARY KEY,
  name TEXT NOT NULL,
  type TEXT NOT NULL DEFAULT 'http',
  host TEXT NOT NULL,
  port INTEGER NOT NULL,
  username TEXT DEFAULT '',
  password TEXT DEFAULT '',
  region TEXT,
  notes TEXT,
  status TEXT DEFAULT 'active',
  source TEXT NOT NULL DEFAULT 'manual',    -- 'manual' yoki 'oneproxy'
  quality_score INTEGER,                     -- 0-100 (faqat 1proxy)
  latency_ms INTEGER,                        -- millisekundlar (faqat 1proxy)
  anonymity TEXT,                            -- shaffof/anonim/yuqori darajali
  google_access INTEGER DEFAULT 0,           -- Googlega kira oladimi? (1proxy)
  last_validated TEXT,                       -- ISO vaqt belgisi (1proxy)
  country_code TEXT,                         -- ISO ikki harfli kod (1proxy)
  created_at TEXT NOT NULL,
  updated_at TEXT NOT NULL
);

proxy_assignments jadvali

CREATE TABLE proxy_assignments (
  id INTEGER PRIMARY KEY AUTOINCREMENT,
  proxy_id TEXT NOT NULL REFERENCES proxy_registry(id),
  scope TEXT NOT NULL,        -- 'global', 'provider', 'account', 'combo'
  scope_id TEXT,              -- provayder IDsi, ulanish IDsi yoki kombinatsiya IDsi
  created_at TEXT NOT NULL,
  updated_at TEXT NOT NULL,
  UNIQUE(scope, scope_id)
);

Proksi holatini tekshirish (v3.8.16+)

OmniRouteʼning proksi tezkor xato aniqlash mexanizmi (src/lib/proxyHealth.ts) tezkor TCP ulanish tekshiruvi orqali ishlamayotgan proksilarni <2s ichida aniqlaydi, soʻng har bir soʻrov uchun qoʻshimcha xarajatlarning oldini olish maqsadida natijani keshlaydi.

Ishlash tartibi

Soʻrov ──▶ ProxyHealthCache.get(url)
             │
             ├─ Keshda bor + yangi?  ──▶ keshlangan holatni qaytarish
             │
             └─ Keshda yoʻq / eskirgan?  ──▶ host:portga TCP orqali ulanish
                                              (kutish vaqti: FAST_FAIL_TIMEOUT_MS)
                                              ──▶ HEALTH_CACHE_TTL_MS muddatiga keshlash
                                              ──▶ natijani qaytarish

Bu mexanizmsiz ishlamayotgan proksi har bir soʻrovni muvaffaqiyatsiz tugashidan oldin toʻliq PROXY_TIMEOUT_MS davomida (standart qiymat 30s) bloklab turadi.

Sozlanadigan muhit oʻzgaruvchilari

Oʻzgaruvchi Standart qiymat Maqsad
PROXY_FAST_FAIL_TIMEOUT_MS 2000 Har bir holat tekshiruvi uchun TCP ulanishining kutish vaqti
PROXY_HEALTH_CACHE_TTL_MS 30000 Holat natijasi keshlanadigan vaqt

Tavsiya etilgan qiymatlar:

Ssenariy Tezkor xato aniqlash kutish vaqti Kesh TTL Asos
Yuqori oʻtkazuvchanlikdagi API shlyuzi 1500ms 60000ms Tezkor xatoni agressiv aniqlash, tekshiruvlarni kamaytirish uchun uzoqroq kesh
Geografik taqsimlangan tugunlar 3000ms 15000ms Sekinroq tarmoqlarga koʻproq vaqt kerak; tezkor almashish uchun qisqaroq kesh
Ishlab chiqish / sinov 1000ms 10000ms Mahalliy proksilarda tezkor iteratsiya
Yashirinlik / aniqlashdan himoyalanish 2500ms 45000ms Tezlik cheklovlarini ishga tushirishi mumkin boʻlgan tez-tez tekshirishlardan saqlanish

Proksi holatini koʻrish

import { getAllProxyHealthStatuses, invalidateProxyHealth } from "omniroute/proxyHealth";

const statuses = getAllProxyHealthStatuses();
for (const s of statuses) {
  console.log(`${s.proxyUrl} → healthy=${s.healthy}, stale=${s.stale}`);
}

// Muayyan proksini majburiy qayta tekshirish
invalidateProxyHealth("http://user:pass@203.0.113.7:8080");

Kesh yozuvi HEALTH_CACHE_TTL_MS muddatidan oshib ketganda stale bayrogʻi true boʻladi va keyingi soʻrov yangi tekshiruvni ishga tushiradi.

Proksi turi boʻyicha standart qiymatlar

Holat tekshiruvi URL sxemasiga asoslangan oqilona standart qiymatlardan foydalanadi:

Sxema Standart port
http:// 8080
https:// 443
socks5:// / socks5h:// 1080

URL ichidagi maxsus portlar (http://host:9999) har doim sxemaning standart qiymatidan ustun turadi.


Proksi tahlili va kuzatuvchanlik

OmniRoute operatorlarga marshrutlash naqshlari, kechikishdagi keskin oshishlar va takroriy nosozliklarni aniqlashda yordam berish uchun har bir proksi boyicha foydalanish malumotlarini kuzatadi.

Nimalar kuzatiladi

Sozlangan proksi orqali otgan har bir sorov uchun OmniRoute quyidagilarni qayd etadi:

Korsatkich Tavsif
proxy_url Toliq proksi URL manzili (autentifikatsiya malumotlari niqoblangan holda)
provider Yuqori oqim provayderi ID si (openai, anthropic va boshqalar)
latency_ms Proksi bilan ulanishni ornatish vaqtini ham oz ichiga olgan jami borib-kelish vaqti
connect_ms Faqat TCP ulanish vaqti
status Yuqori oqimdan olingan HTTP holat kodi
error Sorov muvaffaqiyatsiz tugagan bolsa, xato sinfi
timestamp ISO 8601 UTC

Malumotlarga kirish

# Oxirgi proksi hodisalari
curl -H "Authorization: Bearer $OMNIROUTE_KEY" \
  "http://localhost:20128/api/usage/proxy-logs?limit=100"

Haqiqiy endpoint — /api/usage/proxy-logs (src/app/api/usage/proxy-logs/route.ts ga qarang). Bu endpoint quyidagilarni qollab-quvvatlaydi:

  • GET /api/usage/proxy-logs — proksi jurnallarini olish
  • DELETE /api/usage/proxy-logs — barcha proksi jurnallarini tozalash

Zarur bolsa, jamlangan statistikani SQL orqali bevosita proxy_logs jadvalidan sorash mumkin. Boshqaruv paneli interfeysi jamlangan korinishlarni taklif qilishi mumkin.

Keng tarqalgan usullar

Beqaror proksini aniqlash (muvaffaqiyat va muvaffaqiyatsizlik ortasida almashinadi):

SELECT proxy_url,
       COUNT(*) AS total,
       SUM(CASE WHEN status >= 500 THEN 1 ELSE 0 END) AS errors,
       ROUND(100.0 * SUM(CASE WHEN status >= 500 THEN 1 ELSE 0 END) / COUNT(*), 1) AS error_pct
FROM proxy_logs
WHERE timestamp > datetime('now', '-1 hour')
GROUP BY proxy_url
HAVING error_pct > 5
ORDER BY error_pct DESC;

Sekin proksilarni topish (p95 kechikishi > 2s):

WITH ranked AS (
  SELECT proxy_url, latency_ms,
         PERCENT_RANK() OVER (PARTITION BY proxy_url ORDER BY latency_ms) AS pct
  FROM proxy_logs
  WHERE timestamp > datetime('now', '-24 hour')
)
SELECT proxy_url, latency_ms
FROM ranked
WHERE pct >= 0.95
ORDER BY latency_ms DESC;

Rotatsiya strategiyasini tanlash daraxti

Bitta qamrovga bir nechta proksi biriktirilganda, OmniRoute har bir sorov uchun qaysi birini ishlatishni tanlash maqsadida rotatsiya strategiyasidan foydalanadi. Strategiya qamrov darajasida sozlanadi (global, har bir provayder, har bir hisob, har bir kombinatsiya boyicha).

Mavjud strategiyalar

Strategiya Qachon ishlatish kerak Murosa
quality (standart) Sifati turlicha bolgan proksilar bilan ishlab chiqarish muhiti Yuqori baholangan proksilarni afzal koradi; past baholanganlari ishlatilmay qolishi mumkin
random Yuklamani taqsimlash, maxfiylik Bir tekis taqsimlash; sifat signallarini hisobga olmaydi
sequential Nosozliklarni tuzatish, deterministik sinov Proksilarni tartib bilan navbatma-navbat ishlatadi; tushunish oson

Qaror daraxti

                    Proksilaringiz uchun sifat ballari mavjudmi?
                    │
        ┌───────────┴───────────┐
        │                       │
       HA                      YOQ
        │                       │
   Barcha proksilar            │
   sifati taxminan                │
   tengmi?                      │
        │                       │
   ┌────┴────┐                  │
   │         │                  │
  HA       YOQ              Ishlating
   │         │              `random`
   │         │              (bir tekis
   │         │              taqsimlash vaqt
   │         │              otishi bilan sifat
   │         │              malumotini toplaydi)
   │         │
   │    `quality`dan foydalaning
   │    (turli sifatlar
   │    uchun eng yaxshisi)
   │
`random`dan foydalaning
(yuklamani bir
tekis taqsimlang)

Oʻz proksilaringiz uchun nosozliklarni avtomatik istisno qilish

1proxy marketpleys puli nosoz proksilarni allaqachon avtomatik ravishda pasaytiradi (qarang: Proksi sifati ballari). Reestrga oʻzingiz qoʻshgan proksilar uchun fondagi holat tekshiruvi rejalashtiruvchisi (src/lib/proxyHealth/scheduler.ts) hech narsani oʻchirmasdan, xuddi shunday “ishlamayotgan aʼzoni zanjirdan avtomatik chiqarib tashlash” imkoniyatini taqdim etadi:

# .env — ketma-ket 3 ta muvaffaqiyatsiz tekshiruvdan keyin proksini vaqtincha oʻchiring,
# tekshiruvlarga yana javob bera boshlagach, uni avtomatik ravishda qayta yoqing.
PROXY_AUTO_DISABLE=true
PROXY_AUTO_REMOVE_AFTER=3

Bu koʻp proksili zanjirda quyidagicha ishlaydi:

  1. Rejalashtiruvchi har bir roʻyxatdan oʻtkazilgan proksini har PROXY_HEALTH_INTERVAL_MS oraligʻida tekshiradi (standart: 10 daqiqa; minimum: 1 daqiqa).
  2. Ketma-ket PROXY_AUTO_REMOVE_AFTER ta aniq muvaffaqiyatsizlikdan soʻng (haqiqiy ulanish xatosi — taym-aut yoki tekshiruv nishonining oʻzidagi 5xx hech qachon hisobga olinmaydi, qarang: Proksi holatini tekshirish), proksining status qiymati dead etib belgilanadi.
  3. dead — pul/rotatsiya aniqlash mexanizmi ishlatadigan faol holatlar filtri chiqarib tashlaydigan holatlardan biri. Shu sababli qamrov rotatsiyasi (navbatma-navbat / tasodifiy / biriktirilgan / kechikish boʻyicha — qarang: Rotatsiya strategiyasini tanlash daraxti) darhol ushbu proksini yangi soʻrovlarga berishni toʻxtatadi. Puldagi boshqa proksilarga taʼsir qilinmaydi va butun pul hech qachon bildirmasdan toʻgʻridan-toʻgʻri ulanishga qaytmaydi — 4 darajali proksi tizimi dagi xatolikda-yopish himoyasiga qarang.
  4. Rejalashtiruvchi dead holatidagi proksilarni xuddi shu intervalda tekshirishda davom etadi. Keyingi muvaffaqiyatli tekshiruv status qiymatini yana active holatiga oʻzgartiradi va proksi rotatsiyaga qaytadi — uni qoʻlda qayta qoʻshish talab qilinmaydi.

Bu ataylab ixtiyoriy va buzmaydigan tarzda ishlab chiqilgan: standart holatda rejalashtiruvchi faqat muvaffaqiyatsizliklarni hisoblaydi va jurnalga yozadi (decision.ts faylidagi C siyosatiga qarang), PROXY_AUTO_DISABLE esa hech qachon qatorni oʻchirmaydi — buning uchun alohida, yanada keskinroq PROXY_AUTO_REMOVE bayrogʻi mavjud. Agar ikkalasi ham true etib belgilansa, PROXY_AUTO_REMOVE ustunlik qiladi (oʻchirilish arafasidagi proksini oraliqda vaqtincha oʻchirishdan foyda yoʻq). Oʻzgaruvchilarning toʻliq roʻyxati uchun Muhit konfiguratsiyasi maʼlumotnomasiga qarang.


📖 Tegishli hujjatlar: