Files
OmniRoute/docs/i18n/lt/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

45 KiB
Raw Blame History

🌐 OmniRoute Proxy Guide (Lietuvių)

🌐 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 · 🇱🇻 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


Apeikite geografinius apribojimus, apsaugokite savo tapatybę ir nukreipkite DI srautą per bet kurį tarpinį serverį — be jokio sudėtingo konfigūravimo.

OmniRoute turi visavertę tarpinių serverių valdymo sistemą, leidžiančią nukreipti srautą į išorinius DI paslaugų teikėjus per HTTP, HTTPS arba SOCKS5 tarpinius serverius. Nesvarbu, ar esate regione, kuriame prieiga užblokuota, ar jums reikia IP adresų rotacijos, ar norite paslėpti skaitmeninį pėdsaką — šiame vadove aprašyta viskas.


Turinys


Kodėl verta naudoti tarpinius serverius?

Daugelis DI paslaugų teikėjų riboja prieigą pagal geografinį regioną. Kūrėjai Rusijoje, Kinijoje, Irane, Kuboje, Turkijoje ir kitose šalyse susiduria su tokiomis klaidomis:

unsupported_country_region_territory

Net ir užblokuotiems regionams nepriklausančiose vietovėse tarpiniai serveriai naudingi dėl šių priežasčių:

Naudojimo atvejis Aprašymas
Geografinių blokų apėjimas Pasiekite OpenAI, Anthropic, Codex ir Copilot iš šalių, kuriose prieiga užblokuota
IP adresų rotacija Paskirstykite užklausas keliems IP adresams, kad išvengtumėte dažnio ribojimo
Privatumas Paslėpkite savo tikrąjį IP adresą nuo išorinių paslaugų teikėjų
Atitiktis Nukreipkite srautą per konkrečias jurisdikcijas
Testavimas Imituokite užklausas iš skirtingų regionų

Architektūros apžvalga

┌───────────────────────────────────────────────────────────────┐
│                       OmniRoute serveris                      │
│                                                               │
│  ┌─────────────┐    ┌──────────────┐    ┌──────────────────┐  │
│  │ Tarpinių    │    │ Tarpinių     │    │ Tarpinio serverio│  │
│  │ serverių    │───▶│ serverių     │───▶│ užklausa (undici)│  │
│  │ registras   │    │ dispečeris   │    │                  │  │
│  │ (SQLite)    │    │ (talpykla)   │    │                  │  │
│  └─────────────┘    └──────────────┘    └────────┬─────────┘  │
│         ▲                                        │            │
│         │                                        ▼            │
│  ┌──────┴──────┐                        ┌──────────────────┐  │
│  │ 1proxy      │                        │ Išorinio         │  │
│  │ sinchroniz. │                        │ teikėjo API      │  │
│  │ (nemokamas) │                        │                  │  │
│  └─────────────┘                        └──────────────────┘  │
└───────────────────────────────────────────────────────────────┘

Pagrindiniai komponentai

Komponentas Failas Paskirtis
Tarpinių serverių registras src/lib/db/proxies.ts Tarpinių serverių įrašų CRUD ir taikymo sričių priskyrimas
Tarpinių serverių dispečeris open-sse/utils/proxyDispatcher.ts Kuria undici ProxyAgent/SOCKS dispečerius ir naudoja podėlį
Tarpinio serverio užklausa open-sse/utils/proxyFetch.ts Papildo fetch() tarpinio serverio dispečerio įterpimu
Nustatymų maršrutas src/app/api/settings/proxy/route.ts Ankstesnės kartos tarpinio serverio konfigūracijos API (GET/PUT/DELETE)
Valdymo maršrutas src/app/api/v1/management/proxies/route.ts Registro CRUD API (GET/POST/PATCH/DELETE)
1proxy DB src/lib/db/oneproxy.ts Nemokamos tarpinių serverių prekyvietės duomenų ilgalaikis saugojimas

4 lygių tarpinių serverių sistema

OmniRoute palaiko tarpinių serverių konfigūraciją keturiose nepriklausomose srityse, kurios tikrinamos prioriteto tvarka:

Prioritetų nustatymo tvarka (nuo aukščiausio → iki žemiausio):

  1. 🔵 Paskyros / ryšio tarpinis serveris  →  kiekvienam API raktui / OAuth ryšiui
  2. 🟡 Teikėjo tarpinis serveris           →  kiekvienam teikėjui (pvz., visam OpenAI srautui)
  3. 🟠 Derinio tarpinis serveris           →  kiekvienam deriniui / maršruto parinkimo konfigūracijai
  4. 🟢 Visuotinis tarpinis serveris        →  visam srautui, visiems teikėjams

Kaip nustatomas tarpinis serveris

Kai OmniRoute siunčia užklausą išoriniam teikėjui, iškviečiama resolveProxyForConnectionFromRegistry() funkcija, kuri paeiliui patikrina kiekvieną lygį:

  1. Paskyros lygis — ar šiam konkrečiam ryšio ID priskirtas tarpinis serveris?
  2. Teikėjo lygis — ar šiam teikėjui (pvz., openai) priskirtas tarpinis serveris?
  3. Visuotinis lygis — ar sukonfigūruotas visuotinis tarpinis serveris?
  4. Be tarpinio serverio — tiesioginis ryšys su teikėju.

Naudojama pirmoji atitiktis. Tai reiškia, kad galite nustatyti visuotinį tarpinį serverį kaip atsarginį variantą, bet konkretiems teikėjams ar ryšiams jį pakeisti kitu.

Koks srautas perduodamas per tarpinį serverį

Srauto tipas Per tarpinį serverį? Pastabos
Pokalbių užbaigimai Visos /v1/chat/completions užklausos
Įterpiniai /v1/embeddings
Vaizdų generavimas /v1/images/generations
Garsas (TTS/STT) /v1/audio/*
OAuth prieigos rakto apsikeitimas Išsprendžia unsupported_country_region_territory
Ryšio bandymai Mygtukas „Tikrinti ryšį“ naudoja tarpinį serverį
Prieigos rakto atnaujinimas Foninis OAuth atnaujinimas
Modelių sinchronizavimas Modelių sąrašo gavimas ir aptikimas

Tarpinių serverių registras (CRUD)

Tarpinių serverių registras yra SQLite lentelė (proxy_registry), kurioje saugomi visi jūsų tarpiniai serveriai. Kiekvienas tarpinis serveris turi:

Laukas Tipas Aprašymas
id UUID Unikalus identifikatorius
name Eilutė Žmogui suprantama žyma
type Eilutė Protokolas: http, https, socks5
host Eilutė Tarpinio serverio pagrindinio kompiuterio vardas arba IP
port Sveikasis skaičius Prievado numeris
username Eilutė Autentifikavimo naudotojo vardas (saugykloje užšifruotas)
password Eilutė Autentifikavimo slaptažodis (saugykloje užšifruotas)
region Eilutė Geografinio regiono žyma
notes Eilutė Laisvos formos pastabos
status Eilutė active arba inactive
source Eilutė manual arba oneproxy

Tarpinio serverio kūrimas

Naudojant valdymo skydelį:

  1. Eikite į Nustatymai → Tarpinis serveris
  2. Spustelėkite Pridėti tarpinį serverį
  3. Įveskite tipą, pagrindinio kompiuterio adresą, prievadą ir pasirinktinius autentifikavimo duomenis
  4. Išsaugokite

Naudojant API:

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"
  }'

Tarpinio serverio atnaujinimas

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
  }'

Pastaba: prisijungimo duomenys išsaugomi, nebent aiškiai išsiunčiate netuščias pakaitines reikšmes. Išsiuntus tuščias username / password eilutes, išsaugotos reikšmės nebus pakeistos.

Tarpinio serverio ištrynimas

# Nepavyksta, jei tarpinis serveris priskirtas kuriai nors sričiai
curl -X DELETE "http://localhost:20128/api/v1/management/proxies?id=proxy-uuid"

# Priverstinis ištrynimas (taip pat pašalinami priskyrimai)
curl -X DELETE "http://localhost:20128/api/v1/management/proxies?id=proxy-uuid&force=1"

Tarpinių serverių sąrašo gavimas

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

Tarpinių serverių priskyrimas sritims

# Priskirti visuotinei sričiai
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}}'

# Priskirti konkrečiam teikėjui
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}}'

# Priskirti konkrečiam ryšiui / raktui
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}}'

Efektyviojo tarpinio serverio nustatymas

Patikrinkite, kuris tarpinis serveris būtų naudojamas konkrečiam ryšiui:

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

Grąžinamas nustatytas tarpinis serveris, jo lygis (account, provider arba global) ir šaltinis.

Masinis priskyrimas

Priskirkite vieną tarpinį serverį keliems teikėjams ar ryšiams vienu metu:

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"
  }'

Importavimas / eksportavimas

Tarpiniai serveriai įtraukiami į atsarginių kopijų kūrimo / atkūrimo sistemą. Eksportuojant OmniRoute konfigūraciją:

  1. Eikite į Valdymo skydelis → Nustatymai → Atsarginė kopija
  2. Spustelėkite Eksportuoti — bus įtrauktas tarpinių serverių registras ir priskyrimai
  3. Norėdami atkurti, spustelėkite Importuoti ir įkelkite atsarginės kopijos failą

Tarpinių serverių registras taip pat palaiko įterpimą arba atnaujinimą pagal pagrindinį kompiuterį ir prievadą — jei importuojate jau egzistuojantį tarpinį serverį (sutampa pagrindinis kompiuteris ir prievadas), jis atnaujinamas, užuot sukūrus dublikatą.

Senesnės konfigūracijos perkėlimas

Jei tarpinius serverius sukonfigūravote senesnėje versijoje (iki registro), „OmniRoute“ juos automatiškai perkelia:

Senoji key_value saugykla → proxy_registry + proxy_assignments

Tai atliekama vieną kartą, pirmą kartą paleidus po atnaujinimo. Norėdami pakartoti perkėlimą, naudokite migrateLegacyProxyConfigToRegistry({ force: true }).


1proxy nemokamų tarpinių serverių prekyvietė

🆕 Pridėjo @oyi77 — PR #1847 (problema #1788)

OmniRoute integruojama su 1proxy bendruomenės platforma ir suteikia prieigą prie šimtų nemokamų, patikrintų tarpinių serverių iš viso pasaulio. Tai puikiai tinka naudotojams, neturintiems nuosavos tarpinių serverių infrastruktūros.

Kaip tai veikia

┌─────────────┐  Sinchronizuoti  ┌─────────────────┐   Keisti     ┌────────────┐
│  1proxy API │ ───────────────▶ │  proxy_registry  │ ───────────▶ │ Teikėjo API│
│  (išorinė)  │    iki 500       │  source=oneproxy │  pagal kokybę│            │
└─────────────┘ tarpinių serverių└─────────────────┘               └────────────┘
  1. Sinchronizavimas — OmniRoute gauna patikrintus tarpinius serverius iš 1proxy API
  2. Saugojimas — tarpiniai serveriai išsaugomi toje pačioje proxy_registry lentelėje su source = 'oneproxy'
  3. Filtravimas — filtruokite pagal protokolą, šalį ir kokybės balą
  4. Keitimas — pasirinkite geriausią tarpinį serverį naudodami kokybe pagrįstą, atsitiktinę arba nuoseklią strategiją
  5. Automatinis kokybės mažinimas — nesėkmingai veikusio tarpinio serverio kokybės balas sumažinamas; nukritus žemiau ribos → jis pažymimas kaip neaktyvus

Tarpinių serverių sinchronizavimas

Per valdymo skydelį:

  1. Eikite į skirtuką Settings → 1proxy
  2. Spustelėkite „Sync Now“
  3. Peržiūrėkite statistiką: bendrą tarpinių serverių skaičių, aktyvių serverių skaičių, vidutinę kokybę ir suskirstymą pagal šalis

Per API:

# Pradėti sinchronizavimą
curl -X POST http://localhost:20128/api/settings/oneproxy \
  -H "Content-Type: application/json" \
  -d '{}'

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

Tarpinių serverių filtravimas

# Filtruoti pagal protokolą
curl "http://localhost:20128/api/settings/oneproxy?protocol=socks5"

# Filtruoti pagal šalį
curl "http://localhost:20128/api/settings/oneproxy?countryCode=US"

# Filtruoti pagal mažiausią kokybės balą
curl "http://localhost:20128/api/settings/oneproxy?minQuality=80"

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

Tarpinių serverių kokybės balai

Kiekvienas 1proxy tarpinis serveris turi metaduomenis:

Laukas Aprašymas
qualityScore 1proxy patvirtinimo įvertinimas nuo 0 iki 100
latencyMs Išmatuota tinklo delsa
anonymity transparent, anonymous arba elite
googleAccess Ar tarpinis serveris gali pasiekti Google paslaugas
countryCode Dviejų raidžių ISO šalies kodas
lastValidated Paskutinio patvirtinimo laiko žyma

Kokybės balai koreguojami dinamiškai:

  • Nesėkmingos užklausos sumažina balą 10 taškų
  • Balui nukritus iki ≤10 → tarpinis serveris pažymimas kaip inactive
  • Neaktyvūs tarpiniai serveriai neįtraukiami į keitimą

Keitimo strategijos

# Keisti pagal kokybę (pirmiausia geriausias tarpinis serveris) — numatytoji strategija
curl -X POST http://localhost:20128/api/settings/oneproxy/rotate \
  -H "Content-Type: application/json" \
  -d '{"strategy": "quality"}'

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

# Nuoseklus keitimas (pirmiausia seniausiai patikrintas)
curl -X POST http://localhost:20128/api/settings/oneproxy/rotate \
  -d '{"strategy": "sequential"}'

Grandinės pertraukiklis

1proxy sinchronizavimas turi integruotą grandinės pertraukiklį:

  • Po 5 iš eilės nepavykusių sinchronizavimų tolesni sinchronizavimo bandymai blokuojami
  • Nustatykite iš naujo naudodami resetOneproxyCircuitBreaker() arba paleiskite serverį iš naujo
  • Sinchronizavimo būsena pasiekiama adresu GET /api/settings/oneproxy?action=status

1proxy tarpinių serverių išvalymas

# Ištrinti vieną 1proxy tarpinį serverį
curl -X DELETE "http://localhost:20128/api/settings/oneproxy?id=proxy-uuid"

# Išvalyti VISUS 1proxy tarpinius serverius (rankiniu būdu pridėti tarpiniai serveriai nekeičiami)
curl -X DELETE "http://localhost:20128/api/settings/oneproxy?clearAll=1"

Apsauga nuo aptikimo ir maskavimas

OmniRoute ne tik nukreipia srautą per tarpinį serverį — jis užtikrina, kad srautas atrodytų teisėtas:

TLS kontrolinio atspaudo klastojimas

Naudoja wreq-js, kad sugeneruotų naršyklėms būdingus TLS kontrolinius atspaudus ir apeitų robotų aptikimo sistemas, kurios pažymi ne naršyklių TLS rankos paspaudimus.

CLI kontrolinio atspaudo atitikimas

CLI kontrolinio atspaudo jungiklis (Nustatymai → Saugumas) pertvarko HTTP antraštes ir JSON turinio laukus, kad jie tiksliai atitiktų vietinių CLI vykdomųjų failų (Claude Code, Codex ir kt.) parašą. Tai veikia kartu su tarpiniu serveriu:

Jūsų IP (užblokuotas) → Tarpinio serverio IP (JAV) → Teikėjo API
                         + TLS klastojimas
                         + CLI kontrolinis atspaudas

Vienu metu gaunate ir IP maskavimą, ir užklausų autentiškumą.

Tarpinio serverio IP išsaugojimas

Spalvomis pažymėti ženkleliai valdymo skydelyje rodo, kuris tarpinio serverio lygis yra aktyvus:

Ženklelis Lygis Reikšmė
🟢 Visuotinis Visas srautas siunčiamas per šį tarpinį serverį
🟡 Teikėjo Per tarpinį serverį siunčiamas tik šio teikėjo srautas
🔵 Ryšio Šis konkretus raktas / paskyra naudoja šį tarpinį serverį

Ženklelyje taip pat rodomas nustatytas tarpinio serverio IP, kad būtų galima jį patikrinti.


Išorinio tarpinio serverio režimai

Teikėjams, naudojantiems CLIProxyAPI modelį, OmniRoute palaiko tris išorinio tarpinio serverio režimus:

Režimas Aprašymas
native OmniRoute tiesiogiai tvarko maršrutizavimą per tarpinį serverį (numatytasis)
cliproxyapi Perduoda užduotį išoriniam CLIProxyAPI egzemplioriui
fallback Pirmiausia bando savąjį režimą, tada pereina prie CLIProxyAPI

Konfigūruokite kiekvienam teikėjui atskirai:

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

Valdymo skydelio naudotojo sąsaja

Nustatymai → Tarpinio serverio kortelė

  • Visuotinio tarpinio serverio konfigūracija (nustatoma vieną kartą visam srautui)
  • Atskirų teikėjų tarpinio serverio perrašos
  • Atskirų ryšių tarpinio serverio priskyrimai
  • Ryšio testas per sukonfigūruotą tarpinį serverį
  • Spalvomis pažymėti ženkleliai, rodantys aktyvų tarpinio serverio lygį

Nustatymai → 1proxy kortelė

  • Mygtukas Sinchronizuoti dabar, skirtas nemokamiems tarpiniams serveriams gauti
  • Statistikos kortelės: iš viso, aktyvūs, vidutinė kokybė, paskutinis sinchronizavimas
  • Filtrai: protokolas, šalies kodas, minimali kokybė
  • Tarpinių serverių lentelė su pagrindiniu kompiuteriu, protokolu, šalimi, kokybės įverčiu, delsa, anonimiškumu ir prieiga prie Google
  • Sinchronizavimo būsenos skydelis su sėkmingų / nesėkmingų bandymų stebėjimu ir iš eilės įvykusių nesėkmių skaičiumi
  • Išvalyti viską, kad būtų pašalinti visi 1proxy įrašai

API žinynas

Tarpinio serverio nustatymų API

Metodas Galinis taškas Aprašymas
GET /api/settings/proxy Gauti visą tarpinio serverio konfigūraciją
GET /api/settings/proxy?level=global Gauti visuotinį tarpinį serverį
GET /api/settings/proxy?level=provider&id=openai Gauti teikėjo tarpinį serverį
GET /api/settings/proxy?resolve=connectionId Nustatyti galiojantį tarpinį serverį
PUT /api/settings/proxy Atnaujinti tarpinio serverio konfigūraciją
DELETE /api/settings/proxy?level=provider&id=openai Pašalinti nurodyto lygio tarpinį serverį

Tarpinių serverių registro API

Metodas Galinis taškas Aprašymas
GET /api/v1/management/proxies Pateikti visų tarpinių serverių sąrašą
GET /api/v1/management/proxies?id=uuid Gauti tarpinį serverį pagal ID
GET /api/v1/management/proxies?id=uuid&where_used=1 Gauti tarpinio serverio priskyrimus
POST /api/v1/management/proxies Sukurti tarpinį serverį
PATCH /api/v1/management/proxies Atnaujinti tarpinį serverį
DELETE /api/v1/management/proxies?id=uuid Ištrinti tarpinį serverį
DELETE /api/v1/management/proxies?id=uuid&force=1 Priverstinai ištrinti
POST /api/v1/management/proxies/bulk-assign Priskirti masiškai
GET /api/v1/management/proxies/assignments Pateikti priskyrimų sąrašą
GET /api/v1/management/proxies/health Tarpinių serverių būklės statistika

Tunelių API

Informacijos apie OmniRoute egzemplioriaus paskelbimą viešajame internete (naudojant Cloudflare/ngrok/Tailscale), užuot nukreipus išeinantį srautą per tarpinį serverį, rasite TUNNELS_GUIDE.md. Tunelių REST API yra pasiekiama adresu /api/tunnels/{cloudflared,ngrok,tailscale}/* ir nepriklauso nuo pirmiau aprašytos išeinančių tarpinių serverių grandinės.

1proxy API

Metodas Galinis taškas Aprašymas
GET /api/settings/oneproxy Pateikti 1proxy tarpinių serverių sąrašą
GET /api/settings/oneproxy?action=stats Gauti statistiką ir sinchronizavimo būseną
GET /api/settings/oneproxy?action=status Gauti tik sinchronizavimo būseną
POST /api/settings/oneproxy Suaktyvinti sinchronizavimą
POST /api/settings/oneproxy/rotate Pereiti prie kito tarpinio serverio
DELETE /api/settings/oneproxy?id=uuid Ištrinti vieną
DELETE /api/settings/oneproxy?clearAll=1 Išvalyti viską

Išorinio tarpinio serverio API

Metodas Galinis taškas Aprašymas
GET /api/upstream-proxy/:providerId Gauti išorinio tarpinio serverio konfigūraciją
PUT /api/upstream-proxy/:providerId Nustatyti išorinio tarpinio serverio režimą
DELETE /api/upstream-proxy/:providerId Pašalinti išorinio tarpinio serverio konfigūraciją

Aplinkos kintamieji

Kintamasis Numatytoji reikšmė Aprašymas
ENABLE_SOCKS5_PROXY true Įjungti SOCKS5 tarpinio serverio palaikymą (numatytoji reikšmė .env.example faile yra true)

Trikčių šalinimas

„SOCKS5 proxy is disabled“

.env faile nustatykite ENABLE_SOCKS5_PROXY=true ir paleiskite iš naujo.

„socket hang up“ klaidos naudojant tarpinį serverį

Tai įprasta naudojant pigius tarpinius serverius, kurie nutraukia neaktyvius ryšius. OmniRoute tai jau apdoroja:

  • Išjungia nuolatinį ryšį su tarpiniais serveriais (keepAliveTimeout: 1)
  • Išjungia konvejerinį užklausų siuntimą (pipelining: 0)
  • Kaupia dispečerines podėlyje, kad būtų išvengta pakartotinių ryšio užmezgimų

Jei problema išlieka, išbandykite kitą tarpinį serverį arba naudokite 1proxy rotacijos funkciją.

„unsupported_country_region_territory“ OAuth metu

Įsitikinkite, kad tarpinis serveris sukonfigūruotas prieš pradedant OAuth eigą. OmniRoute nukreipia OAuth prieigos raktų apsikeitimą per sukonfigūruotą tarpinį serverį. Pirmiausia nustatykite visuotinį arba teikėjo lygmens tarpinį serverį, tada prisijunkite.

Tarpinis serveris nenaudojamas

Patikrinkite parinkimo tvarką:

  1. Patikrinkite naudodami GET /api/settings/proxy?resolve=your-connection-id
  2. Patikrinkite, ar tarpinio serverio status yra active (o ne inactive)
  3. Įsitikinkite, kad tarpinio serverio priskyrimo aprėptis atitinka jūsų ryšį

Nepavyksta sinchronizuoti 1proxy

Patikrinkite sinchronizavimo būseną:

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

Jei consecutiveFailures >= 5, suveikė grandinės pertraukiklis. Paleiskite serverį iš naujo, kad nustatytumėte būseną iš naujo, arba palaukite rankinio nustatymo iš naujo.


Duomenų bazės schema

Lentelė proxy_registry

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' arba 'oneproxy'
  quality_score INTEGER,                     -- 0100 (tik 1proxy)
  latency_ms INTEGER,                        -- milisekundės (tik 1proxy)
  anonymity TEXT,                            -- skaidrus / anoniminis / elitinis
  google_access INTEGER DEFAULT 0,           -- ar gali pasiekti Google? (1proxy)
  last_validated TEXT,                       -- ISO laiko žyma (1proxy)
  country_code TEXT,                         -- ISO 2 raidžių kodas (1proxy)
  created_at TEXT NOT NULL,
  updated_at TEXT NOT NULL
);

Lentelė proxy_assignments

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,              -- teikėjo ID, ryšio ID arba kombinacijos ID
  created_at TEXT NOT NULL,
  updated_at TEXT NOT NULL,
  UNIQUE(scope, scope_id)
);

Tarpinių serverių būklės tikrinimas (v3.8.16+)

OmniRoute greito tarpinio serverio gedimo aptikimo mechanizmas (src/lib/proxyHealth.ts) greitai patikrindamas TCP ryšį aptinka neveikiančius tarpinius serverius per <2 s, tada išsaugo rezultatą podėlyje, kad būtų išvengta kiekvienos užklausos papildomų sąnaudų.

Kaip tai veikia

Užklausa ──▶ ProxyHealthCache.get(url)
             │
             ├─ Podėlio įrašas rastas ir šviežias?  ──▶ grąžinti podėlyje saugomą būseną
             │
             └─ Podėlio įrašo nėra / jis pasenęs?  ──▶ TCP ryšys su host:port
                                          (skirtasis laikas: FAST_FAIL_TIMEOUT_MS)
                                          ──▶ saugoti podėlyje HEALTH_CACHE_TTL_MS laiką
                                          ──▶ grąžinti rezultatą

Be šio mechanizmo neveikiantis tarpinis serveris blokuotų kiekvieną užklausą visą PROXY_TIMEOUT_MS laiką (numatytoji reikšmė 30 s), kol galiausiai įvyktų klaida.

Reguliuojami aplinkos kintamieji

Kintamasis Numatytoji reikšmė Paskirtis
PROXY_FAST_FAIL_TIMEOUT_MS 2000 TCP ryšio skirtasis laikas kiekvienai būklės patikrai
PROXY_HEALTH_CACHE_TTL_MS 30000 Kiek laiko būklės rezultatas saugomas podėlyje

Rekomenduojamos reikšmės:

Scenarijus Greito gedimo aptikimo skirtasis laikas Podėlio TTL Pagrindimas
Didelio pralaidumo API tinklų sietuvas 1500ms 60000ms Agresyvus greitas gedimo aptikimas, ilgesnis saugojimas podėlyje patikrų skaičiui sumažinti
Geografiškai paskirstyti mazgai 3000ms 15000ms Lėtesniems tinklams reikia daugiau laiko; trumpesnis saugojimas podėlyje greitam perjungimui sutrikimo atveju
Kūrimas / testavimas 1000ms 10000ms Greita iteracija naudojant vietinius tarpinius serverius
Slaptumas / aptikimo vengimas 2500ms 45000ms Vengiama dažno tikrinimo, galinčio suaktyvinti dažnio apribojimus

Tarpinio serverio būklės tikrinimas

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

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

// Priverstinai iš naujo patikrinti konkretų tarpinį serverį
invalidateProxyHealth("http://user:pass@203.0.113.7:8080");

Žyma stale yra true, kai podėlio įrašas galioja ilgiau nei HEALTH_CACHE_TTL_MS, todėl kita užklausa inicijuos naują patikrą.

Numatytosios reikšmės pagal tarpinio serverio tipą

Būklės patikra naudoja tinkamas numatytąsias reikšmes pagal URL schemą:

Schema Numatytasis prievadas
http:// 8080
https:// 443
socks5:// / socks5h:// 1080

URL nurodyti pasirinktiniai prievadai (http://host:9999) visada turi pirmenybę prieš numatytąjį schemos prievadą.


Tarpinių serverių analizė ir stebimumas

OmniRoute seka kiekvieno tarpinio serverio naudojimą, kad operatoriai galėtų diagnozuoti maršruto parinkimo dėsningumus, delsos šuolius ir pasikartojančias triktis.

Kas stebima

Kiekvienai užklausai, siunčiamai per sukonfigūruotą tarpinį serverį, OmniRoute registruoja:

Metrika Aprašymas
proxy_url Visas tarpinio serverio URL (autentifikavimo duomenys paslėpti)
provider Išorinio paslaugų teikėjo ID (openai, anthropic ir kt.)
latency_ms Bendra pirmyn ir atgal trukmė, įskaitant ryšio su tarpiniu serveriu užmezgimą
connect_ms Tik TCP ryšio užmezgimo trukmė
status Išorinio serverio grąžintas HTTP būsenos kodas
error Klaidos klasė, jei užklausa nepavyko
timestamp ISO 8601 UTC

Prieiga prie duomenų

# Naujausi tarpinių serverių įvykiai
curl -H "Authorization: Bearer $OMNIROUTE_KEY" \
  "http://localhost:20128/api/usage/proxy-logs?limit=100"

Tikrasis galinis taškas yra /api/usage/proxy-logs (žr. src/app/api/usage/proxy-logs/route.ts). Šis galinis taškas palaiko:

  • GET /api/usage/proxy-logs — gauti tarpinių serverių žurnalus
  • DELETE /api/usage/proxy-logs — išvalyti visus tarpinių serverių žurnalus

Jei reikia, agreguotą statistiką galima gauti tiesiogiai iš proxy_logs lentelės naudojant SQL. Valdymo skydelio naudotojo sąsajoje gali būti pateikiami agreguoti rodiniai.

Dažniausi scenarijai

Aptikti nestabilų tarpinį serverį (pakaitomis veikia ir neveikia):

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;

Rasti lėtus tarpinius serverius (p95 delsa > 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;

Rotacijos strategijos sprendimų medis

Kai vienai taikymo sričiai priskirti keli tarpiniai serveriai, OmniRoute naudoja rotacijos strategiją, kad parinktų, kurį iš jų naudoti kiekvienai užklausai. Strategija konfigūruojama taikymo srities lygmeniu (visuotiniu, kiekvieno paslaugų teikėjo, kiekvienos paskyros arba kiekvieno derinio).

Galimos strategijos

Strategija Kada naudoti Kompromisas
quality (numatytoji) Produkcinėje aplinkoje su skirtingos kokybės tarpiniais serveriais Pirmenybė teikiama gerai įvertintiems tarpiniams serveriams; prasčiau įvertinti gali būti beveik nenaudojami
random Apkrovai paskirstyti, privatumui užtikrinti Tolygus paskirstymas; nepaisoma kokybės signalų
sequential Derinimui, deterministiniam testavimui Tarpiniai serveriai cikliškai naudojami iš eilės; veikimą lengva suprasti

Sprendimų medis

                    Ar turite savo tarpinių serverių kokybės įverčius?
                    │
        ┌───────────┴───────────┐
        │                       │
       TAIP                    NE
        │                       │
   Ar visų tarpinių            │
   serverių kokybė             │
   yra apytiksliai vienoda?     │
        │                       │
   ┌────┴────┐                  │
   │         │                  │
  TAIP      NE              Naudokite
   │         │              `random`
   │         │              (tolygus paskirstymas
   │         │              laikui bėgant sukaupia
   │         │              kokybės duomenų)
   │         │
   │    Naudokite `quality`
   │    (geriausiai tinka
   │    skirtingai kokybei)
   │
Naudokite `random`
(paskirstykite apkrovą
tolygiai)

Automatinis neveikiančių jūsų pačių tarpinių serverių pašalinimas

„1proxy“ prekyvietės telkinys jau pats automatiškai sumažina neveikiančių tarpinių serverių prioritetą (žr. Tarpinių serverių kokybės įverčiai). Jūsų į registrą įtrauktiems tarpiniams serveriams foninė būklės planavimo priemonė (src/lib/proxyHealth/scheduler.ts) suteikia tokią pačią galimybę „automatiškai pašalinti neveikiantį narį iš grandinės“, nieko neištrinant:

# .env — laikinai išjungti tarpinį serverį po 3 iš eilės nesėkmingų patikrų ir
# automatiškai vėl jį įjungti, kai tik jis vėl pradeda atsakyti į patikras.
PROXY_AUTO_DISABLE=true
PROXY_AUTO_REMOVE_AFTER=3

Kaip tai veikia kelių tarpinių serverių grandinėje:

  1. Planavimo priemonė tikrina kiekvieną užregistruotą tarpinį serverį kas PROXY_HEALTH_INTERVAL_MS (numatytoji reikšmė 10 min.; mažiausia 1 min.).
  2. Po PROXY_AUTO_REMOVE_AFTER iš eilės įvykusių vienareikšmių nesėkmių (tikro ryšio sutrikimo skirtasis laikas arba pačios patikros paskirties vietos 5xx atsakas niekada neįskaičiuojamas, žr. Tarpinių serverių būklės tikrinimas) tarpinio serverio status nustatoma į dead.
  3. dead yra viena iš būsenų, kurias atmeta telkinio / rotacijos parinkimo naudojamas veikiančių būsenų filtras, todėl srities rotacija (ciklinė / atsitiktinė / susietoji / pagal delsą žr. Rotacijos strategijos sprendimų medis) iš karto nustoja priskirti tą tarpinį serverį naujoms užklausoms. Tai neturi įtakos jokiems kitiems telkinio tarpiniams serveriams, o visas telkinys niekada nepastebimai nepersijungia į tiesioginį ryšį žr. 4 lygių tarpinių serverių sistema saugaus blokavimo apsaugą.
  4. Planavimo priemonė ir toliau tuo pačiu intervalu tikrina dead būsenos tarpinius serverius. Kita sėkminga patikra pakeičia status atgal į active, ir tarpinis serveris vėl įtraukiamas į rotaciją jo nereikia iš naujo pridėti rankiniu būdu.

Tai sąmoningai yra pasirenkama ir neardomoji funkcija: pagal numatytąsias nuostatas planavimo priemonė tik skaičiuoja ir registruoja nesėkmes žurnale (žr. politiką C faile decision.ts), o PROXY_AUTO_DISABLE niekada neištrina eilutės tam skirtas atskiras, agresyvesnis PROXY_AUTO_REMOVE parametras. Jei abiejų reikšmė nustatyta į true, pirmenybę turi PROXY_AUTO_REMOVE (tarpinio serverio, kuris netrukus bus ištrintas, nėra prasmės prieš tai laikinai išjungti). Visą kintamųjų sąrašą rasite Aplinkos konfigūracijos žinyne.


📖 Susijusi dokumentacija: