🌐 Languages: 🇺🇸 English · 🇪🇹 am · 🇸🇦 ar · 🇦🇿 az · 🇧🇬 bg · 🇧🇩 bn · 🇧🇦 bs · 🇨🇿 cs · 🇩🇰 da · 🇩🇪 de · 🇬🇷 el · 🇪🇸 es · 🇪🇪 et · 🇮🇷 fa · 🇫🇮 fi · 🇫🇷 fr · 🇮🇪 ga · 🇮🇳 gu · 🇳🇬 ha · 🇮🇱 he · 🇮🇳 hi · 🇭🇷 hr · 🇭🇺 hu · 🇦🇲 hy · 🇮🇩 id · 🇳🇬 ig · 🇮🇹 it · 🇯🇵 ja · 🇬🇪 ka · 🇰🇭 km · 🇮🇳 kn · 🇰🇷 ko · 🇱🇹 lt · 🇱🇻 lv · 🇮🇳 ml · 🇮🇳 mr · 🇲🇾 ms · 🇲🇹 mt · 🇲🇲 my · 🇳🇵 ne · 🇳🇱 nl · 🇳🇴 no · 🇮🇳 or · 🇮🇳 pa · 🇵🇭 phi · 🇵🇱 pl · 🇵🇹 pt · 🇧🇷 pt-BR · 🇷🇴 ro · 🇷🇺 ru · 🇱🇰 si · 🇸🇰 sk · 🇸🇮 sl · 🇷🇸 sr · 🇸🇪 sv · 🇰🇪 sw · 🇮🇳 ta · 🇮🇳 te · 🇹🇭 th · 🇺🇦 uk-UA · 🇵🇰 ur · 🇺🇿 uz · 🇻🇳 vi · 🇳🇬 yo · 🇨🇳 zh-CN · 🇹🇼 zh-TW
Coğrafi engelleri aşın, kimliğinizi koruyun ve AI trafiğini herhangi bir proxy üzerinden yönlendirin — üstelik hiçbir yapılandırma karmaşası olmadan.
OmniRoute; üst sağlayıcı AI trafiğini HTTP, HTTPS veya SOCKS5 proxy'leri üzerinden yönlendirmenize olanak tanıyan, tüm özelliklere sahip bir proxy yönetim sistemi içerir. İster engellenmiş bir bölgede olun, ister IP rotasyonuna ihtiyaç duyun ya da gizli parmak izi oluşturmak isteyin — bu kılavuz ihtiyacınız olan her şeyi kapsar.
- Neden Proxy Kullanılmalı?
- Mimariye Genel Bakış
- 4 Seviyeli Proxy Sistemi
- Proxy Kayıt Defteri (CRUD)
- 1proxy Ücretsiz Pazarı
- Proxy Rotasyonu
- Algılama Önleme ve Gizlilik
- Üst Proxy Modları
- Kontrol Paneli Arayüzü
- API Referansı
- Ortam Değişkenleri
- Sorun Giderme
Birçok AI sağlayıcısı erişimi coğrafi bölgeye göre kısıtlar. Rusya, Çin, İran, Küba, Türkiye ve diğer ülkelerdeki geliştiriciler aşağıdakine benzer hatalarla karşılaşır:
unsupported_country_region_territory
Proxy'ler, engellenmiş bölgelerin dışında da şu amaçlarla kullanılabilir:
| Kullanım Alanı | Açıklama |
|---|---|
| Coğrafi engel aşma | Engellenmiş ülkelerden OpenAI, Anthropic, Codex ve Copilot'a erişme |
| IP rotasyonu | Hız sınırlamasından kaçınmak için istekleri birden fazla IP'ye dağıtma |
| Gizlilik | Gerçek IP adresinizi üst sağlayıcılardan gizleme |
| Uyumluluk | Trafiği belirli yargı bölgeleri üzerinden yönlendirme |
| Test | Farklı bölgelerden gelen istekleri simüle etme |
┌───────────────────────────────────────────────────────────────┐
│ OmniRoute Sunucusu │
│ │
│ ┌─────────────┐ ┌──────────────┐ ┌──────────────────┐ │
│ │ Proxy │ │ Proxy │ │ Proxy │ │
│ │ Kayıt │───▶│ Dağıtıcı │───▶│ Fetch (undici) │ │
│ │ Defteri │ │ (önbellekli) │ │ │ │
│ │ (SQLite) │ │ │ │ │ │
│ └─────────────┘ └──────────────┘ └────────┬─────────┘ │
│ ▲ │ │
│ │ ▼ │
│ ┌──────┴──────┐ ┌──────────────────┐ │
│ │ 1proxy │ │ Üst Sağlayıcı │ │
│ │ Senkroniz. │ │ API'si │ │
│ │ (ücr. havuz)│ │ │ │
│ └─────────────┘ └──────────────────┘ │
└───────────────────────────────────────────────────────────────┘
| Bileşen | Dosya | Rol |
|---|---|---|
| Proxy Kayıt Defteri | src/lib/db/proxies.ts |
Proxy girdileri ve kapsam atamaları için CRUD işlemleri |
| Proxy Dağıtıcısı | open-sse/utils/proxyDispatcher.ts |
Önbelleğe alma özelliğiyle undici ProxyAgent/SOCKS dağıtıcıları oluşturur |
| Proxy Fetch | open-sse/utils/proxyFetch.ts |
Proxy dağıtıcısı ekleyerek fetch() işlevini sarmalar |
| Ayarlar Rotası | src/app/api/settings/proxy/route.ts |
Eski proxy yapılandırma API'si (GET/PUT/DELETE) |
| Yönetim Rotası | src/app/api/v1/management/proxies/route.ts |
Kayıt defteri CRUD API'si (GET/POST/PATCH/DELETE) |
| 1proxy Veritabanı | src/lib/db/oneproxy.ts |
Ücretsiz proxy pazarı kalıcılığı |
OmniRoute, öncelik sırasına göre çözümlenen dört bağımsız kapsamda proxy yapılandırmasını destekler:
Öncelik Çözümleme Sırası (en yüksek → en düşük):
1. 🔵 Hesap/Bağlantı Proxy'si → API anahtarı / OAuth bağlantısı başına
2. 🟡 Sağlayıcı Proxy'si → sağlayıcı başına (ör. tüm OpenAI trafiği)
3. 🟠 Kombinasyon Proxy'si → kombinasyon/yönlendirme yapılandırması başına
4. 🟢 Global Proxy → tüm trafik, tüm sağlayıcılar
OmniRoute, üst sağlayıcıya bir istek gönderdiğinde her seviyeyi sırayla kontrol eden resolveProxyForConnectionFromRegistry() fonksiyonunu çağırır:
- Hesap seviyesi — Bu belirli bağlantı kimliğine atanmış bir proxy var mı?
- Sağlayıcı seviyesi — Bu sağlayıcıya (ör.
openai) atanmış bir proxy var mı? - Global seviye — Yapılandırılmış bir global proxy var mı?
- Proxy yok — Sağlayıcıya doğrudan bağlantı.
İlk eşleşme kullanılır. Bu, global bir proxy'yi yedek seçenek olarak ayarlayabileceğiniz ancak belirli sağlayıcılar veya bağlantılar için bunu geçersiz kılabileceğiniz anlamına gelir.
| Trafik Türü | Proxy Kullanılıyor mu? | Notlar |
|---|---|---|
| Sohbet tamamlamaları | ✅ | Tüm /v1/chat/completions istekleri |
| Embedding'ler | ✅ | /v1/embeddings |
| Görsel oluşturma | ✅ | /v1/images/generations |
| Ses (TTS/STT) | ✅ | /v1/audio/* |
| OAuth belirteci değişimi | ✅ | unsupported_country_region_territory sorununu çözer |
| Bağlantı testleri | ✅ | "Bağlantıyı Test Et" düğmesi proxy kullanır |
| Belirteç yenileme | ✅ | Arka planda OAuth yenilemesi |
| Model senkronizasyonu | ✅ | Model listeleme ve keşfetme |
Proxy kayıt defteri, tüm proxy'lerinizi depolayan bir SQLite tablosudur (proxy_registry). Her proxy aşağıdaki alanlara sahiptir:
| Alan | Tür | Açıklama |
|---|---|---|
id |
UUID | Benzersiz tanımlayıcı |
name |
String | İnsan tarafından okunabilir etiket |
type |
String | Protokol: http, https, socks5 |
host |
String | Proxy ana bilgisayar adı veya IP adresi |
port |
Integer | Bağlantı noktası numarası |
username |
String | Kimlik doğrulama kullanıcı adı (beklemede şifrelenmiş) |
password |
String | Kimlik doğrulama parolası (beklemede şifrelenmiş) |
region |
String | Coğrafi bölge etiketi |
notes |
String | Serbest metin notları |
status |
String | active veya inactive |
source |
String | manual veya oneproxy |
Kontrol Paneli Üzerinden:
- Ayarlar → Proxy bölümüne gidin
- Proxy Ekle seçeneğine tıklayın
- Tür, ana bilgisayar, bağlantı noktası ve isteğe bağlı kimlik doğrulama bilgilerini doldurun
- Kaydedin
API Üzerinden:
curl -X POST http://localhost:20128/api/v1/management/proxies \
-H "Content-Type: application/json" \
-d '{
"name": "US Proxy",
"type": "http",
"host": "proxy.example.com",
"port": 8080,
"username": "user",
"password": "pass",
"region": "US"
}'curl -X PATCH http://localhost:20128/api/v1/management/proxies \
-H "Content-Type: application/json" \
-d '{
"id": "proxy-uuid-here",
"host": "new-proxy.example.com",
"port": 9090
}'Not: Açıkça boş olmayan yeni değerler göndermediğiniz sürece kimlik bilgileri korunur.
username/passwordiçin boş dizeler gönderildiğinde depolanan değerler korunur.
# Proxy herhangi bir kapsama atanmışsa başarısız olur
curl -X DELETE "http://localhost:20128/api/v1/management/proxies?id=proxy-uuid"
# Zorla silme (atamaları da kaldırır)
curl -X DELETE "http://localhost:20128/api/v1/management/proxies?id=proxy-uuid&force=1"curl "http://localhost:20128/api/v1/management/proxies?limit=50&offset=0"# Global kapsama ata
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}}'
# Belirli bir sağlayıcıya ata
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}}'
# Belirli bir bağlantıya/anahtara ata
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}}'Belirli bir bağlantı için hangi proxy'nin kullanılacağını kontrol edin:
curl "http://localhost:20128/api/settings/proxy?resolve=connection-uuid"Çözümlenen proxy'yi seviyesi (account, provider veya global) ve kaynağıyla birlikte döndürür.
Tek bir proxy'yi aynı anda birden fazla sağlayıcıya veya bağlantıya atayın:
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"
}'Proxy'ler Yedekleme/Geri Yükleme sistemine dahildir. OmniRoute yapılandırmanızı dışa aktardığınızda:
- Kontrol Paneli → Ayarlar → Yedekleme bölümüne gidin
- Dışa Aktar seçeneğine tıklayın — proxy kayıt defteri ve atamalar dahil edilir
- Geri yüklemek için İçe Aktar seçeneğine tıklayın ve yedekleme dosyasını yükleyin
Proxy kayıt defteri ayrıca host+port değerlerine göre upsert işlemini destekler — zaten mevcut olan bir proxy'yi (aynı ana bilgisayar ve bağlantı noktasıyla) içe aktarırsanız kopya oluşturmak yerine mevcut proxy'yi günceller.
Proxy'leri daha eski bir sürümde (registry öncesi) yapılandırdıysanız OmniRoute bunları otomatik olarak taşır:
Eski key_value deposu → proxy_registry + proxy_assignments
Bu işlem, yükseltmeden sonraki ilk başlatmada bir kez gerçekleşir. Yeniden çalıştırmak için migrateLegacyProxyConfigToRegistry({ force: true }) kullanın.
🆕 @oyi77 tarafından katkıda bulunulmuştur — PR #1847 (Sorun #1788)
OmniRoute, dünyanın dört bir yanından yüzlerce ücretsiz, doğrulanmış proxy'ye erişim sağlamak için 1proxy topluluk platformuyla entegre olur. Bu, kendi proxy altyapısına sahip olmayan kullanıcılar için idealdir.
┌─────────────┐ Senkronize Et ┌─────────────────┐ Döndür ┌───────────┐
│ 1proxy API │ ─────────────────▶ │ proxy_registry │ ────────────▶ │ Sağlayıcı │
│ (harici) │ 500 proxy'ye kadar│ source=oneproxy │ kaliteye göre │ API │
└─────────────┘ └─────────────────┘ └───────────┘
- Senkronize et — OmniRoute, doğrulanmış proxy'leri 1proxy API'sinden alır
- Sakla — Proxy'ler aynı
proxy_registrytablosunasource = 'oneproxy'ile kaydedilir - Filtrele — Protokole, ülkeye ve kalite puanına göre filtreleyin
- Döndür — Kalite, rastgele veya sıralı stratejileri kullanarak en iyi proxy'yi seçin
- Otomatik düşürme — Başarısız proxy'lerin kalite puanı düşürülür; eşik değerin altına düşenler → etkin değil olarak işaretlenir
Kontrol Paneli Üzerinden:
- Ayarlar → 1proxy sekmesine gidin
- "Şimdi Senkronize Et" düğmesine tıklayın
- İstatistikleri görüntüleyin: toplam proxy sayısı, etkin proxy sayısı, ortalama kalite ve ülkelere göre dağılım
API Üzerinden:
# Senkronizasyonu tetikle
curl -X POST http://localhost:20128/api/settings/oneproxy \
-H "Content-Type: application/json" \
-d '{}'
# Yanıt:
# { "success": true, "added": 127, "updated": 45, "failed": 2, "total": 172 }# Protokole göre filtrele
curl "http://localhost:20128/api/settings/oneproxy?protocol=socks5"
# Ülkeye göre filtrele
curl "http://localhost:20128/api/settings/oneproxy?countryCode=US"
# Minimum kalite puanına göre filtrele
curl "http://localhost:20128/api/settings/oneproxy?minQuality=80"
# Filtreleri birleştir
curl "http://localhost:20128/api/settings/oneproxy?protocol=http&countryCode=DE&minQuality=70"Her 1proxy proxy'si meta verilerle birlikte gelir:
| Alan | Açıklama |
|---|---|
qualityScore |
1proxy doğrulamasından alınan 0-100 arası puan |
latencyMs |
Ölçülen ağ gecikmesi |
anonymity |
transparent, anonymous veya elite |
googleAccess |
Proxy'nin Google hizmetlerine erişip erişemediği |
countryCode |
İki harfli ISO ülke kodu |
lastValidated |
Son doğrulamanın zaman damgası |
Kalite puanları dinamik olarak ayarlanır:
- Başarısız istekler puanı 10 azaltır
- Puan ≤10'a düşerse → proxy
inactiveolarak işaretlenir - Etkin olmayan proxy'ler döndürme işlemine dahil edilmez
# Kaliteye göre döndür (önce en iyi proxy) — varsayılan
curl -X POST http://localhost:20128/api/settings/oneproxy/rotate \
-H "Content-Type: application/json" \
-d '{"strategy": "quality"}'
# Rastgele döndürme
curl -X POST http://localhost:20128/api/settings/oneproxy/rotate \
-d '{"strategy": "random"}'
# Sıralı (önce en uzun süredir doğrulanmamış olan)
curl -X POST http://localhost:20128/api/settings/oneproxy/rotate \
-d '{"strategy": "sequential"}'1proxy senkronizasyonunda yerleşik bir devre kesici bulunur:
- Art arda 5 senkronizasyon hatasından sonra diğer senkronizasyon girişimleri engellenir
- Şununla sıfırlayın:
resetOneproxyCircuitBreaker()veya sunucuyu yeniden başlatın - Senkronizasyon durumu
GET /api/settings/oneproxy?action=statusadresinden alınabilir
# Tek bir 1proxy proxy'sini sil
curl -X DELETE "http://localhost:20128/api/settings/oneproxy?id=proxy-uuid"
# TÜM 1proxy proxy'lerini temizle (manuel proxy'lere dokunulmaz)
curl -X DELETE "http://localhost:20128/api/settings/oneproxy?clearAll=1"OmniRoute, trafiği yalnızca bir proxy üzerinden yönlendirmekle kalmaz — trafiğin meşru görünmesini de sağlar:
Tarayıcı benzeri TLS parmak izleri oluşturmak için wreq-js kullanarak tarayıcı dışı TLS el sıkışmalarını işaretleyen bot algılama sistemlerini atlatır.
CLI Parmak İzi Anahtarı (Ayarlar → Güvenlik), HTTP başlıklarını ve JSON gövde alanlarını yerel CLI ikili dosyalarının (Claude Code, Codex vb.) imzasıyla tam olarak eşleşecek şekilde yeniden sıralar. Bu özellik, proxy'nin üzerine ek olarak çalışır:
IP adresiniz (engellenmiş) → Proxy IP'si (ABD) → Sağlayıcı API'si
+ TLS sahteciliği
+ CLI parmak izi
Aynı anda hem IP maskeleme hem de istek özgünlüğü elde edersiniz.
Kontrol panelindeki renk kodlu rozetler, hangi proxy düzeyinin etkin olduğunu gösterir:
| Rozet | Düzey | Anlamı |
|---|---|---|
| 🟢 | Genel | Tüm trafik bu proxy üzerinden geçer |
| 🟡 | Sağlayıcı | Yalnızca bu sağlayıcının trafiği proxy'den geçer |
| 🔵 | Bağlantı | Bu belirli anahtar/hesap bu proxy'yi kullanır |
Rozet ayrıca doğrulama için çözümlenen proxy IP'sini de gösterir.
CLIProxyAPI kalıbını kullanan sağlayıcılar için OmniRoute üç yukarı akış proxy modunu destekler:
| Mod | Açıklama |
|---|---|
native |
OmniRoute, proxy yönlendirmesini doğrudan yönetir (varsayılan) |
cliproxyapi |
Harici bir CLIProxyAPI örneğine devreder |
fallback |
Önce yerel modu dener, başarısız olursa CLIProxyAPI'ye geçer |
Her sağlayıcı için ayrı ayrı yapılandırın:
curl -X PUT "http://localhost:20128/api/upstream-proxy/openai" \
-H "Content-Type: application/json" \
-d '{"mode": "native", "enabled": true}'- Genel proxy yapılandırması (tüm trafik için bir kez ayarlanır)
- Sağlayıcı başına proxy geçersiz kılmaları
- Bağlantı başına proxy atamaları
- Yapılandırılmış proxy üzerinden bağlantı testi
- Etkin proxy düzeyini gösteren renk kodlu rozetler
- Ücretsiz proxy'leri almak için Şimdi Senkronize Et düğmesi
- İstatistik kartları: Toplam, Etkin, Ort. Kalite, Son Senkronizasyon
- Filtreler: Protokol, Ülke Kodu, Min. Kalite
- Ana makine, protokol, ülke, kalite puanı, gecikme, anonimlik ve Google erişimini içeren proxy tablosu
- Başarı/başarısızlık takibi ve ardışık başarısızlık sayısını içeren senkronizasyon durumu paneli
- Tüm 1proxy girdilerini kaldırmak için Tümünü Temizle
| Yöntem | Uç Nokta | Açıklama |
|---|---|---|
GET |
/api/settings/proxy |
Tam proxy yapılandırmasını getirir |
GET |
/api/settings/proxy?level=global |
Genel proxy'yi getirir |
GET |
/api/settings/proxy?level=provider&id=openai |
Sağlayıcı proxy'sini getirir |
GET |
/api/settings/proxy?resolve=connectionId |
Etkin proxy'yi çözümler |
PUT |
/api/settings/proxy |
Proxy yapılandırmasını günceller |
DELETE |
/api/settings/proxy?level=provider&id=openai |
İlgili düzeydeki proxy'yi kaldırır |
| Yöntem | Uç Nokta | Açıklama |
|---|---|---|
GET |
/api/v1/management/proxies |
Tüm proxy'leri listeler |
GET |
/api/v1/management/proxies?id=uuid |
Proxy'yi kimliğine göre getirir |
GET |
/api/v1/management/proxies?id=uuid&where_used=1 |
Proxy atamalarını getirir |
POST |
/api/v1/management/proxies |
Proxy oluşturur |
PATCH |
/api/v1/management/proxies |
Proxy'yi günceller |
DELETE |
/api/v1/management/proxies?id=uuid |
Proxy'yi siler |
DELETE |
/api/v1/management/proxies?id=uuid&force=1 |
Zorla siler |
POST |
/api/v1/management/proxies/bulk-assign |
Toplu atama yapar |
GET |
/api/v1/management/proxies/assignments |
Atamaları listeler |
GET |
/api/v1/management/proxies/health |
Proxy sağlık istatistikleri |
OmniRoute örneğinizi, giden trafiği bir proxy üzerinden yönlendirmek yerine herkese açık internete açmak (Cloudflare/ngrok/Tailscale) için TUNNELS_GUIDE.md belgesine bakın. Tünel REST API'si /api/tunnels/{cloudflared,ngrok,tailscale}/* altında bulunur ve yukarıda belgelenen giden proxy zincirinden bağımsızdır.
| Yöntem | Uç Nokta | Açıklama |
|---|---|---|
GET |
/api/settings/oneproxy |
1proxy proxy'lerini listeler |
GET |
/api/settings/oneproxy?action=stats |
İstatistikleri ve senkronizasyon durumunu getirir |
GET |
/api/settings/oneproxy?action=status |
Yalnızca senkronizasyon durumunu getirir |
POST |
/api/settings/oneproxy |
Senkronizasyonu tetikler |
POST |
/api/settings/oneproxy/rotate |
Sonraki proxy'ye geçer |
DELETE |
/api/settings/oneproxy?id=uuid |
Birini siler |
DELETE |
/api/settings/oneproxy?clearAll=1 |
Tümünü temizler |
| Yöntem | Uç Nokta | Açıklama |
|---|---|---|
GET |
/api/upstream-proxy/:providerId |
Yukarı akış proxy yapılandırmasını getirir |
PUT |
/api/upstream-proxy/:providerId |
Yukarı akış proxy modunu ayarlar |
DELETE |
/api/upstream-proxy/:providerId |
Yukarı akış proxy yapılandırmasını kaldırır |
| Değişken | Varsayılan | Açıklama |
|---|---|---|
ENABLE_SOCKS5_PROXY |
true |
SOCKS5 proxy desteğini etkinleştirir (.env.example içinde varsayılan değer true) |
.env dosyanızda ENABLE_SOCKS5_PROXY=true olarak ayarlayın ve yeniden başlatın.
Bu, boşta kalan bağlantıları sonlandıran ucuz proxy'lerde normaldir. OmniRoute bunu zaten şu yöntemlerle ele alır:
- Proxy bağlantılarında keep-alive özelliğini devre dışı bırakarak (
keepAliveTimeout: 1) - Pipelining özelliğini devre dışı bırakarak (
pipelining: 0) - Tekrarlanan el sıkışmalarını önlemek için dispatcher'ları önbelleğe alarak
Sorun devam ederse farklı bir proxy deneyin veya 1proxy rotasyon özelliğini kullanın.
OAuth akışını başlatmadan önce proxy'nin yapılandırıldığından emin olun. OmniRoute, OAuth token alışverişini yapılandırılmış proxy üzerinden yönlendirir. Önce global veya sağlayıcı düzeyinde bir proxy ayarlayın, ardından bağlanın.
Çözümleme sırasını kontrol edin:
GET /api/settings/proxy?resolve=your-connection-idile doğrulayın- Proxy
statusdeğerininactive(inactivedeğil) olup olmadığını kontrol edin - Proxy atama kapsamının bağlantınızla eşleştiğinden emin olun
Senkronizasyon durumunu kontrol edin:
curl "http://localhost:20128/api/settings/oneproxy?action=status"consecutiveFailures >= 5 ise devre kesici tetiklenmiştir. Sıfırlamak için sunucuyu yeniden başlatın veya manuel olarak sıfırlanmasını bekleyin.
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' veya 'oneproxy'
quality_score INTEGER, -- 0-100 (yalnızca 1proxy)
latency_ms INTEGER, -- milisaniye (yalnızca 1proxy)
anonymity TEXT, -- şeffaf/anonim/elit
google_access INTEGER DEFAULT 0, -- Google'a erişebilir mi? (1proxy)
last_validated TEXT, -- ISO zaman damgası (1proxy)
country_code TEXT, -- ISO 2 harfli kod (1proxy)
created_at TEXT NOT NULL,
updated_at TEXT NOT NULL
);CREATE TABLE proxy_assignments (
id INTEGER PRIMARY KEY AUTOINCREMENT,
proxy_id TEXT NOT NULL REFERENCES proxy_registry(id),
scope TEXT NOT NULL, -- 'global', 'provider', 'account' veya 'combo'
scope_id TEXT, -- sağlayıcı kimliği, bağlantı kimliği veya combo kimliği
created_at TEXT NOT NULL,
updated_at TEXT NOT NULL,
UNIQUE(scope, scope_id)
);OmniRoute'un proxy hızlı hata verme mekanizması (src/lib/proxyHealth.ts), hızlı bir TCP bağlantı kontrolüyle çalışmayan proxy'leri <2 saniye içinde algılar ve ardından istek başına ek yükü önlemek için sonucu önbelleğe alır.
İstek ──▶ ProxyHealthCache.get(url)
│
├─ Önbellek isabeti + güncel? ──▶ önbelleğe alınmış durumu döndür
│
└─ Önbellekte yok / eski? ──▶ host:port adresine TCP bağlantısı kur
(zaman aşımı: FAST_FAIL_TIMEOUT_MS)
──▶ HEALTH_CACHE_TTL_MS süresince önbelleğe al
──▶ sonucu döndür
Bu olmadan çalışmayan bir proxy, başarısız olmadan önce her isteği PROXY_TIMEOUT_MS süresinin tamamı boyunca (varsayılan 30 saniye) engellerdi.
| Değişken | Varsayılan | Amaç |
|---|---|---|
PROXY_FAST_FAIL_TIMEOUT_MS |
2000 |
Sağlık kontrolü başına TCP bağlantı zaman aşımı |
PROXY_HEALTH_CACHE_TTL_MS |
30000 |
Sağlık sonucunun önbellekte tutulma süresi |
Önerilen değerler:
| Senaryo | Hızlı hata verme zaman aşımı | Önbellek TTL'si | Gerekçe |
|---|---|---|---|
| Yüksek işlem hacimli API ağ geçidi | 1500ms | 60000ms | Agresif hızlı hata verme, kontrolleri azaltmak için daha uzun önbellek |
| Coğrafi olarak dağıtılmış düğümler | 3000ms | 15000ms | Daha yavaş ağlar daha fazla zamana ihtiyaç duyar; hızlı yük devri için daha kısa önbellek |
| Geliştirme / test | 1000ms | 10000ms | Yerel proxy'lerde hızlı yineleme |
| Gizlilik / algılama önleme | 2500ms | 45000ms | Hız sınırlarını tetikleyebilecek hızlı yoklamalardan kaçınma |
import { getAllProxyHealthStatuses, invalidateProxyHealth } from "omniroute/proxyHealth";
const statuses = getAllProxyHealthStatuses();
for (const s of statuses) {
console.log(`${s.proxyUrl} → healthy=${s.healthy}, stale=${s.stale}`);
}
// Belirli bir proxy'yi yeniden kontrol etmeye zorla
invalidateProxyHealth("http://user:pass@203.0.113.7:8080");Önbellek girdisi HEALTH_CACHE_TTL_MS süresini aştığında stale bayrağı true olur ve sonraki istek yeni bir kontrolü tetikler.
Sağlık kontrolü, URL şemasına göre uygun varsayılan değerleri kullanır:
| Şema | Varsayılan port |
|---|---|
http:// |
8080 |
https:// |
443 |
socks5:// / socks5h:// |
1080 |
URL'deki özel portlar (http://host:9999) her zaman şema varsayılanına göre önceliklidir.
OmniRoute, operatörlerin yönlendirme kalıplarını, gecikme artışlarını ve yinelenen hataları teşhis etmesine yardımcı olmak için proxy başına kullanımı izler.
OmniRoute, yapılandırılmış bir proxy üzerinden geçen her istek için şunları kaydeder:
| Metrik | Açıklama |
|---|---|
proxy_url |
Tam proxy URL'si (kimlik doğrulama bilgileri maskeli) |
provider |
Üst sağlayıcı kimliği (openai, anthropic vb.) |
latency_ms |
Proxy el sıkışması dahil toplam gidiş-dönüş süresi |
connect_ms |
Yalnızca TCP bağlantı süresi |
status |
Üst sistemden gelen HTTP durum kodu |
error |
İstek başarısız olduysa hata sınıfı |
timestamp |
ISO 8601 UTC |
# Son proxy olayları
curl -H "Authorization: Bearer $OMNIROUTE_KEY" \
"http://localhost:20128/api/usage/proxy-logs?limit=100"Asıl uç nokta /api/usage/proxy-logs'dur (bkz. src/app/api/usage/proxy-logs/route.ts). Bu uç nokta şunları destekler:
GET /api/usage/proxy-logs— proxy günlüklerini getirirDELETE /api/usage/proxy-logs— tüm proxy günlüklerini temizler
Gerekirse toplu istatistikler, SQL aracılığıyla doğrudan proxy_logs tablosundan sorgulanabilir. Kontrol paneli arayüzü toplu görünümler sunabilir.
Kararsız bir proxy'yi tespit etme (başarı ve başarısızlık arasında gidip gelir):
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;Yavaş proxy'leri bulma (p95 gecikmesi > 2 sn.):
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;Bir kapsama birden fazla proxy atandığında OmniRoute, her istek için hangisinin kullanılacağını seçmek üzere bir döndürme stratejisi kullanır. Strateji kapsam düzeyinde yapılandırılır (genel, sağlayıcı başına, hesap başına, kombinasyon başına).
| Strateji | Kullanım durumu | Ödünleşim |
|---|---|---|
quality (varsayılan) |
Farklı kalitede proxy'lerle üretim ortamı | Yüksek puanlı proxy'leri tercih eder; düşük puanlıları dışlayabilir |
random |
Yük dağıtımı, gizlilik | Eşit dağıtım sağlar; kalite sinyallerini yok sayar |
sequential |
Hata ayıklama, deterministik test | Proxy'ler arasında sırayla döner; anlaşılması kolaydır |
Proxy'leriniz için kalite puanlarınız var mı?
│
┌───────────┴───────────┐
│ │
EVET HAYIR
│ │
Tüm proxy'lerin │
kalitesi yaklaşık │
olarak eşit mi? │
│ │
┌────┴────┐ │
│ │ │
EVET HAYIR `random`
│ │ kullanın
│ │ (eşit dağılım,
│ │ zaman içinde
│ │ kalite verisi
│ │ oluşturur)
│ │
│ `quality` kullanın
│ (farklı kalite
│ düzeyleri için
│ en iyisi)
│
`random` kullanın
(yükü eşit
dağıtın)
1proxy pazar yeri havuzu, başarısız proxy’lerin derecesini zaten otomatik olarak düşürür (bkz.
Proxy Kalite Puanları). Kayıt defterine sizin
eklediğiniz proxy’ler için arka plan sağlık zamanlayıcısı
(src/lib/proxyHealth/scheduler.ts), hiçbir şeyi silmeden aynı “çalışmayan bir üyeyi
zincirden otomatik olarak çıkarma” davranışını sağlar:
# .env — art arda 3 başarısız yoklamadan sonra bir proxy'yi geçici olarak devre dışı bırakın;
# yoklamalara yeniden yanıt vermeye başladığında otomatik olarak tekrar etkinleştirin.
PROXY_AUTO_DISABLE=true
PROXY_AUTO_REMOVE_AFTER=3Çoklu proxy zincirine nasıl uyduğu:
- Zamanlayıcı, kayıtlı her proxy’yi her
PROXY_HEALTH_INTERVAL_MSaralığında yoklar (varsayılan 10 dk.; minimum 1 dk.). - Art arda
PROXY_AUTO_REMOVE_AFTERadet kesin başarısızlıktan sonra (gerçek bir bağlantı hatasıdır; zaman aşımı veya yoklama hedefinin kendi 5xx yanıtı hiçbir zaman sayılmaz, bkz. Proxy Sağlık Denetimi), proxy’ninstatusdeğerideadolarak ayarlanır. dead, havuz/döndürme çözümlemesinin kullandığı etkin durum filtresinin hariç tuttuğu durumlardan biridir; bu nedenle kapsamın döndürme mekanizması (sıralı / rastgele / yapışkan / gecikme — bkz. Döndürme Stratejisi Karar Ağacı) söz konusu proxy’yi yeni isteklere vermeyi hemen durdurur. Havuzdaki diğer proxy’ler bundan etkilenmez ve havuzun tamamı hiçbir zaman sessizce doğrudan bağlantıya geri dönmez — hatada kapalı koruma mekanizması için bkz. 4 Seviyeli Proxy Sistemi.- Zamanlayıcı,
deadproxy’leri aynı aralıkta yoklamaya devam eder. Bir sonraki başarılı yoklama,statusdeğerini tekraractiveolarak değiştirir ve proxy yeniden döndürmeye dahil olur — manuel olarak yeniden eklemek gerekmez.
Bu davranış bilinçli olarak isteğe bağlı ve tahribatsızdır: zamanlayıcı varsayılan olarak yalnızca
başarısızlıkları sayar ve günlüğe kaydeder (decision.ts içindeki C politikasına bakın);
PROXY_AUTO_DISABLE hiçbir zaman bir satırı silmez — ayrı ve daha agresif olan
PROXY_AUTO_REMOVE bayrağı bunun içindir. Her ikisi de true olarak ayarlanırsa
PROXY_AUTO_REMOVE öncelikli olur (silinmek üzere olan bir proxy’yi arada geçici olarak
devre dışı bırakmanın bir faydası yoktur). Değişkenlerin tam listesi için
Ortam Yapılandırması başvuru belgesine bakın.
📖 İlgili belgeler:
- Kullanıcı Kılavuzu — Genel kurulum ve yapılandırma
- API Başvurusu — Eksiksiz API belgeleri
- Ortam Yapılandırması — Tüm ortam değişkenleri