# 🌐 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) · 🇮🇳 [gu](../../../gu/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) · 🇮🇳 [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) --- > **புவியியல் தடைகளைத் தவிர்த்து, உங்கள் அடையாளத்தைப் பாதுகாத்து, எந்தவொரு proxy வழியாகவும் AI போக்குவரத்தை வழிமாற்றுங்கள் — எந்த உள்ளமைவுச் சிக்கலும் இல்லாமல்.** HTTP, HTTPS அல்லது SOCKS5 proxy-கள் வழியாக மேல்நிலை AI வழங்குநர்களின் போக்குவரத்தை வழிமாற்ற உதவும் முழு அம்சங்களைக் கொண்ட proxy மேலாண்மை அமைப்பு OmniRoute-இல் உள்ளது. நீங்கள் தடைசெய்யப்பட்ட பிராந்தியத்தில் இருந்தாலும், IP சுழற்சி தேவைப்பட்டாலும் அல்லது மறைமுக fingerprinting-ஐ விரும்பினாலும் — இந்த வழிகாட்டி அனைத்தையும் விளக்குகிறது. --- ## உள்ளடக்க அட்டவணை - [Proxy-களை ஏன் பயன்படுத்த வேண்டும்?](#why-use-proxies) - [கட்டமைப்புக் கண்ணோட்டம்](#architecture-overview) - [4-நிலை Proxy அமைப்பு](#4-level-proxy-system) - [Proxy பதிவகம் (CRUD)](#proxy-registry-crud) - [1proxy இலவச சந்தை](#1proxy-free-proxy-marketplace) - [Proxy சுழற்சி](#proxy-rotation) - [கண்டறிதல் தடுப்பு & மறைமுகச் செயல்பாடு](#anti-detection--stealth) - [மேல்நிலை Proxy முறைகள்](#upstream-proxy-modes) - [Dashboard UI](#dashboard-ui) - [API மேற்கோள்](#api-reference) - [சுற்றுச்சூழல் மாறிகள்](#environment-variables) - [சிக்கல் தீர்வு](#troubleshooting) --- ## Proxy-களை ஏன் பயன்படுத்த வேண்டும்? பல AI வழங்குநர்கள் புவியியல் பிராந்தியத்தின் அடிப்படையில் அணுகலைக் கட்டுப்படுத்துகின்றனர். **ரஷ்யா, சீனா, ஈரான், கியூபா, துருக்கி** மற்றும் பிற நாடுகளில் உள்ள உருவாக்குநர்கள் பின்வருவது போன்ற பிழைகளை எதிர்கொள்கின்றனர்: ``` unsupported_country_region_territory ``` தடைசெய்யப்பட்ட பிராந்தியங்களுக்கு வெளியேயும் proxy-கள் பின்வரும் பயன்பாடுகளுக்கு உதவுகின்றன: | பயன்பாடு | விளக்கம் | | -------------------------------- | ------------------------------------------------------------------------------------- | | **புவியியல் தடையைத் தவிர்த்தல்** | தடைசெய்யப்பட்ட நாடுகளில் இருந்து OpenAI, Anthropic, Codex, Copilot ஆகியவற்றை அணுகுதல் | | **IP சுழற்சி** | விகித வரம்பைத் தவிர்க்கப் பல IP-களில் கோரிக்கைகளைப் பகிர்ந்தளித்தல் | | **தனியுரிமை** | மேல்நிலை வழங்குநர்களிடமிருந்து உங்கள் உண்மையான IP-ஐ மறைத்தல் | | **இணக்கப்பாடு** | குறிப்பிட்ட அதிகார வரம்புகள் வழியாகப் போக்குவரத்தை வழிமாற்றுதல் | | **சோதனை** | வெவ்வேறு பிராந்தியங்களிலிருந்து வரும் கோரிக்கைகளை உருவகப்படுத்துதல் | --- ## கட்டமைப்புக் கண்ணோட்டம் ``` ┌───────────────────────────────────────────────────────────────┐ │ OmniRoute சேவையகம் │ │ │ │ ┌─────────────┐ ┌──────────────┐ ┌──────────────────┐ │ │ │ Proxy │ │ Proxy │ │ Proxy │ │ │ │ பதிவகம் │───▶│ விநியோகி │───▶│ Fetch (undici) │ │ │ │ (SQLite) │ │ (தற்காலிகச் சேமிப்பு)│ │ │ │ │ └─────────────┘ └──────────────┘ └────────┬─────────┘ │ │ ▲ │ │ │ │ ▼ │ │ ┌──────┴──────┐ ┌──────────────────┐ │ │ │ 1proxy ஒத்திசைவு│ │ மேல்நிலை │ │ │ │ (இலவசத் தொகுப்பு)│ │ வழங்குநர் API │ │ │ └─────────────┘ └──────────────────┘ │ └───────────────────────────────────────────────────────────────┘ ``` ### முக்கியக் கூறுகள் | கூறு | கோப்பு | பங்கு | | -------------------- | -------------------------------------------- | ------------------------------------------------------------------------------ | | **Proxy பதிவகம்** | `src/lib/db/proxies.ts` | Proxy பதிவுகள் மற்றும் scope ஒதுக்கீடுகளுக்கான CRUD | | **Proxy விநியோகி** | `open-sse/utils/proxyDispatcher.ts` | தற்காலிகச் சேமிப்புடன் `undici` ProxyAgent/SOCKS dispatcher-களை உருவாக்குகிறது | | **Proxy Fetch** | `open-sse/utils/proxyFetch.ts` | Proxy dispatcher உட்செலுத்தலுடன் `fetch()`-ஐச் சுற்றிப் பொதிகிறது | | **அமைப்புகள் Route** | `src/app/api/settings/proxy/route.ts` | முந்தைய proxy உள்ளமைவு API (GET/PUT/DELETE) | | **மேலாண்மை Route** | `src/app/api/v1/management/proxies/route.ts` | பதிவக CRUD API (GET/POST/PATCH/DELETE) | | **1proxy DB** | `src/lib/db/oneproxy.ts` | இலவச proxy சந்தைக்கான நிலைத்த சேமிப்பு | --- ## 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. **அமைப்புகள் → ப்ராக்ஸி** என்பதற்குச் செல்லவும் 2. **ப்ராக்ஸியைச் சேர்** என்பதைக் கிளிக் செய்யவும் 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. **டாஷ்போர்டு → அமைப்புகள் → காப்புப்பிரதி** என்பதற்குச் செல்லவும் 2. **ஏற்றுமதி** என்பதைக் கிளிக் செய்யவும் — ப்ராக்ஸி பதிவகமும் ஒதுக்கீடுகளும் சேர்க்கப்படும் 3. மீட்டமைக்க, **இறக்குமதி** என்பதைக் கிளிக் செய்து காப்புப்பிரதிக் கோப்பைப் பதிவேற்றவும் ப்ராக்ஸி பதிவகம் **host+port அடிப்படையிலான upsert**-ஐயும் ஆதரிக்கிறது — ஏற்கனவே உள்ள ப்ராக்ஸியை (அதே ஹோஸ்ட் மற்றும் போர்ட்) நீங்கள் இறக்குமதி செய்தால், நகல் ஒன்றை உருவாக்குவதற்குப் பதிலாக அது புதுப்பிக்கப்படும். ### பழைய அமைப்பிலிருந்து இடமாற்றம் நீங்கள் பழைய பதிப்பில் (registry-க்கு முந்தையது) proxy-களை உள்ளமைத்திருந்தால், OmniRoute அவற்றைத் தானாகவே இடம்பெயர்த்துவிடும்: ``` பழைய key_value சேமிப்பகம் → proxy_registry + proxy_assignments ``` மேம்படுத்திய பிறகு முதன்முறையாகத் தொடங்கும்போது இது ஒருமுறை நிகழும். மீண்டும் இயக்க `migrateLegacyProxyConfigToRegistry({ force: true })`-ஐப் பயன்படுத்தவும். --- ## 1proxy இலவச Proxy சந்தை > 🆕 **[@oyi77](https://github.com/oyi77) வழங்கியது** — PR [#1847](https://github.com/diegosouzapw/OmniRoute/pull/1847) (சிக்கல் [#1788](https://github.com/diegosouzapw/OmniRoute/issues/1788)) உலகம் முழுவதிலும் உள்ள **நூற்றுக்கணக்கான இலவச, சரிபார்க்கப்பட்ட proxy-களுக்கான** அணுகலை வழங்க, OmniRoute ஆனது **[1proxy](https://1proxy-api.aitradepulse.com)** சமூகத் தளத்துடன் ஒருங்கிணைகிறது. சொந்த proxy உள்கட்டமைப்பு இல்லாத பயனர்களுக்கு இது மிகவும் ஏற்றது. ### இது எவ்வாறு செயல்படுகிறது ``` ┌─────────────┐ ஒத்திசைவு ┌─────────────────┐ சுழற்சி ┌──────────┐ │ 1proxy API │ ────────────▶ │ proxy_registry │ ────────────▶ │ வழங்குநர் │ │ (வெளிப்புறம்)│ 500 வரை │ source=oneproxy │ தரத்தின் மூலம்│ API │ └─────────────┘ proxy-கள் └─────────────────┘ └──────────┘ ``` 1. **ஒத்திசைவு** — 1proxy API-யிலிருந்து சரிபார்க்கப்பட்ட proxy-களை OmniRoute பெறுகிறது 2. **சேமிப்பு** — Proxy-கள் அதே `proxy_registry` அட்டவணையில் `source = 'oneproxy'` என்பதுடன் சேமிக்கப்படுகின்றன 3. **வடிகட்டுதல்** — நெறிமுறை, நாடு மற்றும் தர மதிப்பெண் அடிப்படையில் வடிகட்டலாம் 4. **சுழற்சி** — தரம், சீரற்ற அல்லது வரிசைமுறை உத்திகளைப் பயன்படுத்தி சிறந்த proxy-ஐத் தேர்ந்தெடுக்கலாம் 5. **தானியங்கி தரக்குறைப்பு** — தோல்வியடைந்த proxy-களின் தர மதிப்பெண் குறைக்கப்படும்; வரம்புக்குக் கீழே சென்றால் → செயலற்றதாகக் குறிக்கப்படும் ### Proxy-களை ஒத்திசைத்தல் **Dashboard வழியாக:** 1. **Settings → 1proxy** தாவலுக்குச் செல்லவும் 2. **"Sync Now"** என்பதைக் கிளிக் செய்யவும் 3. புள்ளிவிவரங்களைப் பார்க்கவும்: மொத்த proxy-கள், செயலில் உள்ளவற்றின் எண்ணிக்கை, சராசரி தரம் மற்றும் நாடு வாரியான விவரம் **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 } ``` ### Proxy-களை வடிகட்டுதல் ```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" ``` ### Proxy தர மதிப்பெண்கள் ஒவ்வொரு 1proxy proxy-யும் பின்வரும் metadata-வுடன் வருகிறது: | புலம் | விளக்கம் | | --------------- | ---------------------------------------------------- | | `qualityScore` | 1proxy சரிபார்ப்பிலிருந்து பெறப்பட்ட 0-100 மதிப்பீடு | | `latencyMs` | அளவிடப்பட்ட பிணையத் தாமதம் | | `anonymity` | `transparent`, `anonymous` அல்லது `elite` | | `googleAccess` | இந்த proxy-யால் Google சேவைகளை அணுக முடியுமா | | `countryCode` | இரண்டெழுத்து ISO நாட்டுக் குறியீடு | | `lastValidated` | கடைசியாகச் சரிபார்க்கப்பட்ட நேரக்குறிப்பு | தர மதிப்பெண்கள் மாறும் வகையில் சரிசெய்யப்படுகின்றன: - **தோல்வியடைந்த கோரிக்கைகள்** மதிப்பெண்ணை 10 புள்ளிகள் குறைக்கும் - **மதிப்பெண் ≤10 ஆகக் குறைந்தால்** → proxy `inactive` எனக் குறிக்கப்படும் - செயலற்ற proxy-கள் சுழற்சியிலிருந்து விலக்கப்படும் ### சுழற்சி உத்திகள் ```bash # தரத்தின் அடிப்படையில் சுழற்றவும் (சிறந்த proxy முதலில்) — இயல்புநிலை 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"}' ``` ### Circuit Breaker 1proxy ஒத்திசைவில் உள்ளமைக்கப்பட்ட circuit breaker உள்ளது: - **தொடர்ச்சியான 5 ஒத்திசைவுத் தோல்விகளுக்குப்** பிறகு, மேற்கொண்டு செய்யப்படும் ஒத்திசைவு முயற்சிகள் தடுக்கப்படும் - இதன் மூலம் மீட்டமைக்கவும்: `resetOneproxyCircuitBreaker()` அல்லது server-ஐ மறுதொடக்கம் செய்யவும் - ஒத்திசைவு நிலையை `GET /api/settings/oneproxy?action=status` என்பதில் காணலாம் ### 1proxy Proxy-களை அழித்தல் ```bash # ஒற்றை 1proxy proxy-ஐ நீக்கவும் curl -X DELETE "http://localhost:20128/api/settings/oneproxy?id=proxy-uuid" # அனைத்து 1proxy proxy-களையும் அழிக்கவும் (கைமுறை proxy-கள் மாற்றப்படாது) curl -X DELETE "http://localhost:20128/api/settings/oneproxy?clearAll=1" ``` --- ## கண்டறிதல் தடுப்பு & மறைநிலை OmniRoute போக்குவரத்தை ஒரு proxy வழியாக அனுப்புவதோடு மட்டும் நிற்காது — அந்தப் போக்குவரத்து முறையானதாகத் தோன்றுமாறும் செய்கிறது: ### TLS கைரேகை போலியாக்கம் உலாவி போன்ற TLS கைரேகைகளை உருவாக்க `wreq-js`-ஐப் பயன்படுத்துகிறது; இதனால் உலாவி அல்லாத TLS கைகுலுக்கல்களைக் குறியிடும் bot கண்டறிதல் அமைப்புகளைத் தவிர்க்க முடியும். ### CLI கைரேகைப் பொருத்தம் **CLI Fingerprint Toggle** (`Settings → Security`) ஆனது native CLI binary-களின் (Claude Code, Codex போன்றவை) துல்லியமான signature-உடன் பொருந்துமாறு HTTP header-களையும் JSON body field-களையும் மறுவரிசைப்படுத்துகிறது. இது proxy-க்கு **மேலாகக் கூடுதலாக** செயல்படுகிறது: ``` உங்கள் IP (தடுக்கப்பட்டது) → Proxy IP (US) → வழங்குநர் API + TLS போலியாக்கம் + CLI கைரேகை ``` நீங்கள் ஒரே நேரத்தில் **IP மறைத்தல்** மற்றும் **கோரிக்கை நம்பகத்தன்மை** ஆகிய இரண்டையும் பெறுகிறீர்கள். ### Proxy IP பாதுகாப்பு dashboard-இல் உள்ள வண்ணக் குறியீடு செய்யப்பட்ட badge-கள் எந்த proxy நிலை செயலில் உள்ளது என்பதைக் காட்டுகின்றன: | Badge | நிலை | பொருள் | | ----- | --------- | -------------------------------------------------------------- | | 🟢 | உலகளாவிய | அனைத்துப் போக்குவரத்தும் இந்த proxy வழியாகச் செல்கிறது | | 🟡 | வழங்குநர் | இந்த வழங்குநரின் போக்குவரத்து மட்டும் proxy செய்யப்படுகிறது | | 🔵 | இணைப்பு | இந்தக் குறிப்பிட்ட key/account இந்த proxy-ஐப் பயன்படுத்துகிறது | சரிபார்ப்புக்காகத் தீர்மானிக்கப்பட்ட proxy IP-யையும் badge காட்டுகிறது. --- ## Upstream Proxy முறைகள் CLIProxyAPI வடிவத்தைப் பயன்படுத்தும் வழங்குநர்களுக்காக, OmniRoute மூன்று upstream proxy முறைகளை ஆதரிக்கிறது: | முறை | விளக்கம் | | ------------- | ---------------------------------------------------------------------- | | `native` | OmniRoute நேரடியாக proxy routing-ஐக் கையாளுகிறது (இயல்புநிலை) | | `cliproxyapi` | வெளிப்புற CLIProxyAPI instance-க்கு ஒப்படைக்கிறது | | `fallback` | முதலில் native-ஐ முயற்சித்து, பின்னர் CLIProxyAPI-ஐப் பயன்படுத்துகிறது | ஒவ்வொரு வழங்குநருக்கும் தனித்தனியாக உள்ளமைக்கவும்: ```bash curl -X PUT "http://localhost:20128/api/upstream-proxy/openai" \ -H "Content-Type: application/json" \ -d '{"mode": "native", "enabled": true}' ``` --- ## Dashboard UI ### Settings → Proxy Tab - அனைத்துப் போக்குவரத்திற்குமான **உலகளாவிய proxy** உள்ளமைவு (ஒருமுறை அமைக்கவும்) - **ஒவ்வொரு வழங்குநருக்குமான proxy** மேலெழுதல்கள் - **ஒவ்வொரு இணைப்புக்குமான proxy** ஒதுக்கீடுகள் - உள்ளமைக்கப்பட்ட proxy வழியாக **இணைப்புச் சோதனை** - செயலில் உள்ள proxy நிலையைக் காட்டும் **வண்ணக் குறியீடு செய்யப்பட்ட badge-கள்** ### Settings → 1proxy Tab - இலவச proxy-களைப் பெறுவதற்கான **Sync Now** பொத்தான் - **புள்ளிவிவர அட்டைகள்**: மொத்தம், செயலில் உள்ளவை, சராசரி தரம், கடைசி ஒத்திசைவு - **வடிகட்டிகள்**: நெறிமுறை, நாட்டுக் குறியீடு, குறைந்தபட்சத் தரம் - host, நெறிமுறை, நாடு, தர மதிப்பெண், தாமதம், பெயரறியாமை, Google அணுகல் ஆகியவற்றைக் கொண்ட **proxy அட்டவணை** - வெற்றி/தோல்வி கண்காணிப்பு மற்றும் தொடர்ச்சியான தோல்வி எண்ணிக்கையைக் கொண்ட **ஒத்திசைவு நிலை** panel - அனைத்து 1proxy பதிவுகளையும் அகற்றுவதற்கான **Clear All** --- ## API குறிப்பு ### Proxy அமைப்புகள் API | முறை | Endpoint | விளக்கம் | | -------- | ---------------------------------------------- | -------------------------------------- | | `GET` | `/api/settings/proxy` | முழு proxy உள்ளமைவைப் பெறுதல் | | `GET` | `/api/settings/proxy?level=global` | உலகளாவிய proxy-ஐப் பெறுதல் | | `GET` | `/api/settings/proxy?level=provider&id=openai` | வழங்குநர் proxy-ஐப் பெறுதல் | | `GET` | `/api/settings/proxy?resolve=connectionId` | செயல்படும் proxy-ஐத் தீர்மானித்தல் | | `PUT` | `/api/settings/proxy` | proxy உள்ளமைவைப் புதுப்பித்தல் | | `DELETE` | `/api/settings/proxy?level=provider&id=openai` | குறிப்பிட்ட நிலையில் proxy-ஐ அகற்றுதல் | ### Proxy Registry API | முறை | Endpoint | விளக்கம் | | -------- | ------------------------------------------------- | ----------------------------------- | | `GET` | `/api/v1/management/proxies` | அனைத்து proxy-களையும் பட்டியலிடுதல் | | `GET` | `/api/v1/management/proxies?id=uuid` | ID மூலம் proxy-ஐப் பெறுதல் | | `GET` | `/api/v1/management/proxies?id=uuid&where_used=1` | proxy ஒதுக்கீடுகளைப் பெறுதல் | | `POST` | `/api/v1/management/proxies` | proxy-ஐ உருவாக்குதல் | | `PATCH` | `/api/v1/management/proxies` | proxy-ஐப் புதுப்பித்தல் | | `DELETE` | `/api/v1/management/proxies?id=uuid` | proxy-ஐ நீக்குதல் | | `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` | proxy ஆரோக்கியப் புள்ளிவிவரங்கள் | ### Tunnels API ஒரு proxy வழியாக வெளிச்செல்லும் போக்குவரத்தை அனுப்புவதற்குப் பதிலாக, உங்கள் OmniRoute instance-ஐப் பொது இணையத்தில் (Cloudflare/ngrok/Tailscale) வெளிப்படுத்துவது குறித்து அறிய, [TUNNELS_GUIDE.md](./TUNNELS_GUIDE.md)-ஐப் பார்க்கவும். tunnel REST API ஆனது `/api/tunnels/{cloudflared,ngrok,tailscale}/*` என்பதன் கீழ் உள்ளது மற்றும் மேலே ஆவணப்படுத்தப்பட்ட வெளிச்செல்லும் proxy சங்கிலியிலிருந்து தனித்துச் செயல்படுகிறது. ### 1proxy API | முறை | Endpoint | விளக்கம் | | -------- | -------------------------------------- | -------------------------------------------- | | `GET` | `/api/settings/oneproxy` | 1proxy proxy-களைப் பட்டியலிடுதல் | | `GET` | `/api/settings/oneproxy?action=stats` | புள்ளிவிவரங்கள் + ஒத்திசைவு நிலையைப் பெறுதல் | | `GET` | `/api/settings/oneproxy?action=status` | ஒத்திசைவு நிலையை மட்டும் பெறுதல் | | `POST` | `/api/settings/oneproxy` | ஒத்திசைவைத் தொடங்குதல் | | `POST` | `/api/settings/oneproxy/rotate` | அடுத்த proxy-க்கு மாற்றுதல் | | `DELETE` | `/api/settings/oneproxy?id=uuid` | ஒன்றை நீக்குதல் | | `DELETE` | `/api/settings/oneproxy?clearAll=1` | அனைத்தையும் அழித்தல் | ### Upstream Proxy API | முறை | Endpoint | விளக்கம் | | -------- | --------------------------------- | --------------------------------- | | `GET` | `/api/upstream-proxy/:providerId` | upstream proxy உள்ளமைவைப் பெறுதல் | | `PUT` | `/api/upstream-proxy/:providerId` | upstream proxy முறையை அமைத்தல் | | `DELETE` | `/api/upstream-proxy/:providerId` | upstream proxy உள்ளமைவை அகற்றுதல் | --- ## சூழல் மாறிகள் | மாறி | இயல்புநிலை | விளக்கம் | | --------------------- | ---------- | --------------------------------------------------------------------- | | `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`) - மீண்டும் மீண்டும் handshake செய்வதைத் தவிர்க்க dispatchers-ஐத் தற்காலிகமாகச் சேமித்தல் இது தொடர்ந்து ஏற்பட்டால், வேறொரு ப்ராக்ஸியை முயற்சிக்கவும் அல்லது 1proxy சுழற்சி அம்சத்தைப் பயன்படுத்தவும். ### OAuth-இன் போது "unsupported_country_region_territory" OAuth செயல்முறையைத் தொடங்குவதற்கு **முன்பே** ப்ராக்ஸி உள்ளமைக்கப்பட்டுள்ளதா என்பதை உறுதிப்படுத்தவும். OmniRoute, OAuth token exchange-ஐ உள்ளமைக்கப்பட்ட ப்ராக்ஸி வழியாக அனுப்புகிறது. முதலில் ஒரு உலகளாவிய அல்லது வழங்குநர்-நிலை ப்ராக்ஸியை அமைத்து, பின்னர் இணைக்கவும். ### ப்ராக்ஸி பயன்படுத்தப்படவில்லை தீர்மான வரிசையைச் சரிபார்க்கவும்: 1. `GET /api/settings/proxy?resolve=your-connection-id` மூலம் சரிபார்க்கவும் 2. ப்ராக்ஸியின் `status`, `active` ஆக உள்ளதா (`inactive` அல்ல) என்பதைச் சரிபார்க்கவும் 3. ப்ராக்ஸி ஒதுக்கீட்டு வரம்பு உங்கள் இணைப்புடன் பொருந்துவதை உறுதிப்படுத்தவும் ### 1proxy ஒத்திசைவு தோல்வியடைகிறது ஒத்திசைவு நிலையைச் சரிபார்க்கவும்: ```bash curl "http://localhost:20128/api/settings/oneproxy?action=status" ``` `consecutiveFailures >= 5` எனில், circuit breaker செயல்பட்டுள்ளது. மீட்டமைக்க server-ஐ மறுதொடக்கம் செய்யவும் அல்லது கைமுறை மீட்டமைப்புக்காகக் காத்திருக்கவும். --- ## தரவுத்தளத் திட்டவடிவம் ### `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 நேரமுத்திரை (1proxy) country_code TEXT, -- ISO 2-எழுத்துக் குறியீடு (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, -- வழங்குநர் ID, இணைப்பு ID அல்லது combo ID created_at TEXT NOT NULL, updated_at TEXT NOT NULL, UNIQUE(scope, scope_id) ); ``` --- ## ப்ராக்ஸி ஆரோக்கியச் சரிபார்ப்பு (v3.8.16+) OmniRoute-இன் **ப்ராக்ஸி விரைவுத் தோல்வி** பொறிமுறை (`src/lib/proxyHealth.ts`), விரைவான TCP இணைப்புச் சரிபார்ப்பின் மூலம் செயலிழந்த ப்ராக்ஸிகளை <2s-இல் கண்டறிந்து, பின்னர் ஒவ்வொரு கோரிக்கையிலும் ஏற்படும் கூடுதல் செலவைத் தவிர்க்க **முடிவைத் தற்காலிகமாகச் சேமிக்கிறது**. ### இது எவ்வாறு செயல்படுகிறது ``` கோரிக்கை ──▶ ProxyHealthCache.get(url) │ ├─ Cache பொருத்தம் + புதியதா? ──▶ தற்காலிகமாகச் சேமிக்கப்பட்ட நிலையைத் திருப்பியளி │ └─ Cache பொருத்தமில்லை / காலாவதியானதா? ──▶ host:port-க்கு TCP மூலம் இணை (காலவரம்பு: FAST_FAIL_TIMEOUT_MS) ──▶ HEALTH_CACHE_TTL_MS வரை தற்காலிகமாகச் சேமி ──▶ முடிவைத் திருப்பியளி ``` இது இல்லையெனில், செயலிழந்த ப்ராக்ஸி ஒன்று தோல்வியடைவதற்கு முன் ஒவ்வொரு கோரிக்கையையும் முழு `PROXY_TIMEOUT_MS` நேரத்திற்கு (இயல்புநிலை 30s) தடுத்துவிடும். ### மாற்றியமைக்கக்கூடிய சூழல் மாறிகள் | மாறி | இயல்புநிலை | நோக்கம் | | ---------------------------- | ---------- | ------------------------------------------------------------- | | `PROXY_FAST_FAIL_TIMEOUT_MS` | `2000` | ஒவ்வொரு ஆரோக்கியச் சரிபார்ப்புக்குமான TCP இணைப்புக் காலவரம்பு | | `PROXY_HEALTH_CACHE_TTL_MS` | `30000` | ஆரோக்கிய முடிவு எவ்வளவு நேரம் தற்காலிகமாகச் சேமிக்கப்படும் | **பரிந்துரைக்கப்படும் மதிப்புகள்:** | சூழ்நிலை | விரைவுத் தோல்விக் காலவரம்பு | Cache TTL | காரணம் | | ------------------------------- | --------------------------- | --------- | ------------------------------------------------------------------------------ | | அதிகப் பயன்பாடுள்ள API gateway | 1500ms | 60000ms | தீவிரமான விரைவுத் தோல்வி; சரிபார்ப்புகளைக் குறைக்க நீண்ட cache | | புவியியல் ரீதியாகப் பரவிய nodes | 3000ms | 15000ms | மெதுவான வலையமைப்புகளுக்கு அதிக நேரம் தேவை; விரைவான failover-க்கு குறுகிய cache | | உருவாக்கம் / சோதனை | 1000ms | 10000ms | உள்ளூர் ப்ராக்ஸிகளில் விரைவான மறுசெயலாக்கம் | | மறைநிலை / கண்டறிதல் தடுப்பு | 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"); ``` Cache பதிவு `HEALTH_CACHE_TTL_MS`-ஐக் கடந்ததும், அடுத்த கோரிக்கை புதிய சரிபார்ப்பைத் தூண்டும் நிலையிலும் `stale` குறியீடு `true` ஆக இருக்கும். ### ஒவ்வொரு ப்ராக்ஸி வகைக்குமான இயல்புநிலைகள் URL திட்டத்தை அடிப்படையாகக் கொண்டு ஆரோக்கியச் சரிபார்ப்பு பொருத்தமான இயல்புநிலைகளைப் பயன்படுத்துகிறது: | திட்டம் | இயல்புநிலை port | | -------------------------- | --------------- | | `http://` | 8080 | | `https://` | 443 | | `socks5://` / `socks5h://` | 1080 | URL-இல் உள்ள தனிப்பயன் ports (`http://host:9999`), திட்டத்தின் இயல்புநிலையை விட எப்போதும் முன்னுரிமை பெறும். --- ## ப்ராக்ஸி பகுப்பாய்வு & கண்காணிப்புத்திறன் வழித்தட முறைகள், தாமத அதிகரிப்புகள் மற்றும் மீண்டும் மீண்டும் ஏற்படும் தோல்விகளைக் கண்டறிய இயக்குநர்களுக்கு உதவுவதற்காக, ஒவ்வொரு ப்ராக்ஸியின் பயன்பாட்டையும் 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) fail-closed பாதுகாப்பைப் பார்க்கவும். 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) — அனைத்து சூழல் மாறிகளும்