# 🌐 OmniRoute Proxy Guide (ગુજરાતી) 🌐 **Languages:** 🇺🇸 [English](../../../../ops/PROXY_GUIDE.md) · 🇪🇹 [am](../../../am/docs/ops/PROXY_GUIDE.md) · 🇸🇦 [ar](../../../ar/docs/ops/PROXY_GUIDE.md) · 🇦🇿 [az](../../../az/docs/ops/PROXY_GUIDE.md) · 🇧🇬 [bg](../../../bg/docs/ops/PROXY_GUIDE.md) · 🇧🇩 [bn](../../../bn/docs/ops/PROXY_GUIDE.md) · 🇧🇦 [bs](../../../bs/docs/ops/PROXY_GUIDE.md) · 🇨🇿 [cs](../../../cs/docs/ops/PROXY_GUIDE.md) · 🇩🇰 [da](../../../da/docs/ops/PROXY_GUIDE.md) · 🇩🇪 [de](../../../de/docs/ops/PROXY_GUIDE.md) · 🇬🇷 [el](../../../el/docs/ops/PROXY_GUIDE.md) · 🇪🇸 [es](../../../es/docs/ops/PROXY_GUIDE.md) · 🇪🇪 [et](../../../et/docs/ops/PROXY_GUIDE.md) · 🇮🇷 [fa](../../../fa/docs/ops/PROXY_GUIDE.md) · 🇫🇮 [fi](../../../fi/docs/ops/PROXY_GUIDE.md) · 🇫🇷 [fr](../../../fr/docs/ops/PROXY_GUIDE.md) · 🇮🇪 [ga](../../../ga/docs/ops/PROXY_GUIDE.md) · 🇳🇬 [ha](../../../ha/docs/ops/PROXY_GUIDE.md) · 🇮🇱 [he](../../../he/docs/ops/PROXY_GUIDE.md) · 🇮🇳 [hi](../../../hi/docs/ops/PROXY_GUIDE.md) · 🇭🇷 [hr](../../../hr/docs/ops/PROXY_GUIDE.md) · 🇭🇺 [hu](../../../hu/docs/ops/PROXY_GUIDE.md) · 🇦🇲 [hy](../../../hy/docs/ops/PROXY_GUIDE.md) · 🇮🇩 [id](../../../id/docs/ops/PROXY_GUIDE.md) · 🇳🇬 [ig](../../../ig/docs/ops/PROXY_GUIDE.md) · 🇮🇹 [it](../../../it/docs/ops/PROXY_GUIDE.md) · 🇯🇵 [ja](../../../ja/docs/ops/PROXY_GUIDE.md) · 🇬🇪 [ka](../../../ka/docs/ops/PROXY_GUIDE.md) · 🇰🇭 [km](../../../km/docs/ops/PROXY_GUIDE.md) · 🇮🇳 [kn](../../../kn/docs/ops/PROXY_GUIDE.md) · 🇰🇷 [ko](../../../ko/docs/ops/PROXY_GUIDE.md) · 🇱🇹 [lt](../../../lt/docs/ops/PROXY_GUIDE.md) · 🇱🇻 [lv](../../../lv/docs/ops/PROXY_GUIDE.md) · 🇮🇳 [ml](../../../ml/docs/ops/PROXY_GUIDE.md) · 🇮🇳 [mr](../../../mr/docs/ops/PROXY_GUIDE.md) · 🇲🇾 [ms](../../../ms/docs/ops/PROXY_GUIDE.md) · 🇲🇹 [mt](../../../mt/docs/ops/PROXY_GUIDE.md) · 🇲🇲 [my](../../../my/docs/ops/PROXY_GUIDE.md) · 🇳🇵 [ne](../../../ne/docs/ops/PROXY_GUIDE.md) · 🇳🇱 [nl](../../../nl/docs/ops/PROXY_GUIDE.md) · 🇳🇴 [no](../../../no/docs/ops/PROXY_GUIDE.md) · 🇮🇳 [or](../../../or/docs/ops/PROXY_GUIDE.md) · 🇮🇳 [pa](../../../pa/docs/ops/PROXY_GUIDE.md) · 🇵🇭 [phi](../../../phi/docs/ops/PROXY_GUIDE.md) · 🇵🇱 [pl](../../../pl/docs/ops/PROXY_GUIDE.md) · 🇵🇹 [pt](../../../pt/docs/ops/PROXY_GUIDE.md) · 🇧🇷 [pt-BR](../../../pt-BR/docs/ops/PROXY_GUIDE.md) · 🇷🇴 [ro](../../../ro/docs/ops/PROXY_GUIDE.md) · 🇷🇺 [ru](../../../ru/docs/ops/PROXY_GUIDE.md) · 🇱🇰 [si](../../../si/docs/ops/PROXY_GUIDE.md) · 🇸🇰 [sk](../../../sk/docs/ops/PROXY_GUIDE.md) · 🇸🇮 [sl](../../../sl/docs/ops/PROXY_GUIDE.md) · 🇷🇸 [sr](../../../sr/docs/ops/PROXY_GUIDE.md) · 🇸🇪 [sv](../../../sv/docs/ops/PROXY_GUIDE.md) · 🇰🇪 [sw](../../../sw/docs/ops/PROXY_GUIDE.md) · 🇮🇳 [ta](../../../ta/docs/ops/PROXY_GUIDE.md) · 🇮🇳 [te](../../../te/docs/ops/PROXY_GUIDE.md) · 🇹🇭 [th](../../../th/docs/ops/PROXY_GUIDE.md) · 🇹🇷 [tr](../../../tr/docs/ops/PROXY_GUIDE.md) · 🇺🇦 [uk-UA](../../../uk-UA/docs/ops/PROXY_GUIDE.md) · 🇵🇰 [ur](../../../ur/docs/ops/PROXY_GUIDE.md) · 🇺🇿 [uz](../../../uz/docs/ops/PROXY_GUIDE.md) · 🇻🇳 [vi](../../../vi/docs/ops/PROXY_GUIDE.md) · 🇳🇬 [yo](../../../yo/docs/ops/PROXY_GUIDE.md) · 🇨🇳 [zh-CN](../../../zh-CN/docs/ops/PROXY_GUIDE.md) · 🇹🇼 [zh-TW](../../../zh-TW/docs/ops/PROXY_GUIDE.md) --- > **ભૌગોલિક અવરોધોને બાયપાસ કરો, તમારી ઓળખ સુરક્ષિત રાખો અને AI ટ્રાફિકને કોઈપણ પ્રોક્સી મારફતે રૂટ કરો — રૂપરેખાંકનની જટિલતા વિના.** OmniRouteમાં સંપૂર્ણ સુવિધાયુક્ત પ્રોક્સી વ્યવસ્થાપન સિસ્ટમ સામેલ છે, જે તમને અપસ્ટ્રીમ AI પ્રદાતાનો ટ્રાફિક HTTP, HTTPS અથવા SOCKS5 પ્રોક્સી મારફતે રૂટ કરવાની સુવિધા આપે છે. તમે અવરોધિત પ્રદેશમાં હો, IP રોટેશનની જરૂર હોય અથવા સ્ટેલ્થ ફિંગરપ્રિન્ટિંગ ઇચ્છતા હો — આ માર્ગદર્શિકા બધું આવરી લે છે. --- ## વિષયસૂચિ - [પ્રોક્સી શા માટે વાપરવી?](#why-use-proxies) - [આર્કિટેક્ચરનું અવલોકન](#architecture-overview) - [4-સ્તરીય પ્રોક્સી સિસ્ટમ](#4-level-proxy-system) - [પ્રોક્સી રજિસ્ટ્રી (CRUD)](#proxy-registry-crud) - [1proxy મફત માર્કેટપ્લેસ](#1proxy-free-proxy-marketplace) - [પ્રોક્સી રોટેશન](#proxy-rotation) - [શોધ-પ્રતિરોધ અને સ્ટેલ્થ](#anti-detection--stealth) - [અપસ્ટ્રીમ પ્રોક્સી મોડ્સ](#upstream-proxy-modes) - [ડૅશબોર્ડ UI](#dashboard-ui) - [API સંદર્ભ](#api-reference) - [એન્વાયર્નમેન્ટ વેરિએબલ્સ](#environment-variables) - [સમસ્યાનિવારણ](#troubleshooting) --- ## પ્રોક્સી શા માટે વાપરવી? ઘણા AI પ્રદાતાઓ ભૌગોલિક પ્રદેશના આધારે ઍક્સેસને પ્રતિબંધિત કરે છે. **રશિયા, ચીન, ઈરાન, ક્યુબા, તુર્કી** અને અન્ય દેશોના ડેવલપર્સને નીચે જેવી ભૂલોનો સામનો કરવો પડે છે: ``` unsupported_country_region_territory ``` અવરોધિત પ્રદેશોની બહાર પણ પ્રોક્સી નીચેના ઉપયોગો માટે લાભદાયી છે: | ઉપયોગનો પ્રકાર | વર્ણન | | ------------------ | -------------------------------------------------------------- | | **ભૌગોલિક બાયપાસ** | અવરોધિત દેશોમાંથી OpenAI, Anthropic, Codex, Copilot ઍક્સેસ કરો | | **IP રોટેશન** | રેટ લિમિટિંગ ટાળવા માટે વિનંતીઓને અનેક IPમાં વિતરિત કરો | | **ગોપનીયતા** | અપસ્ટ્રીમ પ્રદાતાઓથી તમારું વાસ્તવિક IP છુપાવો | | **અનુપાલન** | ટ્રાફિકને ચોક્કસ ન્યાયક્ષેત્રો મારફતે રૂટ કરો | | **પરીક્ષણ** | વિવિધ પ્રદેશોમાંથી આવતી વિનંતીઓનું અનુકરણ કરો | --- ## આર્કિટેક્ચરનું અવલોકન ``` ┌───────────────────────────────────────────────────────────────┐ │ OmniRoute સર્વર │ │ │ │ ┌─────────────┐ ┌──────────────┐ ┌──────────────────┐ │ │ │ પ્રોક્સી │ │ પ્રોક્સી │ │ પ્રોક્સી │ │ │ │ રજિસ્ટ્રી │───▶│ ડિસ્પેચર │───▶│ Fetch (undici) │ │ │ │ (SQLite) │ │ (કૅશ કરેલ) │ │ │ │ │ └─────────────┘ └──────────────┘ └────────┬─────────┘ │ │ ▲ │ │ │ │ ▼ │ │ ┌──────┴──────┐ ┌──────────────────┐ │ │ │ 1proxy સિંક │ │ અપસ્ટ્રીમ │ │ │ │ (મફત પૂલ) │ │ પ્રદાતા API │ │ │ └─────────────┘ └──────────────────┘ │ └───────────────────────────────────────────────────────────────┘ ``` ### મુખ્ય ઘટકો | ઘટક | ફાઇલ | ભૂમિકા | | ---------------------- | -------------------------------------------- | --------------------------------------------------------- | | **પ્રોક્સી રજિસ્ટ્રી** | `src/lib/db/proxies.ts` | પ્રોક્સી એન્ટ્રીઓ અને સ્કોપ સોંપણીઓ માટે CRUD | | **પ્રોક્સી ડિસ્પેચર** | `open-sse/utils/proxyDispatcher.ts` | કૅશિંગ સાથે `undici` ProxyAgent/SOCKS ડિસ્પેચર્સ બનાવે છે | | **પ્રોક્સી Fetch** | `open-sse/utils/proxyFetch.ts` | પ્રોક્સી ડિસ્પેચર ઇન્જેક્શન સાથે `fetch()`ને રૅપ કરે છે | | **સેટિંગ્સ રૂટ** | `src/app/api/settings/proxy/route.ts` | લેગસી પ્રોક્સી રૂપરેખાંકન API (GET/PUT/DELETE) | | **વ્યવસ્થાપન રૂટ** | `src/app/api/v1/management/proxies/route.ts` | રજિસ્ટ્રી CRUD API (GET/POST/PATCH/DELETE) | | **1proxy DB** | `src/lib/db/oneproxy.ts` | મફત પ્રોક્સી માર્કેટપ્લેસ માટે સ્થાયી સંગ્રહ | --- ## 4-સ્તરીય પ્રોક્સી સિસ્ટમ OmniRoute **ચાર સ્વતંત્ર કાર્યક્ષેત્રો** પર પ્રોક્સી કૉન્ફિગરેશનને સપોર્ટ કરે છે, જે પ્રાથમિકતાના ક્રમમાં નિર્ધારિત થાય છે: ``` પ્રાથમિકતા નિર્ધારણનો ક્રમ (સૌથી વધુ → સૌથી ઓછો): 1. 🔵 એકાઉન્ટ/કનેક્શન પ્રોક્સી → દરેક API કી / OAuth કનેક્શન માટે 2. 🟡 પ્રોવાઇડર પ્રોક્સી → દરેક પ્રોવાઇડર માટે (દા.ત., સમગ્ર OpenAI ટ્રાફિક) 3. 🟠 કોમ્બો પ્રોક્સી → દરેક કોમ્બો/રાઉટિંગ કૉન્ફિગરેશન માટે 4. 🟢 ગ્લોબલ પ્રોક્સી → સમગ્ર ટ્રાફિક, બધા પ્રોવાઇડર્સ ``` ### નિર્ધારણ કેવી રીતે કાર્ય કરે છે જ્યારે OmniRoute કોઈ અપસ્ટ્રીમ પ્રોવાઇડરને વિનંતી મોકલે છે, ત્યારે તે `resolveProxyForConnectionFromRegistry()`ને કૉલ કરે છે, જે દરેક સ્તરને ક્રમ અનુસાર તપાસે છે: 1. **એકાઉન્ટ-સ્તર** — શું આ ચોક્કસ કનેક્શન IDને કોઈ પ્રોક્સી સોંપવામાં આવી છે? 2. **પ્રોવાઇડર-સ્તર** — શું આ પ્રોવાઇડર (દા.ત., `openai`)ને કોઈ પ્રોક્સી સોંપવામાં આવી છે? 3. **ગ્લોબલ-સ્તર** — શું કોઈ ગ્લોબલ પ્રોક્સી કૉન્ફિગર કરેલી છે? 4. **કોઈ પ્રોક્સી નહીં** — પ્રોવાઇડર સાથે સીધું કનેક્શન. પ્રથમ મેળને પ્રાથમિકતા મળે છે. આનો અર્થ એ છે કે તમે ગ્લોબલ પ્રોક્સીને ફૉલબૅક તરીકે સેટ કરી શકો છો, પરંતુ ચોક્કસ પ્રોવાઇડર્સ અથવા કનેક્શન્સ માટે તેને ઓવરરાઇડ કરી શકો છો. ### શું પ્રોક્સી મારફતે જાય છે | ટ્રાફિકનો પ્રકાર | પ્રોક્સી મારફતે? | નોંધો | | -------------------- | ---------------- | -------------------------------------------------------- | | ચૅટ કમ્પ્લીશન્સ | ✅ | બધી `/v1/chat/completions` વિનંતીઓ | | એમ્બેડિંગ્સ | ✅ | `/v1/embeddings` | | ઇમેજ જનરેશન | ✅ | `/v1/images/generations` | | ઑડિયો (TTS/STT) | ✅ | `/v1/audio/*` | | OAuth ટોકન એક્સચેન્જ | ✅ | `unsupported_country_region_territory`નું નિરાકરણ કરે છે | | કનેક્શન પરીક્ષણો | ✅ | "કનેક્શનનું પરીક્ષણ કરો" બટન પ્રોક્સીનો ઉપયોગ કરે છે | | ટોકન રિફ્રેશ | ✅ | બૅકગ્રાઉન્ડ OAuth નવીનીકરણ | | મૉડલ સિંક | ✅ | મૉડલ સૂચિ અને શોધ | --- ## પ્રોક્સી રજિસ્ટ્રી (CRUD) પ્રોક્સી રજિસ્ટ્રી એક SQLite ટેબલ (`proxy_registry`) છે, જે તમારી બધી પ્રોક્સીઓને સંગ્રહિત કરે છે. દરેક પ્રોક્સીમાં આ હોય છે: | ફીલ્ડ | પ્રકાર | વર્ણન | | ---------- | -------- | ---------------------------------------------------------- | | `id` | UUID | અનન્ય ઓળખકર્તા | | `name` | સ્ટ્રિંગ | માનવ-વાંચનીય લેબલ | | `type` | સ્ટ્રિંગ | પ્રોટોકૉલ: `http`, `https`, `socks5` | | `host` | સ્ટ્રિંગ | પ્રોક્સી હોસ્ટનામ અથવા IP | | `port` | પૂર્ણાંક | પોર્ટ નંબર | | `username` | સ્ટ્રિંગ | પ્રમાણીકરણ વપરાશકર્તાનામ (સંગ્રહિત સ્થિતિમાં એન્ક્રિપ્ટેડ) | | `password` | સ્ટ્રિંગ | પ્રમાણીકરણ પાસવર્ડ (સંગ્રહિત સ્થિતિમાં એન્ક્રિપ્ટેડ) | | `region` | સ્ટ્રિંગ | ભૌગોલિક પ્રદેશનું લેબલ | | `notes` | સ્ટ્રિંગ | મુક્ત-લખાણ નોંધો | | `status` | સ્ટ્રિંગ | `active` અથવા `inactive` | | `source` | સ્ટ્રિંગ | `manual` અથવા `oneproxy` | ### પ્રોક્સી બનાવવી **ડૅશબોર્ડ મારફતે:** 1. **Settings → Proxy** પર જાઓ 2. **Add Proxy** પર ક્લિક કરો 3. પ્રકાર, હોસ્ટ, પોર્ટ અને વૈકલ્પિક પ્રમાણીકરણ ઓળખપત્રો ભરો 4. સાચવો **API મારફતે:** ```bash 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" }' ``` ### પ્રોક્સી અપડેટ કરવી ```bash 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 }' ``` > **નોંધ:** જ્યાં સુધી તમે સ્પષ્ટપણે બિન-ખાલી અવેજીઓ મોકલતા નથી ત્યાં સુધી ઓળખપત્રો જાળવી રાખવામાં આવે છે. `username`/`password` માટે ખાલી સ્ટ્રિંગ્સ મોકલવાથી સંગ્રહિત મૂલ્યો જળવાઈ રહેશે. ### પ્રોક્સી કાઢી નાખવી ```bash # જો પ્રોક્સી કોઈપણ કાર્યક્ષેત્રને સોંપેલી હોય તો નિષ્ફળ જાય છે curl -X DELETE "http://localhost:20128/api/v1/management/proxies?id=proxy-uuid" # ફરજિયાત રીતે કાઢી નાખો (સોંપણીઓ પણ દૂર કરે છે) curl -X DELETE "http://localhost:20128/api/v1/management/proxies?id=proxy-uuid&force=1" ``` ### પ્રોક્સીઓની સૂચિ મેળવવી ```bash curl "http://localhost:20128/api/v1/management/proxies?limit=50&offset=0" ``` ### કાર્યક્ષેત્રોને પ્રોક્સીઓ સોંપવી ```bash # ગ્લોબલ કાર્યક્ષેત્રને સોંપો 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}}' # ચોક્કસ પ્રોવાઇડરને સોંપો 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}}' # ચોક્કસ કનેક્શન/કીને સોંપો 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}}' ``` ### અસરકારક પ્રોક્સી નિર્ધારિત કરવી આપેલા કનેક્શન માટે કઈ પ્રોક્સીનો ઉપયોગ થશે તે તપાસો: ```bash curl "http://localhost:20128/api/settings/proxy?resolve=connection-uuid" ``` તેના સ્તર (`account`, `provider`, અથવા `global`) અને સ્રોત સાથે નિર્ધારિત પ્રોક્સી પરત કરે છે. ### બલ્ક સોંપણી એક પ્રોક્સીને એકસાથે અનેક પ્રોવાઇડર્સ અથવા કનેક્શન્સને સોંપો: ```bash 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" }' ``` ### આયાત/નિકાસ પ્રોક્સીઓનો સમાવેશ **બૅકઅપ/રિસ્ટોર** સિસ્ટમમાં થાય છે. જ્યારે તમે તમારું OmniRoute કૉન્ફિગરેશન નિકાસ કરો છો: 1. **Dashboard → Settings → Backup** પર જાઓ 2. **Export** પર ક્લિક કરો — પ્રોક્સી રજિસ્ટ્રી અને સોંપણીઓનો સમાવેશ થાય છે 3. પુનઃસ્થાપિત કરવા માટે, **Import** પર ક્લિક કરો અને બૅકઅપ ફાઇલ અપલોડ કરો પ્રોક્સી રજિસ્ટ્રી **host+port દ્વારા upsert**ને પણ સપોર્ટ કરે છે — જો તમે પહેલેથી અસ્તિત્વમાં રહેલી પ્રોક્સી (સમાન હોસ્ટ અને પોર્ટ) આયાત કરો છો, તો ડુપ્લિકેટ બનાવવાને બદલે તે અપડેટ થાય છે. ### લેગસી માઇગ્રેશન જો તમે જૂના સંસ્કરણમાં (રજિસ્ટ્રી પહેલાં) પ્રોક્સીઓ ગોઠવી હોય, તો OmniRoute તેમને આપમેળે સ્થાનાંતરિત કરે છે: ``` Legacy key_value store → proxy_registry + proxy_assignments ``` અપગ્રેડ પછી પ્રથમ વખત સ્ટાર્ટઅપ થાય ત્યારે આ પ્રક્રિયા એકવાર થાય છે. તેને ફરી ચલાવવા માટે `migrateLegacyProxyConfigToRegistry({ force: true })` નો ઉપયોગ કરો. --- ## 1proxy મફત પ્રોક્સી માર્કેટપ્લેસ > 🆕 **આ યોગદાન [@oyi77](https://github.com/oyi77) દ્વારા આપવામાં આવ્યું છે** — PR [#1847](https://github.com/diegosouzapw/OmniRoute/pull/1847) (સમસ્યા [#1788](https://github.com/diegosouzapw/OmniRoute/issues/1788)) OmniRoute વિશ્વભરમાંથી **સેંકડો મફત, માન્ય કરાયેલા પ્રોક્સીઓ**ની ઍક્સેસ આપવા માટે **[1proxy](https://1proxy-api.aitradepulse.com)** સમુદાય પ્લેટફોર્મ સાથે એકીકૃત થાય છે. જે વપરાશકર્તાઓ પાસે પોતાનું પ્રોક્સી ઇન્ફ્રાસ્ટ્રક્ચર નથી તેમના માટે આ ઉત્તમ છે. ### તે કેવી રીતે કાર્ય કરે છે ``` ┌─────────────┐ સિંક ┌─────────────────┐ રોટેટ ┌──────────┐ │ 1proxy API │ ────────────▶ │ proxy_registry │ ────────────▶ │ પ્રદાતા │ │ (બાહ્ય) │ 500 સુધીના │ source=oneproxy │ ગુણવત્તા મુજબ │ API │ └─────────────┘ પ્રોક્સીઓ └─────────────────┘ └──────────┘ ``` 1. **સિંક** — OmniRoute 1proxy API પરથી માન્ય કરાયેલા પ્રોક્સીઓ મેળવે છે 2. **સંગ્રહ** — પ્રોક્સીઓ એ જ `proxy_registry` કોષ્ટકમાં `source = 'oneproxy'` સાથે સાચવવામાં આવે છે 3. **ફિલ્ટર** — પ્રોટોકોલ, દેશ અને ગુણવત્તા સ્કોર પ્રમાણે ફિલ્ટર કરો 4. **રોટેટ** — ગુણવત્તા, રેન્ડમ અથવા ક્રમિક વ્યૂહરચનાઓનો ઉપયોગ કરીને શ્રેષ્ઠ પ્રોક્સી પસંદ કરો 5. **સ્વચાલિત ઘટાડો** — નિષ્ફળ પ્રોક્સીઓનો ગુણવત્તા સ્કોર ઘટાડવામાં આવે છે; થ્રેશોલ્ડથી નીચે જાય ત્યારે → નિષ્ક્રિય તરીકે ચિહ્નિત થાય છે ### પ્રોક્સીઓ સિંક કરવી **ડેશબોર્ડ દ્વારા:** 1. **સેટિંગ્સ → 1proxy** ટૅબ પર જાઓ 2. **"હમણાં સિંક કરો"** પર ક્લિક કરો 3. આંકડા જુઓ: કુલ પ્રોક્સીઓ, સક્રિય સંખ્યા, સરેરાશ ગુણવત્તા અને દેશવાર વિભાજન **API દ્વારા:** ```bash # સિંક ટ્રિગર કરો curl -X POST http://localhost:20128/api/settings/oneproxy \ -H "Content-Type: application/json" \ -d '{}' # પ્રતિસાદ: # { "success": true, "added": 127, "updated": 45, "failed": 2, "total": 172 } ``` ### પ્રોક્સીઓ ફિલ્ટર કરવી ```bash # પ્રોટોકોલ પ્રમાણે ફિલ્ટર કરો curl "http://localhost:20128/api/settings/oneproxy?protocol=socks5" # દેશ પ્રમાણે ફિલ્ટર કરો curl "http://localhost:20128/api/settings/oneproxy?countryCode=US" # ન્યૂનતમ ગુણવત્તા સ્કોર પ્રમાણે ફિલ્ટર કરો curl "http://localhost:20128/api/settings/oneproxy?minQuality=80" # ફિલ્ટરોને સંયોજિત કરો curl "http://localhost:20128/api/settings/oneproxy?protocol=http&countryCode=DE&minQuality=70" ``` ### પ્રોક્સી ગુણવત્તા સ્કોર દરેક 1proxy પ્રોક્સી સાથે મેટાડેટા આવે છે: | ફીલ્ડ | વર્ણન | | --------------- | ----------------------------------------------- | | `qualityScore` | 1proxy માન્યકરણથી મળેલું 0-100 રેટિંગ | | `latencyMs` | માપવામાં આવેલી નેટવર્ક લેટન્સી | | `anonymity` | `transparent`, `anonymous` અથવા `elite` | | `googleAccess` | પ્રોક્સી Google સેવાઓ ઍક્સેસ કરી શકે છે કે નહીં | | `countryCode` | બે અક્ષરનો ISO દેશ કોડ | | `lastValidated` | છેલ્લે કરાયેલા માન્યકરણનો ટાઇમસ્ટૅમ્પ | ગુણવત્તા સ્કોર ગતિશીલ રીતે સમાયોજિત થાય છે: - **નિષ્ફળ વિનંતીઓ** સ્કોરમાં 10 પોઇન્ટનો ઘટાડો કરે છે - **સ્કોર ઘટીને ≤10 થાય** → પ્રોક્સીને `inactive` તરીકે ચિહ્નિત કરવામાં આવે છે - નિષ્ક્રિય પ્રોક્સીઓને રોટેશનમાંથી બાકાત રાખવામાં આવે છે ### રોટેશન વ્યૂહરચનાઓ ```bash # ગુણવત્તા પ્રમાણે રોટેટ કરો (શ્રેષ્ઠ પ્રોક્સી પ્રથમ) — ડિફૉલ્ટ curl -X POST http://localhost:20128/api/settings/oneproxy/rotate \ -H "Content-Type: application/json" \ -d '{"strategy": "quality"}' # રેન્ડમ રોટેશન curl -X POST http://localhost:20128/api/settings/oneproxy/rotate \ -d '{"strategy": "random"}' # ક્રમિક (સૌથી ઓછા તાજેતરમાં માન્ય કરાયેલું પ્રથમ) curl -X POST http://localhost:20128/api/settings/oneproxy/rotate \ -d '{"strategy": "sequential"}' ``` ### સર્કિટ બ્રેકર 1proxy સિંકમાં બિલ્ટ-ઇન સર્કિટ બ્રેકર છે: - **સતત 5 સિંક નિષ્ફળતાઓ** પછી, આગળના સિંક પ્રયાસોને અવરોધિત કરવામાં આવે છે - આ દ્વારા રીસેટ કરો: `resetOneproxyCircuitBreaker()` અથવા સર્વર પુનઃપ્રારંભ કરો - સિંકની સ્થિતિ `GET /api/settings/oneproxy?action=status` પર ઉપલબ્ધ છે ### 1proxy પ્રોક્સીઓ સાફ કરવી ```bash # એક 1proxy પ્રોક્સી કાઢી નાખો curl -X DELETE "http://localhost:20128/api/settings/oneproxy?id=proxy-uuid" # બધી 1proxy પ્રોક્સીઓ સાફ કરો (મેન્યુઅલ પ્રોક્સીઓને કોઈ અસર થશે નહીં) curl -X DELETE "http://localhost:20128/api/settings/oneproxy?clearAll=1" ``` --- ## એન્ટી-ડિટેક્શન અને સ્ટેલ્થ OmniRoute માત્ર પ્રોક્સી મારફતે ટ્રાફિકને રૂટ કરતું નથી — તે ટ્રાફિકને અધિકૃત પણ દર્શાવે છે: ### TLS ફિંગરપ્રિન્ટ સ્પૂફિંગ બ્રાઉઝર જેવા TLS ફિંગરપ્રિન્ટ જનરેટ કરવા માટે `wreq-js` નો ઉપયોગ કરે છે, જે બિન-બ્રાઉઝર TLS હેન્ડશેક્સને ફ્લેગ કરતી બોટ ડિટેક્શન સિસ્ટમ્સને બાયપાસ કરે છે. ### CLI ફિંગરપ્રિન્ટ મેચિંગ **CLI ફિંગરપ્રિન્ટ ટૉગલ** (`સેટિંગ્સ → સુરક્ષા`) મૂળ CLI બાઇનરીઝ (Claude Code, Codex વગેરે)ના ચોક્કસ સિગ્નેચર સાથે મેળ બેસાડવા માટે HTTP હેડર્સ અને JSON બૉડી ફીલ્ડ્સને ફરીથી ગોઠવે છે. આ પ્રોક્સીની **ઉપરાંત** કાર્ય કરે છે: ``` તમારું IP (બ્લૉક કરેલું) → પ્રોક્સી IP (US) → પ્રદાતાનું API + TLS સ્પૂફ + CLI ફિંગરપ્રિન્ટ ``` તમને એકસાથે **IP માસ્કિંગ** અને **વિનંતીની અધિકૃતતા** બંને મળે છે. ### પ્રોક્સી IP જાળવણી ડૅશબોર્ડમાં રંગ-કોડેડ બૅજ દર્શાવે છે કે કયું પ્રોક્સી સ્તર સક્રિય છે: | બૅજ | સ્તર | અર્થ | | --- | ------- | --------------------------------------------- | | 🟢 | વૈશ્વિક | તમામ ટ્રાફિક આ પ્રોક્સી મારફતે જાય છે | | 🟡 | પ્રદાતા | માત્ર આ પ્રદાતાનો ટ્રાફિક પ્રોક્સી થાય છે | | 🔵 | કનેક્શન | આ ચોક્કસ કી/એકાઉન્ટ આ પ્રોક્સીનો ઉપયોગ કરે છે | ચકાસણી માટે બૅજ રિઝોલ્વ કરેલું પ્રોક્સી IP પણ દર્શાવે છે. --- ## અપસ્ટ્રીમ પ્રોક્સી મોડ્સ CLIProxyAPI પેટર્નનો ઉપયોગ કરતા પ્રદાતાઓ માટે, OmniRoute ત્રણ અપસ્ટ્રીમ પ્રોક્સી મોડ્સને સપોર્ટ કરે છે: | મોડ | વર્ણન | | ------------- | ------------------------------------------------------- | | `native` | OmniRoute સીધું પ્રોક્સી રૂટિંગ સંભાળે છે (ડિફૉલ્ટ) | | `cliproxyapi` | બાહ્ય CLIProxyAPI ઇન્સ્ટન્સને કાર્ય સોંપે છે | | `fallback` | પહેલાં નેટિવનો પ્રયાસ કરે છે, પછી CLIProxyAPI પર જાય છે | દરેક પ્રદાતા માટે કન્ફિગર કરો: ```bash curl -X PUT "http://localhost:20128/api/upstream-proxy/openai" \ -H "Content-Type: application/json" \ -d '{"mode": "native", "enabled": true}' ``` --- ## ડૅશબોર્ડ UI ### સેટિંગ્સ → પ્રોક્સી ટૅબ - **વૈશ્વિક પ્રોક્સી** કન્ફિગરેશન (સમગ્ર ટ્રાફિક માટે એક વાર સેટ કરો) - **દરેક પ્રદાતા માટે પ્રોક્સી** ઓવરરાઇડ્સ - **દરેક કનેક્શન માટે પ્રોક્સી** અસાઇનમેન્ટ્સ - કન્ફિગર કરેલા પ્રોક્સી મારફતે **કનેક્શન ટેસ્ટ** - સક્રિય પ્રોક્સી સ્તર દર્શાવતા **રંગ-કોડેડ બૅજ** ### સેટિંગ્સ → 1proxy ટૅબ - મફત પ્રોક્સીઝ મેળવવા માટે **હમણાં સિંક કરો** બટન - **આંકડાકીય કાર્ડ્સ**: કુલ, સક્રિય, સરેરાશ ગુણવત્તા, છેલ્લું સિંક - **ફિલ્ટર્સ**: પ્રોટોકૉલ, દેશ કોડ, ન્યૂનતમ ગુણવત્તા - હોસ્ટ, પ્રોટોકૉલ, દેશ, ગુણવત્તા સ્કોર, લેટન્સી, અનામિતા અને Google ઍક્સેસ સાથેનું **પ્રોક્સી ટેબલ** - સફળતા/નિષ્ફળતાનું ટ્રૅકિંગ અને સળંગ નિષ્ફળતાઓની સંખ્યા સાથેનું **સિંક સ્થિતિ** પૅનલ - તમામ 1proxy એન્ટ્રીઓ દૂર કરવા માટે **બધું સાફ કરો** --- ## API સંદર્ભ ### પ્રોક્સી સેટિંગ્સ API | મેથડ | એન્ડપૉઇન્ટ | વર્ણન | | -------- | ---------------------------------------------- | ----------------------------- | | `GET` | `/api/settings/proxy` | સંપૂર્ણ પ્રોક્સી કન્ફિગ મેળવો | | `GET` | `/api/settings/proxy?level=global` | વૈશ્વિક પ્રોક્સી મેળવો | | `GET` | `/api/settings/proxy?level=provider&id=openai` | પ્રદાતાની પ્રોક્સી મેળવો | | `GET` | `/api/settings/proxy?resolve=connectionId` | અસરકારક પ્રોક્સી રિઝોલ્વ કરો | | `PUT` | `/api/settings/proxy` | પ્રોક્સી કન્ફિગ અપડેટ કરો | | `DELETE` | `/api/settings/proxy?level=provider&id=openai` | સ્તર પરની પ્રોક્સી દૂર કરો | ### પ્રોક્સી રજિસ્ટ્રી API | મેથડ | એન્ડપૉઇન્ટ | વર્ણન | | -------- | ------------------------------------------------- | ---------------------------- | | `GET` | `/api/v1/management/proxies` | બધી પ્રોક્સીઝની સૂચિ મેળવો | | `GET` | `/api/v1/management/proxies?id=uuid` | ID દ્વારા પ્રોક્સી મેળવો | | `GET` | `/api/v1/management/proxies?id=uuid&where_used=1` | પ્રોક્સી અસાઇનમેન્ટ્સ મેળવો | | `POST` | `/api/v1/management/proxies` | પ્રોક્સી બનાવો | | `PATCH` | `/api/v1/management/proxies` | પ્રોક્સી અપડેટ કરો | | `DELETE` | `/api/v1/management/proxies?id=uuid` | પ્રોક્સી કાઢી નાખો | | `DELETE` | `/api/v1/management/proxies?id=uuid&force=1` | બળપૂર્વક કાઢી નાખો | | `POST` | `/api/v1/management/proxies/bulk-assign` | જથ્થાબંધ અસાઇન કરો | | `GET` | `/api/v1/management/proxies/assignments` | અસાઇનમેન્ટ્સની સૂચિ મેળવો | | `GET` | `/api/v1/management/proxies/health` | પ્રોક્સી હેલ્થના આંકડા મેળવો | ### ટનલ્સ API પ્રોક્સી મારફતે આઉટબાઉન્ડ રૂટ કરવાને બદલે તમારા OmniRoute ઇન્સ્ટન્સને જાહેર ઇન્ટરનેટ પર ઉપલબ્ધ કરાવવા (Cloudflare/ngrok/Tailscale) માટે, [TUNNELS_GUIDE.md](./TUNNELS_GUIDE.md) જુઓ. ટનલ REST API `/api/tunnels/{cloudflared,ngrok,tailscale}/*` હેઠળ ઉપલબ્ધ છે અને ઉપર દસ્તાવેજિત આઉટબાઉન્ડ પ્રોક્સી ચેઇનથી સ્વતંત્ર છે. ### 1proxy API | મેથડ | એન્ડપૉઇન્ટ | વર્ણન | | -------- | -------------------------------------- | ----------------------------- | | `GET` | `/api/settings/oneproxy` | 1proxy પ્રોક્સીઝની સૂચિ મેળવો | | `GET` | `/api/settings/oneproxy?action=stats` | આંકડા + સિંક સ્થિતિ મેળવો | | `GET` | `/api/settings/oneproxy?action=status` | માત્ર સિંક સ્થિતિ મેળવો | | `POST` | `/api/settings/oneproxy` | સિંક ટ્રિગર કરો | | `POST` | `/api/settings/oneproxy/rotate` | આગલી પ્રોક્સી પર રોટેટ કરો | | `DELETE` | `/api/settings/oneproxy?id=uuid` | એક કાઢી નાખો | | `DELETE` | `/api/settings/oneproxy?clearAll=1` | બધું સાફ કરો | ### અપસ્ટ્રીમ પ્રોક્સી API | મેથડ | એન્ડપૉઇન્ટ | વર્ણન | | -------- | --------------------------------- | --------------------------------- | | `GET` | `/api/upstream-proxy/:providerId` | અપસ્ટ્રીમ પ્રોક્સી કન્ફિગ મેળવો | | `PUT` | `/api/upstream-proxy/:providerId` | અપસ્ટ્રીમ પ્રોક્સી મોડ સેટ કરો | | `DELETE` | `/api/upstream-proxy/:providerId` | અપસ્ટ્રીમ પ્રોક્સી કન્ફિગ દૂર કરો | --- ## પર્યાવરણ વેરિયેબલ્સ | વેરિયેબલ | ડિફૉલ્ટ | વર્ણન | | --------------------- | ------- | -------------------------------------------------------------------- | | `ENABLE_SOCKS5_PROXY` | `true` | SOCKS5 પ્રૉક્સી સપોર્ટ સક્રિય કરો (`.env.example`માં ડિફૉલ્ટ `true`) | --- ## સમસ્યાનિવારણ ### "SOCKS5 પ્રૉક્સી અક્ષમ છે" તમારી `.env` ફાઇલમાં `ENABLE_SOCKS5_PROXY=true` સેટ કરો અને પુનઃપ્રારંભ કરો. ### પ્રૉક્સી મારફતે "socket hang up" ભૂલો નિષ્ક્રિય કનેક્શનોને તોડી નાખતા સસ્તા પ્રૉક્સીઓ સાથે આ સામાન્ય છે. OmniRoute પહેલેથી જ આને નીચે મુજબ સંભાળે છે: - પ્રૉક્સી કનેક્શનો પર keep-alive અક્ષમ કરીને (`keepAliveTimeout: 1`) - pipelining અક્ષમ કરીને (`pipelining: 0`) - વારંવાર થતા handshakes ટાળવા માટે dispatchersને કૅશ કરીને જો સમસ્યા ચાલુ રહે, તો કોઈ બીજો પ્રૉક્સી અજમાવો અથવા 1proxy rotation સુવિધાનો ઉપયોગ કરો. ### OAuth દરમિયાન "unsupported_country_region_territory" OAuth પ્રવાહ શરૂ કરતાં **પહેલાં** પ્રૉક્સી કન્ફિગર થયેલો છે તેની ખાતરી કરો. OmniRoute OAuth token exchangeને કન્ફિગર કરેલા પ્રૉક્સી મારફતે રૂટ કરે છે. પહેલાં વૈશ્વિક અથવા provider-સ્તરનો પ્રૉક્સી સેટ કરો, પછી કનેક્ટ કરો. ### પ્રૉક્સીનો ઉપયોગ થતો નથી resolution ક્રમ તપાસો: 1. `GET /api/settings/proxy?resolve=your-connection-id` વડે ચકાસો 2. પ્રૉક્સીનું `status`, `active` છે કે નહીં તે તપાસો (`inactive` નહીં) 3. ખાતરી કરો કે પ્રૉક્સી assignment scope તમારા કનેક્શન સાથે મેળ ખાય છે ### 1proxy sync નિષ્ફળ થઈ રહ્યું છે sync status તપાસો: ```bash curl "http://localhost:20128/api/settings/oneproxy?action=status" ``` જો `consecutiveFailures >= 5` હોય, તો circuit breaker ટ્રિપ થઈ ગયું છે. રીસેટ કરવા માટે સર્વર પુનઃપ્રારંભ કરો અથવા મેન્યુઅલ રીસેટની રાહ જુઓ. --- ## ડેટાબેઝ સ્કીમા ### `proxy_registry` ટેબલ ```sql 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' અથવા 'oneproxy' quality_score INTEGER, -- 0-100 (ફક્ત 1proxy) latency_ms INTEGER, -- મિલિસેકન્ડ (ફક્ત 1proxy) anonymity TEXT, -- transparent/anonymous/elite google_access INTEGER DEFAULT 0, -- Google ઍક્સેસ કરી શકે છે? (1proxy) last_validated TEXT, -- ISO timestamp (1proxy) country_code TEXT, -- ISO 2-letter code (1proxy) created_at TEXT NOT NULL, updated_at TEXT NOT NULL ); ``` ### `proxy_assignments` ટેબલ ```sql 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, -- provider ID, connection ID અથવા combo ID created_at TEXT NOT NULL, updated_at TEXT NOT NULL, UNIQUE(scope, scope_id) ); ``` --- ## પ્રૉક્સી હેલ્થ ચેકિંગ (v3.8.16+) OmniRouteની **proxy fast-fail** પદ્ધતિ (`src/lib/proxyHealth.ts`) ઝડપી TCP કનેક્શન તપાસ દ્વારા <2sમાં નિષ્ક્રિય પ્રૉક્સીઓ શોધે છે અને પછી દરેક વિનંતીનો વધારાનો ભાર ટાળવા માટે **પરિણામને કૅશ કરે છે**. ### તે કેવી રીતે કાર્ય કરે છે ``` વિનંતી ──▶ ProxyHealthCache.get(url) │ ├─ કૅશ હિટ + તાજું? ──▶ કૅશ કરેલું status પરત કરો │ └─ કૅશ મિસ / વાસી? ──▶ host:port સાથે TCP કનેક્ટ કરો (timeout: FAST_FAIL_TIMEOUT_MS) ──▶ HEALTH_CACHE_TTL_MS માટે કૅશ કરો ──▶ પરિણામ પરત કરો ``` આના વિના, કોઈ નિષ્ક્રિય પ્રૉક્સી નિષ્ફળ થાય તે પહેલાં દરેક વિનંતીને સંપૂર્ણ `PROXY_TIMEOUT_MS` (ડિફૉલ્ટ 30s) માટે અવરોધિત કરશે. ### ફેરફાર કરી શકાય તેવા પર્યાવરણ વેરિયેબલ્સ | વેરિયેબલ | ડિફૉલ્ટ | હેતુ | | ---------------------------- | ------- | --------------------------------------- | | `PROXY_FAST_FAIL_TIMEOUT_MS` | `2000` | દરેક હેલ્થ ચેક માટે TCP કનેક્શન timeout | | `PROXY_HEALTH_CACHE_TTL_MS` | `30000` | હેલ્થ પરિણામ કેટલા સમય સુધી કૅશ થાય | **ભલામણ કરેલ મૂલ્યો:** | પરિસ્થિતિ | Fast-fail timeout | Cache TTL | તર્ક | | --------------------------- | ----------------- | --------- | ---------------------------------------------------------- | | ઉચ્ચ-throughput API gateway | 1500ms | 60000ms | આક્રમક fail-fast, તપાસો ઘટાડવા માટે લાંબો કૅશ | | ભૌગોલિક રીતે વિતરિત nodes | 3000ms | 15000ms | ધીમા networksને વધુ સમય જોઈએ; ઝડપી failover માટે ટૂંકો કૅશ | | ડેવલપમેન્ટ / પરીક્ષણ | 1000ms | 10000ms | સ્થાનિક પ્રૉક્સીઓ પર ઝડપી iteration | | ગુપ્તતા / anti-detection | 2500ms | 45000ms | rate limits ટ્રિગર કરી શકે તેવી ઝડપી probing ટાળો | ### પ્રૉક્સી હેલ્થનું નિરીક્ષણ ```ts import { getAllProxyHealthStatuses, invalidateProxyHealth } from "omniroute/proxyHealth"; const statuses = getAllProxyHealthStatuses(); for (const s of statuses) { console.log(`${s.proxyUrl} → healthy=${s.healthy}, stale=${s.stale}`); } // ચોક્કસ પ્રૉક્સીની પુનઃતપાસ બળજબરીથી કરો invalidateProxyHealth("http://user:pass@203.0.113.7:8080"); ``` જ્યારે કૅશ એન્ટ્રી `HEALTH_CACHE_TTL_MS` વટાવી જાય ત્યારે `stale` flag `true` હોય છે અને આગલી વિનંતી નવી તપાસ ટ્રિગર કરશે. ### દરેક પ્રૉક્સી પ્રકાર માટેના ડિફૉલ્ટ્સ હેલ્થ ચેક URL schemeના આધારે યોગ્ય ડિફૉલ્ટ્સનો ઉપયોગ કરે છે: | Scheme | ડિફૉલ્ટ port | | -------------------------- | ------------ | | `http://` | 8080 | | `https://` | 443 | | `socks5://` / `socks5h://` | 1080 | URLમાં આપેલા custom ports (`http://host:9999`) હંમેશાં schemeના ડિફૉલ્ટ કરતાં પ્રાથમિકતા ધરાવે છે. --- ## પ્રોક્સી એનાલિટિક્સ અને અવલોકનક્ષમતા ઓપરેટરોને રૂટિંગ પેટર્ન, લેટન્સીમાં અચાનક વધારો અને વારંવાર થતી નિષ્ફળતાઓનું નિદાન કરવામાં મદદ કરવા માટે OmniRoute દરેક પ્રોક્સીના ઉપયોગને ટ્રૅક કરે છે. ### શું ટ્રૅક કરવામાં આવે છે કન્ફિગર કરેલા પ્રોક્સી મારફતે થતી દરેક વિનંતી માટે, OmniRoute નીચેની માહિતી રેકોર્ડ કરે છે: | મેટ્રિક | વર્ણન | | ------------ | ---------------------------------------------------------------- | | `proxy_url` | સંપૂર્ણ પ્રોક્સી URL (પ્રમાણીકરણ ક્રેડેન્શિયલ્સ છુપાવેલા હોય છે) | | `provider` | અપસ્ટ્રીમ પ્રોવાઇડર ID (openai, anthropic વગેરે) | | `latency_ms` | પ્રોક્સી હેન્ડશેક સહિત કુલ રાઉન્ડ-ટ્રિપ સમય | | `connect_ms` | ફક્ત TCP કનેક્શનનો સમય | | `status` | અપસ્ટ્રીમ તરફથી મળેલો HTTP સ્ટેટસ કોડ | | `error` | વિનંતી નિષ્ફળ જાય તો ભૂલનો વર્ગ | | `timestamp` | ISO 8601 UTC | ### ડેટાને ઍક્સેસ કરવો ```bash # તાજેતરની પ્રોક્સી ઇવેન્ટ્સ curl -H "Authorization: Bearer $OMNIROUTE_KEY" \ "http://localhost:20128/api/usage/proxy-logs?limit=100" ``` વાસ્તવિક એન્ડપોઇન્ટ `/api/usage/proxy-logs` છે (`src/app/api/usage/proxy-logs/route.ts` જુઓ). આ એન્ડપોઇન્ટ નીચેની બાબતોને સપોર્ટ કરે છે: - `GET /api/usage/proxy-logs` — પ્રોક્સી લૉગ્સ મેળવો - `DELETE /api/usage/proxy-logs` — બધા પ્રોક્સી લૉગ્સ સાફ કરો જરૂર હોય તો સંકલિત આંકડાઓ માટે SQL દ્વારા સીધી `proxy_logs` ટેબલમાં ક્વેરી કરી શકાય છે. ડૅશબોર્ડ UI સંકલિત દૃશ્યો પ્રદાન કરી શકે છે. ### સામાન્ય પેટર્ન **અસ્થિર પ્રોક્સી શોધો** (જે સફળતા અને નિષ્ફળતા વચ્ચે વારાફરતી બદલાય છે): ```sql 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; ``` **ધીમા પ્રોક્સી શોધો** (p95 લેટન્સી > 2s): ```sql 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; ``` --- ## રોટેશન વ્યૂહરચનાનું નિર્ણય વૃક્ષ જ્યારે કોઈ સ્કોપને એકથી વધુ પ્રોક્સી સોંપવામાં આવે છે, ત્યારે દરેક વિનંતી માટે કયો પ્રોક્સી વાપરવો તે પસંદ કરવા OmniRoute **રોટેશન વ્યૂહરચના**નો ઉપયોગ કરે છે. વ્યૂહરચના સ્કોપ સ્તરે કન્ફિગર કરવામાં આવે છે (વૈશ્વિક, પ્રત્યેક પ્રોવાઇડર, પ્રત્યેક એકાઉન્ટ, પ્રત્યેક સંયોજન). ### ઉપલબ્ધ વ્યૂહરચનાઓ | વ્યૂહરચના | ક્યારે ઉપયોગ કરવો | સમાધાન | | ------------------- | --------------------------------------------- | ----------------------------------------------------------------------------------- | | `quality` (ડિફૉલ્ટ) | વિવિધ ગુણવત્તાવાળા પ્રોક્સી સાથેનું પ્રોડક્શન | ઉચ્ચ રેટિંગવાળા પ્રોક્સીને પ્રાધાન્ય આપે છે; ઓછા રેટિંગવાળા પ્રોક્સીને તક ન મળી શકે | | `random` | લોડ વિતરણ, ગોપનીયતા | સમાન વિતરણ; ગુણવત્તાના સંકેતોને અવગણે છે | | `sequential` | ડિબગિંગ, નિર્ધારિત પરીક્ષણ | ક્રમશઃ પ્રોક્સીનો ઉપયોગ કરે છે; સમજવામાં સરળ છે | ### નિર્ણય વૃક્ષ ``` શું તમારી પાસે પ્રોક્સીના ગુણવત્તા સ્કોર છે? │ ┌───────────┴───────────┐ │ │ હા ના │ │ શું બધા પ્રોક્સી │ ગુણવત્તાની દૃષ્ટિએ લગભગ │ સમાન છે? │ │ │ ┌────┴────┐ │ │ │ │ હા ના ઉપયોગ કરો │ │ `random` │ │ (સમાન વિતરણ │ │ સમય જતાં ગુણવત્તાનો │ │ ડેટા બનાવે છે) │ │ │ `quality`નો ઉપયોગ કરો │ (વિવિધ ગુણવત્તા માટે │ શ્રેષ્ઠ) │ `random`નો ઉપયોગ કરો (લોડને સમાન રીતે વિતરિત કરો) ``` ## તમારા પોતાના પ્રોક્સીઓ માટે સ્વચાલિત નિષ્ફળતા બાકાતીકરણ 1proxy માર્કેટપ્લેસ પૂલ પહેલેથી જ નિષ્ફળ થયેલા પ્રોક્સીઓની ગુણવત્તા આપમેળે ઘટાડે છે (જુઓ [પ્રોક્સી ગુણવત્તા સ્કોર્સ](#proxy-quality-scores)). તમે રજિસ્ટ્રીમાં ઉમેરેલા પ્રોક્સીઓ માટે, બૅકગ્રાઉન્ડ હેલ્થ શેડ્યૂલર (`src/lib/proxyHealth/scheduler.ts`) કંઈપણ કાઢી નાખ્યા વિના, સમાન રીતે "નિષ્ક્રિય સભ્યને ચેઇનમાંથી આપમેળે બાકાત રાખવાની" સુવિધા પ્રદાન કરે છે: ```bash # .env — સતત 3 નિષ્ફળ પ્રોબ પછી પ્રોક્સીને સોફ્ટ-ડિસેબલ કરો અને જ્યારે તે # ફરીથી પ્રોબનો જવાબ આપવાનું શરૂ કરે ત્યારે તેને આપમેળે ફરી સક્ષમ કરો. PROXY_AUTO_DISABLE=true PROXY_AUTO_REMOVE_AFTER=3 ``` તે બહુવિધ-પ્રોક્સી ચેઇનમાં કેવી રીતે કાર્ય કરે છે: 1. શેડ્યૂલર દરેક નોંધાયેલા પ્રોક્સીને દર `PROXY_HEALTH_INTERVAL_MS` પર પ્રોબ કરે છે (ડિફૉલ્ટ 10 મિનિટ; ન્યૂનતમ 1 મિનિટ). 2. સતત `PROXY_AUTO_REMOVE_AFTER` **નિર્ણાયક** નિષ્ફળતાઓ પછી (વાસ્તવિક કનેક્શન નિષ્ફળતા — ટાઇમઆઉટ અથવા પ્રોબ લક્ષ્યનો પોતાનો 5xx ક્યારેય ગણાતો નથી, જુઓ [પ્રોક્સી હેલ્થ તપાસ](#proxy-health-checking-v3816)), પ્રોક્સીનું `status` `dead` પર સેટ કરવામાં આવે છે. 3. `dead` એ એવી સ્થિતિઓમાંથી એક છે જેને પૂલ/રોટેશન રિઝોલ્યુશન દ્વારા ઉપયોગમાં લેવાતું સક્રિય-સ્થિતિ ફિલ્ટર બાકાત રાખે છે, તેથી કોઈ સ્કોપનું રોટેશન (રાઉન્ડ-રોબિન / રૅન્ડમ / સ્ટિકી / લેટન્સી — જુઓ [રોટેશન વ્યૂહરચના નિર્ણય વૃક્ષ](#rotation-strategy-decision-tree)) તરત જ નવી વિનંતીઓને તે પ્રોક્સી આપવાનું બંધ કરે છે. પૂલના અન્ય કોઈ પ્રોક્સીને અસર થતી નથી અને આખો પૂલ ક્યારેય ચૂપચાપ સીધા કનેક્શન પર પાછો જતો નથી — ફેલ-ક્લોઝ્ડ સુરક્ષા માટે [4-સ્તરીય પ્રોક્સી સિસ્ટમ](#4-level-proxy-system) જુઓ. 4. શેડ્યૂલર સમાન અંતરાલે `dead` પ્રોક્સીઓને પ્રોબ કરવાનું ચાલુ રાખે છે. આગળનો સફળ પ્રોબ `status`ને ફરી `active` પર ફેરવે છે અને પ્રોક્સી ફરીથી રોટેશનમાં પ્રવેશે છે — તેને મૅન્યુઅલી ફરી ઉમેરવાની જરૂર નથી. આ ઇરાદાપૂર્વક **ઑપ્ટ-ઇન અને બિન-વિનાશકારી** છે: ડિફૉલ્ટ રૂપે શેડ્યૂલર માત્ર નિષ્ફળતાઓની ગણતરી કરે છે અને તેમને લૉગ કરે છે (`decision.ts`માં નીતિ C જુઓ), અને `PROXY_AUTO_DISABLE` ક્યારેય કોઈ પંક્તિ કાઢી નાખતું નથી — તેના માટે અલગ અને વધુ આક્રમક `PROXY_AUTO_REMOVE` ફ્લૅગ છે. જો બંને `true` પર સેટ કરેલા હોય, તો `PROXY_AUTO_REMOVE` પ્રાધાન્ય મેળવે છે (જે પ્રોક્સી કાઢી નાખવામાં આવનાર હોય તેને વચ્ચે સોફ્ટ-ડિસેબલ કરવાનો કોઈ ઉપયોગ નથી). ચલની સંપૂર્ણ યાદી માટે [પર્યાવરણ ગોઠવણી](../reference/ENVIRONMENT.md) સંદર્ભ જુઓ. --- > 📖 **સંબંધિત દસ્તાવેજીકરણ:** > > - [વપરાશકર્તા માર્ગદર્શિકા](../guides/USER_GUIDE.md) — સામાન્ય સેટઅપ અને ગોઠવણી > - [API સંદર્ભ](../reference/API_REFERENCE.md) — સંપૂર્ણ API દસ્તાવેજીકરણ > - [પર્યાવરણ ગોઠવણી](../reference/ENVIRONMENT.md) — બધા પર્યાવરણ ચલો