🌐 Languages: 🇺🇸 English · 🇪🇹 am · 🇸🇦 ar · 🇦🇿 az · 🇧🇬 bg · 🇧🇩 bn · 🇧🇦 bs · 🇨🇿 cs · 🇩🇰 da · 🇩🇪 de · 🇬🇷 el · 🇪🇸 es · 🇪🇪 et · 🇮🇷 fa · 🇫🇮 fi · 🇫🇷 fr · 🇮🇪 ga · 🇮🇳 gu · 🇳🇬 ha · 🇮🇱 he · 🇮🇳 hi · 🇭🇷 hr · 🇦🇲 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 · 🇺🇿 uz · 🇻🇳 vi · 🇳🇬 yo · 🇨🇳 zh-CN · 🇹🇼 zh-TW
Kerülje meg a földrajzi korlátozásokat, védje személyazonosságát, és irányítsa az AI-forgalmat bármilyen proxyn keresztül — mindezt konfigurációs bonyodalmak nélkül.
Az OmniRoute teljes funkcionalitású proxykezelő rendszert tartalmaz, amellyel a felsőbb szintű AI-szolgáltatók felé irányuló forgalmat HTTP-, HTTPS- vagy SOCKS5-proxykon keresztül továbbíthatja. Akár blokkolt régióban tartózkodik, IP-rotációra van szüksége, vagy rejtett ujjlenyomat-kezelést szeretne — ez az útmutató minden részletre kitér.
- Miért érdemes proxykat használni?
- Az architektúra áttekintése
- Négyszintű proxyrendszer
- Proxyregiszter (CRUD)
- Az 1proxy ingyenes piactere
- Proxyrotáció
- Észlelés elleni védelem és rejtett működés
- Felsőbb szintű proxymódok
- Vezérlőpult felhasználói felülete
- API-referencia
- Környezeti változók
- Hibaelhárítás
Számos AI-szolgáltató földrajzi régió alapján korlátozza a hozzáférést. Az Oroszországban, Kínában, Iránban, Kubában, Törökországban és más országokban dolgozó fejlesztők az alábbihoz hasonló hibákkal találkozhatnak:
unsupported_country_region_territory
A proxyk a blokkolt régiókon kívül is hasznosak:
| Felhasználási mód | Leírás |
|---|---|
| Földrajzi korlátozások megkerülése | Az OpenAI, Anthropic, Codex és Copilot elérése blokkolt országokból |
| IP-rotáció | A kérések elosztása több IP-cím között a sebességkorlátozás elkerüléséhez |
| Adatvédelem | A valódi IP-cím elrejtése a felsőbb szintű szolgáltatók elől |
| Megfelelőség | A forgalom meghatározott joghatóságokon keresztüli irányítása |
| Tesztelés | Különböző régiókból érkező kérések szimulálása |
┌───────────────────────────────────────────────────────────────┐
│ OmniRoute-kiszolgáló │
│ │
│ ┌─────────────┐ ┌──────────────┐ ┌──────────────────┐ │
│ │ Proxy- │ │ Proxy- │ │ Proxy │ │
│ │ regiszter │───▶│ diszpécser │───▶│ Fetch (undici) │ │
│ │ (SQLite) │ │ (gyorsítótár)│ │ │ │
│ └─────────────┘ └──────────────┘ └────────┬─────────┘ │
│ ▲ │ │
│ │ ▼ │
│ ┌──────┴──────┐ ┌──────────────────┐ │
│ │ 1proxy- │ │ Felsőbb szintű │ │
│ │ szinkroniz. │ │ szolgáltatói API │ │
│ │ (ingyenes) │ │ │ │
│ └─────────────┘ └──────────────────┘ │
└───────────────────────────────────────────────────────────────┘
| Összetevő | Fájl | Szerep |
|---|---|---|
| Proxyregiszter | src/lib/db/proxies.ts |
CRUD-műveletek a proxybejegyzésekhez és a hatókör-hozzárendelésekhez |
| Proxydiszpécser | open-sse/utils/proxyDispatcher.ts |
Gyorsítótárazott undici ProxyAgent/SOCKS diszpécserek létrehozása |
| Proxy Fetch | open-sse/utils/proxyFetch.ts |
A fetch() kiegészítése proxydiszpécser-injektálással |
| Beállítási útvonal | src/app/api/settings/proxy/route.ts |
Korábbi proxykonfigurációs API (GET/PUT/DELETE) |
| Kezelési útvonal | src/app/api/v1/management/proxies/route.ts |
Regiszterkezelő CRUD API (GET/POST/PATCH/DELETE) |
| 1proxy-adatbázis | src/lib/db/oneproxy.ts |
Az ingyenes proxypiactér adatainak tartós tárolása |
Az OmniRoute négy független hatókörben támogatja a proxykonfigurációt, amelyek kiértékelése prioritási sorrendben történik:
Prioritási sorrend (legmagasabb → legalacsonyabb):
1. 🔵 Fiók-/kapcsolati proxy → API-kulcsonként / OAuth-kapcsolatonként
2. 🟡 Szolgáltatói proxy → szolgáltatónként (pl. az összes OpenAI-forgalom)
3. 🟠 Kombinációs proxy → kombinációnként/útválasztási konfigurációnként
4. 🟢 Globális proxy → minden forgalom, minden szolgáltató
Amikor az OmniRoute kérést küld egy felsőbb szintű szolgáltatónak, meghívja a resolveProxyForConnectionFromRegistry() függvényt, amely sorrendben ellenőrzi az egyes szinteket:
- Fiókszint — Van proxy hozzárendelve ehhez a konkrét kapcsolatazonosítóhoz?
- Szolgáltatói szint — Van proxy hozzárendelve ehhez a szolgáltatóhoz (pl.
openai)? - Globális szint — Van beállítva globális proxy?
- Nincs proxy — Közvetlen kapcsolat a szolgáltatóval.
Az első egyezés érvényesül. Ez azt jelenti, hogy beállíthat egy globális proxyt tartalékmegoldásként, majd felülbírálhatja azt bizonyos szolgáltatók vagy kapcsolatok esetében.
| Forgalomtípus | Proxyzott? | Megjegyzések |
|---|---|---|
| Csevegési kiegészítések | ✅ | Minden /v1/chat/completions kérés |
| Beágyazások | ✅ | /v1/embeddings |
| Képgenerálás | ✅ | /v1/images/generations |
| Hang (TTS/STT) | ✅ | /v1/audio/* |
| OAuth-token cseréje | ✅ | Megoldja az unsupported_country_region_territory hibát |
| Kapcsolattesztelés | ✅ | A „Kapcsolat tesztelése” gomb proxyt használ |
| Tokenfrissítés | ✅ | Háttérben végzett OAuth-megújítás |
| Modellek szinkronizálása | ✅ | Modellek listázása és felderítése |
A proxyregiszter egy SQLite-tábla (proxy_registry), amely az összes proxyt tárolja. Minden proxy a következő mezőkkel rendelkezik:
| Mező | Típus | Leírás |
|---|---|---|
id |
UUID | Egyedi azonosító |
name |
Sztring | Ember által olvasható címke |
type |
Sztring | Protokoll: http, https, socks5 |
host |
Sztring | A proxy gépneve vagy IP-címe |
port |
Egész | Portszám |
username |
Sztring | Hitelesítési felhasználónév (titkosítva tárolva) |
password |
Sztring | Hitelesítési jelszó (titkosítva tárolva) |
region |
Sztring | Földrajzi régió címkéje |
notes |
Sztring | Szabad szöveges megjegyzések |
status |
Sztring | active vagy inactive |
source |
Sztring | manual vagy oneproxy |
Az irányítópulton keresztül:
- Lépjen a Beállítások → Proxy menüpontra
- Kattintson a Proxy hozzáadása lehetőségre
- Adja meg a típust, a gépnevet, a portot és az opcionális hitelesítési adatokat
- Mentse a beállításokat
API-n keresztül:
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"
}'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
}'Megjegyzés: A hitelesítési adatok megmaradnak, hacsak nem küld kifejezetten nem üres helyettesítő értékeket. Ha üres sztringeket küld a
username/passwordmezőkhöz, a tárolt értékek megmaradnak.
# Sikertelen, ha a proxy bármely hatókörhöz hozzá van rendelve
curl -X DELETE "http://localhost:20128/api/v1/management/proxies?id=proxy-uuid"
# Kényszerített törlés (a hozzárendeléseket is eltávolítja)
curl -X DELETE "http://localhost:20128/api/v1/management/proxies?id=proxy-uuid&force=1"curl "http://localhost:20128/api/v1/management/proxies?limit=50&offset=0"# Hozzárendelés a globális hatókörhöz
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}}'
# Hozzárendelés egy adott szolgáltatóhoz
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}}'
# Hozzárendelés egy adott kapcsolathoz/kulcshoz
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}}'Ellenőrizze, hogy egy adott kapcsolathoz melyik proxy lenne használva:
curl "http://localhost:20128/api/settings/proxy?resolve=connection-uuid"A feloldott proxyt adja vissza annak szintjével (account, provider vagy global) és forrásával együtt.
Rendeljen hozzá egy proxyt egyszerre több szolgáltatóhoz vagy kapcsolathoz:
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"
}'A proxyk szerepelnek a Biztonsági mentés/visszaállítás rendszerben. Az OmniRoute-konfiguráció exportálásakor:
- Lépjen az Irányítópult → Beállítások → Biztonsági mentés menüpontra
- Kattintson az Exportálás lehetőségre — a proxyregiszter és a hozzárendelések is bekerülnek
- A visszaállításhoz kattintson az Importálás lehetőségre, majd töltse fel a biztonsági mentési fájlt
A proxyregiszter támogatja a host+port alapján történő upsert műveletet is — ha olyan proxyt importál, amely már létezik (azonos gépnévvel és porttal), akkor új példány létrehozása helyett a meglévőt frissíti.
Ha egy régebbi (registry előtti) verzióban konfigurált proxykat, az OmniRoute automatikusan migrálja őket:
Korábbi key_value tároló → proxy_registry + proxy_assignments
Ez a frissítés utáni első indításkor egyszer történik meg. Az újbóli futtatáshoz használja a migrateLegacyProxyConfigToRegistry({ force: true }) függvényt.
Az OmniRoute integrálható a 1proxy közösségi platformmal, így hozzáférést biztosít több száz ingyenes, ellenőrzött proxyhoz a világ minden tájáról. Ez tökéletes megoldás azoknak a felhasználóknak, akik nem rendelkeznek saját proxyinfrastruktúrával.
┌─────────────┐ Szinkronizálás ┌─────────────────┐ Váltás ┌─────────────┐
│ 1proxy API │ ───────────────▶ │ proxy_registry │ ──────────▶ │ Szolgáltató │
│ (külső) │ legfeljebb 500 │ source=oneproxy │ minőség │ API │
└─────────────┘ proxy └─────────────────┘ alapján └─────────────┘
- Szinkronizálás — Az OmniRoute lekéri az ellenőrzött proxykat a 1proxy API-ból
- Tárolás — A proxyk ugyanabban a
proxy_registrytáblában lesznek mentve,source = 'oneproxy'értékkel - Szűrés — Szűrés protokoll, ország és minőségi pontszám alapján
- Váltás — A legjobb proxy kiválasztása minőségi, véletlenszerű vagy szekvenciális stratégia használatával
- Automatikus leminősítés — A sikertelen proxyk minőségi pontszáma csökken; a küszöbérték alatt → inaktívként lesznek megjelölve
A vezérlőpulton keresztül:
- Lépjen a Beállítások → 1proxy lapra
- Kattintson a „Szinkronizálás most” gombra
- Tekintse meg a statisztikákat: proxyk teljes száma, aktív proxyk száma, átlagos minőség és országonkénti bontás
API-n keresztül:
# Szinkronizálás indítása
curl -X POST http://localhost:20128/api/settings/oneproxy \
-H "Content-Type: application/json" \
-d '{}'
# Válasz:
# { "success": true, "added": 127, "updated": 45, "failed": 2, "total": 172 }# Szűrés protokoll alapján
curl "http://localhost:20128/api/settings/oneproxy?protocol=socks5"
# Szűrés ország alapján
curl "http://localhost:20128/api/settings/oneproxy?countryCode=US"
# Szűrés minimális minőségi pontszám alapján
curl "http://localhost:20128/api/settings/oneproxy?minQuality=80"
# Szűrők kombinálása
curl "http://localhost:20128/api/settings/oneproxy?protocol=http&countryCode=DE&minQuality=70"Minden 1proxy-proxyhoz metaadatok tartoznak:
| Mező | Leírás |
|---|---|
qualityScore |
A 1proxy ellenőrzése alapján adott 0–100-as érték |
latencyMs |
Mért hálózati késleltetés |
anonymity |
transparent, anonymous vagy elite |
googleAccess |
A proxy hozzáfér-e a Google szolgáltatásaihoz |
countryCode |
Kétbetűs ISO-országkód |
lastValidated |
A legutóbbi ellenőrzés időbélyege |
A minőségi pontszámok dinamikusan változnak:
- A sikertelen kérések 10 ponttal csökkentik a pontszámot
- Ha a pontszám ≤10-re csökken → a proxy
inactivejelölést kap - Az inaktív proxyk kimaradnak a váltásból
# Váltás minőség alapján (először a legjobb proxy) — alapértelmezett
curl -X POST http://localhost:20128/api/settings/oneproxy/rotate \
-H "Content-Type: application/json" \
-d '{"strategy": "quality"}'
# Véletlenszerű váltás
curl -X POST http://localhost:20128/api/settings/oneproxy/rotate \
-d '{"strategy": "random"}'
# Szekvenciális (először a legrégebben ellenőrzött)
curl -X POST http://localhost:20128/api/settings/oneproxy/rotate \
-d '{"strategy": "sequential"}'A 1proxy szinkronizálása beépített megszakítóval rendelkezik:
- 5 egymást követő szinkronizálási hiba után a további szinkronizálási kísérletek blokkolva lesznek
- Visszaállítás:
resetOneproxyCircuitBreaker(), vagy indítsa újra a szervert - A szinkronizálás állapota a
GET /api/settings/oneproxy?action=statuscímen érhető el
# Egyetlen 1proxy-proxy törlése
curl -X DELETE "http://localhost:20128/api/settings/oneproxy?id=proxy-uuid"
# Az ÖSSZES 1proxy-proxy törlése (a manuális proxyk érintetlenek maradnak)
curl -X DELETE "http://localhost:20128/api/settings/oneproxy?clearAll=1"Az OmniRoute nem csupán proxyn keresztül irányítja a forgalmat — hitelesnek is láttatja azt:
A wreq-js használatával böngészőszerű TLS-ujjlenyomatokat generál, megkerülve azokat a botészlelő rendszereket, amelyek megjelölik a nem böngészőből származó TLS-kézfogásokat.
A CLI-ujjlenyomat kapcsoló (Beállítások → Biztonság) átrendezi a HTTP-fejléceket és a JSON-törzs mezőit, hogy azok pontosan megfeleljenek a natív CLI-binárisok (Claude Code, Codex stb.) aláírásának. Ez a proxy használatán felül működik:
Az Ön IP-je (blokkolva) → Proxy IP-je (USA) → Szolgáltatói API
+ TLS-hamisítás
+ CLI-ujjlenyomat
Így egyszerre kap IP-maszkolást és hiteles kéréseket.
Az irányítópulton színkódolt jelvények mutatják, hogy melyik proxyszint aktív:
| Jelvény | Szint | Jelentés |
|---|---|---|
| 🟢 | Globális | Minden forgalom ezen a proxyn keresztül halad |
| 🟡 | Szolgáltató | Csak ezen szolgáltató forgalma halad proxyn keresztül |
| 🔵 | Kapcsolat | Ez a konkrét kulcs/fiók ezt a proxyt használja |
A jelvény az ellenőrzéshez a feloldott proxy IP-címét is megjeleníti.
A CLIProxyAPI-mintát használó szolgáltatók esetén az OmniRoute három kimenő proxymódot támogat:
| Mód | Leírás |
|---|---|
native |
Az OmniRoute közvetlenül kezeli a proxy útválasztását (alapértelmezett) |
cliproxyapi |
Átadja a feladatot egy külső CLIProxyAPI-példánynak |
fallback |
Először a natív módot próbálja, majd visszavált a CLIProxyAPI-ra |
Szolgáltatónként konfigurálható:
curl -X PUT "http://localhost:20128/api/upstream-proxy/openai" \
-H "Content-Type: application/json" \
-d '{"mode": "native", "enabled": true}'- Globális proxy konfigurációja (egyszer állítható be az összes forgalomhoz)
- Szolgáltatónkénti proxy felülbírálások
- Kapcsolatonkénti proxy hozzárendelések
- Kapcsolatteszt a konfigurált proxyn keresztül
- Az aktív proxyszintet mutató színkódolt jelvények
- Szinkronizálás most gomb az ingyenes proxyk lekéréséhez
- Statisztikai kártyák: Összes, Aktív, Átlagos minőség, Utolsó szinkronizálás
- Szűrők: Protokoll, Országkód, Minimális minőség
- Proxytáblázat a gazdagéppel, protokollal, országgal, minőségi pontszámmal, késleltetéssel, anonimitással és Google-hozzáféréssel
- Szinkronizálási állapot panel a sikeres és sikertelen műveletek követésével, valamint az egymást követő hibák számával
- Összes törlése az összes 1proxy-bejegyzés eltávolításához
| Metódus | Végpont | Leírás |
|---|---|---|
GET |
/api/settings/proxy |
A teljes proxykonfiguráció lekérése |
GET |
/api/settings/proxy?level=global |
A globális proxy lekérése |
GET |
/api/settings/proxy?level=provider&id=openai |
A szolgáltatói proxy lekérése |
GET |
/api/settings/proxy?resolve=connectionId |
A tényleges proxy feloldása |
PUT |
/api/settings/proxy |
A proxykonfiguráció frissítése |
DELETE |
/api/settings/proxy?level=provider&id=openai |
A proxy eltávolítása az adott szintről |
| Metódus | Végpont | Leírás |
|---|---|---|
GET |
/api/v1/management/proxies |
Az összes proxy listázása |
GET |
/api/v1/management/proxies?id=uuid |
Proxy lekérése azonosító alapján |
GET |
/api/v1/management/proxies?id=uuid&where_used=1 |
Proxy-hozzárendelések lekérése |
POST |
/api/v1/management/proxies |
Proxy létrehozása |
PATCH |
/api/v1/management/proxies |
Proxy frissítése |
DELETE |
/api/v1/management/proxies?id=uuid |
Proxy törlése |
DELETE |
/api/v1/management/proxies?id=uuid&force=1 |
Kényszerített törlés |
POST |
/api/v1/management/proxies/bulk-assign |
Tömeges hozzárendelés |
GET |
/api/v1/management/proxies/assignments |
Hozzárendelések listázása |
GET |
/api/v1/management/proxies/health |
Proxyk állapotstatisztikái |
Ha az OmniRoute-példányt a nyilvános interneten szeretné elérhetővé tenni (Cloudflare/ngrok/Tailscale) ahelyett, hogy a kimenő forgalmat proxyn keresztül irányítaná, tekintse meg a TUNNELS_GUIDE.md dokumentumot. Az alagutak REST API-ja az /api/tunnels/{cloudflared,ngrok,tailscale}/* alatt érhető el, és független a fent dokumentált kimenő proxylánctól.
| Metódus | Végpont | Leírás |
|---|---|---|
GET |
/api/settings/oneproxy |
Az 1proxy proxyk listázása |
GET |
/api/settings/oneproxy?action=stats |
Statisztikák és szinkronizálási állapot lekérése |
GET |
/api/settings/oneproxy?action=status |
Csak a szinkronizálási állapot lekérése |
POST |
/api/settings/oneproxy |
Szinkronizálás indítása |
POST |
/api/settings/oneproxy/rotate |
Váltás a következő proxyra |
DELETE |
/api/settings/oneproxy?id=uuid |
Egy bejegyzés törlése |
DELETE |
/api/settings/oneproxy?clearAll=1 |
Az összes törlése |
| Metódus | Végpont | Leírás |
|---|---|---|
GET |
/api/upstream-proxy/:providerId |
A kimenő proxy konfigurációjának lekérése |
PUT |
/api/upstream-proxy/:providerId |
A kimenő proxymód beállítása |
DELETE |
/api/upstream-proxy/:providerId |
A kimenő proxykonfiguráció eltávolítása |
| Változó | Alapértelmezett érték | Leírás |
|---|---|---|
ENABLE_SOCKS5_PROXY |
true |
A SOCKS5-proxy támogatásának engedélyezése (alapértelmezetten true az .env.example fájlban) |
Állítsa be az ENABLE_SOCKS5_PROXY=true értéket az .env fájlban, majd indítsa újra a szolgáltatást.
Ez megszokott az olyan olcsó proxyknál, amelyek megszakítják az inaktív kapcsolatokat. Az OmniRoute ezt már kezeli a következő módokon:
- Letiltja a keep-alive használatát a proxykapcsolatoknál (
keepAliveTimeout: 1) - Letiltja a pipeline-kezelést (
pipelining: 0) - Gyorsítótárazza a diszpécsereket az ismételt kézfogások elkerülése érdekében
Ha a probléma továbbra is fennáll, próbáljon ki egy másik proxyt, vagy használja az 1proxy rotációs funkcióját.
Győződjön meg róla, hogy a proxy az OAuth-folyamat elindítása előtt van konfigurálva. Az OmniRoute az OAuth-tokenek cseréjét a konfigurált proxyn keresztül irányítja. Először állítson be egy globális vagy szolgáltatói szintű proxyt, majd csatlakozzon.
Ellenőrizze a feloldási sorrendet:
- Ellenőrizze a
GET /api/settings/proxy?resolve=your-connection-idvégponttal - Ellenőrizze, hogy a proxy
statusértékeactivelegyen (neinactive) - Győződjön meg arról, hogy a proxy-hozzárendelés hatóköre megfelel a kapcsolatának
Ellenőrizze a szinkronizálás állapotát:
curl "http://localhost:20128/api/settings/oneproxy?action=status"Ha a consecutiveFailures >= 5, az áramkör-megszakító aktiválódott. Az alaphelyzetbe állításhoz indítsa újra a kiszolgálót, vagy várjon a kézi alaphelyzetbe állításra.
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' vagy 'oneproxy'
quality_score INTEGER, -- 0–100 (csak 1proxy)
latency_ms INTEGER, -- ezredmásodperc (csak 1proxy)
anonymity TEXT, -- transparent/anonymous/elite
google_access INTEGER DEFAULT 0, -- hozzáférhet a Google-höz? (1proxy)
last_validated TEXT, -- ISO-időbélyeg (1proxy)
country_code TEXT, -- kétbetűs ISO-kód (1proxy)
created_at TEXT NOT NULL,
updated_at TEXT NOT NULL
);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, -- szolgáltatói azonosító, kapcsolatazonosító vagy kombinációazonosító
created_at TEXT NOT NULL,
updated_at TEXT NOT NULL,
UNIQUE(scope, scope_id)
);Az OmniRoute proxy gyors hibafelismerési mechanizmusa (src/lib/proxyHealth.ts) egy gyors TCP-kapcsolat-ellenőrzéssel kevesebb mint 2 másodperc alatt észleli a nem működő proxykat, majd gyorsítótárazza az eredményt, hogy elkerülje a kérésenkénti többletterhelést.
Kérés ──▶ ProxyHealthCache.get(url)
│
├─ Gyorsítótár-találat + friss? ──▶ gyorsítótárazott állapot visszaadása
│
└─ Nincs találat / elavult? ──▶ TCP-kapcsolódás ehhez: host:port
(időtúllépés: FAST_FAIL_TIMEOUT_MS)
──▶ gyorsítótárazás HEALTH_CACHE_TTL_MS ideig
──▶ eredmény visszaadása
Enélkül egy nem működő proxy minden kérést a teljes PROXY_TIMEOUT_MS időtartamára (alapértelmezetten 30 másodpercig) blokkolna, mielőtt hibával leállna.
| Változó | Alapértelmezett érték | Rendeltetés |
|---|---|---|
PROXY_FAST_FAIL_TIMEOUT_MS |
2000 |
TCP-kapcsolat időtúllépése állapotellenőrzésenként |
PROXY_HEALTH_CACHE_TTL_MS |
30000 |
Az állapoteredmény gyorsítótárazásának időtartama |
Ajánlott értékek:
| Forgatókönyv | Gyors hibafelismerés időtúllépése | Gyorsítótár TTL-je | Indoklás |
|---|---|---|---|
| Nagy áteresztőképességű API-átjáró | 1500ms | 60000ms | Agresszív gyors hibafelismerés, hosszabb gyorsítótárazás az ellenőrzések csökkentéséhez |
| Földrajzilag elosztott csomópontok | 3000ms | 15000ms | A lassabb hálózatoknak több idő kell; rövidebb gyorsítótár a gyors átálláshoz |
| Fejlesztés / tesztelés | 1000ms | 10000ms | Gyors iteráció helyi proxykkal |
| Rejtett működés / észlelés elleni védelem | 2500ms | 45000ms | Az adatforgalmi korlátokat aktiváló gyakori ellenőrzések elkerülése |
import { getAllProxyHealthStatuses, invalidateProxyHealth } from "omniroute/proxyHealth";
const statuses = getAllProxyHealthStatuses();
for (const s of statuses) {
console.log(`${s.proxyUrl} → healthy=${s.healthy}, stale=${s.stale}`);
}
// Egy adott proxy újbóli ellenőrzésének kikényszerítése
invalidateProxyHealth("http://user:pass@203.0.113.7:8080");A stale jelző értéke true, ha a gyorsítótár-bejegyzés túllépte a HEALTH_CACHE_TTL_MS időtartamot, és a következő kérés új ellenőrzést indít.
Az állapotellenőrzés az URL-séma alapján megfelelő alapértelmezett értékeket használ:
| Séma | Alapértelmezett port |
|---|---|
http:// |
8080 |
https:// |
443 |
socks5:// / socks5h:// |
1080 |
Az URL-ben megadott egyéni portok (http://host:9999) mindig elsőbbséget élveznek a séma alapértelmezett értékével szemben.
Az OmniRoute proxynként követi a használatot, hogy segítsen az üzemeltetőknek az útválasztási minták, a késleltetési kiugrások és az ismétlődő hibák diagnosztizálásában.
Az OmniRoute minden, beállított proxyn keresztül érkező kérésnél a következőket rögzíti:
| Mérőszám | Leírás |
|---|---|
proxy_url |
Teljes proxy-URL (kitakart hitelesítési adatokkal) |
provider |
A felsőbb szintű szolgáltató azonosítója (openai, anthropic stb.) |
latency_ms |
Teljes oda-vissza idő, beleértve a proxykézfogást |
connect_ms |
Csak a TCP-kapcsolódás ideje |
status |
A felsőbb szintű szolgáltatótól kapott HTTP-állapotkód |
error |
Hiba esetén a hiba osztálya |
timestamp |
ISO 8601 UTC |
# Legutóbbi proxyesemények
curl -H "Authorization: Bearer $OMNIROUTE_KEY" \
"http://localhost:20128/api/usage/proxy-logs?limit=100"A tényleges végpont a /api/usage/proxy-logs (lásd: src/app/api/usage/proxy-logs/route.ts). Ez a végpont a következőket támogatja:
GET /api/usage/proxy-logs— proxynaplók lekéréseDELETE /api/usage/proxy-logs— az összes proxynapló törlése
Szükség esetén az összesített statisztikák közvetlenül lekérdezhetők SQL használatával a proxy_logs táblából. Az irányítópult felhasználói felülete összesített nézeteket is kínálhat.
Instabil proxy észlelése (felváltva sikeres és sikertelen):
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;Lassú proxyk keresése (p95 késleltetés > 2 s):
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;Ha egy hatókörhöz több proxy van hozzárendelve, az OmniRoute egy forgatási stratégiával választja ki, hogy melyiket használja az egyes kérésekhez. A stratégia a hatókör szintjén állítható be (globálisan, szolgáltatónként, fiókonként vagy kombinációnként).
| Stratégia | Mikor használja | Kompromisszum |
|---|---|---|
quality (alapértelmezett) |
Éles környezetben, eltérő minőségű proxykkal | Előnyben részesíti a magas értékelésű proxykat; az alacsony értékelésűek háttérbe szorulhatnak |
random |
Terheléselosztáshoz, adatvédelemhez | Egyenletes elosztás; figyelmen kívül hagyja a minőségi jelzéseket |
sequential |
Hibakereséshez, determinisztikus teszteléshez | Sorrendben halad végig a proxykon; könnyen átlátható |
Rendelkezik minőségi pontszámokkal a proxykhoz?
│
┌───────────┴───────────┐
│ │
IGEN NEM
│ │
Minden proxy │
megközelítőleg │
azonos minőségű? │
│ │
┌────┴────┐ │
│ │ │
IGEN NEM Használja a
│ │ `random`
│ │ stratégiát
│ │ (az egyenletes
│ │ elosztás idővel
│ │ minőségi adatokat gyűjt)
│ │
│ Használja a `quality`
│ stratégiát (eltérő
│ minőség esetén
│ ez a legjobb)
│
Használja a `random`
stratégiát (egyenletes
terheléselosztás)
A 1proxy piactéri készlete már önállóan is automatikusan alacsonyabb prioritást ad a meghibásodott proxyknak (lásd:
Proxyk minőségi pontszámai). A rendszerleíró adatbázishoz Ön által hozzáadott
proxyk esetén a háttérben futó állapotfigyelő ütemező
(src/lib/proxyHealth/scheduler.ts) ugyanazt az „elérhetetlen tag automatikus kizárása
a láncból” viselkedést biztosítja, bármi törlése nélkül:
# .env — proxy ideiglenes letiltása 3 egymást követő sikertelen ellenőrzés után,
# majd automatikus újbóli engedélyezése, amint ismét válaszol az ellenőrzésekre.
PROXY_AUTO_DISABLE=true
PROXY_AUTO_REMOVE_AFTER=3Így illeszkedik egy több proxyból álló láncba:
- Az ütemező minden regisztrált proxyt ellenőriz
PROXY_HEALTH_INTERVAL_MSidőközönként (alapértelmezés szerint 10 percenként; legalább 1 percenként). PROXY_AUTO_REMOVE_AFTERegymást követő egyértelmű hiba (valós kapcsolódási hiba — az időtúllépés vagy az ellenőrzési cél saját 5xx hibája soha nem számít bele, lásd: Proxyk állapotának ellenőrzése) után a proxystatusmezőjedeadértékre lesz állítva.- A
deadazon állapotok egyike, amelyeket a készlet/rotáció feloldásakor használt aktívállapot-szűrő kizár, így az adott hatókör rotációja (ciklikus / véletlenszerű / rögzített / késleltetésalapú — lásd: Rotációs stratégia döntési fája) azonnal leállítja az adott proxy hozzárendelését az új kérésekhez. A készlet többi proxyját ez nem érinti, és a teljes készlet soha nem tér át észrevétlenül közvetlen kapcsolatra — lásd a Négyszintű proxyrendszer hibánál záró védelmét. - Az ütemező továbbra is ugyanilyen időközönként ellenőrzi a
deadállapotú proxykat. A következő sikeres ellenőrzés visszaállítja astatusmezőtactiveértékre, és a proxy visszakerül a rotációba — nincs szükség kézi újbóli hozzáadásra.
Ez szándékosan külön engedélyezendő és adatvesztésmentes: alapértelmezés szerint az ütemező csak
számolja és naplózza a hibákat (lásd a C szabályzatot a decision.ts fájlban), a PROXY_AUTO_DISABLE
pedig soha nem töröl sort — erre szolgál a különálló, agresszívebb
PROXY_AUTO_REMOVE kapcsoló. Ha mindkettő true értékre van állítva, a PROXY_AUTO_REMOVE
élvez elsőbbséget (egy törlés előtt álló proxyt nincs értelme közben ideiglenesen letiltani). A változók
teljes listáját a Környezeti konfiguráció referenciadokumentációban
találja.
📖 Kapcsolódó dokumentáció:
- Felhasználói útmutató — Általános telepítés és konfiguráció
- API-referencia — Teljes API-dokumentáció
- Környezeti konfiguráció — Az összes környezeti változó