đ OmniRoute Proxy Guide (Deutsch)
Inhaltsverzeichnis
Abschnitt betitelt âInhaltsverzeichnisâ- Warum Proxys verwenden?
- ArchitekturĂŒbersicht
- 4-stufiges Proxy-System
- Proxy-Registry (CRUD)
- Kostenloser 1proxy-Marktplatz
- Proxy-Rotation
- Anti-Erkennung & Verschleierung
- Vorgelagerte Proxy-Modi
- Dashboard-OberflÀche
- API-Referenz
- Umgebungsvariablen
- Fehlerbehebung
Warum Proxys verwenden?
Abschnitt betitelt âWarum Proxys verwenden?âViele KI-Anbieter beschrĂ€nken den Zugriff nach geografischer Region. Entwickler in Russland, China, Iran, Kuba, der TĂŒrkei und anderen LĂ€ndern stoĂen auf Fehler wie:
unsupported_country_region_territoryAuch auĂerhalb gesperrter Regionen sind Proxys fĂŒr Folgendes nĂŒtzlich:
| Anwendungsfall | Beschreibung |
|---|---|
| Umgehung geografischer Sperren | Zugriff auf OpenAI, Anthropic, Codex und Copilot aus gesperrten LĂ€ndern |
| IP-Rotation | Anfragen auf mehrere IPs verteilen, um Ratenbegrenzungen zu vermeiden |
| Datenschutz | Ihre tatsÀchliche IP-Adresse vor vorgelagerten Anbietern verbergen |
| Compliance | Datenverkehr durch bestimmte RechtsrÀume leiten |
| Tests | Anfragen aus verschiedenen Regionen simulieren |
ArchitekturĂŒbersicht
Abschnitt betitelt âArchitekturĂŒbersichtâââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ OmniRoute-Server ââ ââ âââââââââââââââ ââââââââââââââââ ââââââââââââââââââââ ââ â Proxy- â â Proxy- â â Proxy- â ââ â Registry âââââ¶â Dispatcher âââââ¶â Fetch (undici) â ââ â (SQLite) â â (gecacht) â â â ââ âââââââââââââââ ââââââââââââââââ ââââââââââŹââââââââââ ââ âČ â ââ â ⌠ââ ââââââââŽâââââââ ââââââââââââââââââââ ââ â 1proxy-Sync â â Vorgelagerte â ââ â (kostenloserâ â Anbieter-API â ââ â Pool) â â â ââ âââââââââââââââ ââââââââââââââââââââ ââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââHauptkomponenten
Abschnitt betitelt âHauptkomponentenâ| Komponente | Datei | Aufgabe |
|---|---|---|
| Proxy-Registry | src/lib/db/proxies.ts |
CRUD fĂŒr Proxy-EintrĂ€ge und Bereichszuweisungen |
| Proxy-Dispatcher | open-sse/utils/proxyDispatcher.ts |
Erstellt undici-ProxyAgent-/SOCKS-Dispatcher mit Caching |
| Proxy-Fetch | open-sse/utils/proxyFetch.ts |
UmschlieĂt fetch() und bindet einen Proxy-Dispatcher ein |
| Einstellungsroute | src/app/api/settings/proxy/route.ts |
Legacy-API zur Proxy-Konfiguration (GET/PUT/DELETE) |
| Verwaltungsroute | src/app/api/v1/management/proxies/route.ts |
Registry-CRUD-API (GET/POST/PATCH/DELETE) |
| 1proxy-Datenbank | src/lib/db/oneproxy.ts |
Persistenz fĂŒr den kostenlosen Proxy-Marktplatz |
4-stufiges Proxy-System
Abschnitt betitelt â4-stufiges Proxy-SystemâOmniRoute unterstĂŒtzt die Proxy-Konfiguration auf vier unabhĂ€ngigen Ebenen, die nach PrioritĂ€t aufgelöst werden:
PrioritĂ€tsreihenfolge der Auflösung (höchste â niedrigste):
1. đ” Konto-/Verbindungs-Proxy â pro API-SchlĂŒssel/OAuth-Verbindung 2. đĄ Anbieter-Proxy â pro Anbieter (z. B. gesamter OpenAI-Datenverkehr) 3. đ Kombinations-Proxy â pro Kombinations-/Routing-Konfiguration 4. đą Globaler Proxy â gesamter Datenverkehr, alle AnbieterFunktionsweise der Auflösung
Abschnitt betitelt âFunktionsweise der AuflösungâWenn OmniRoute eine Anfrage an einen Upstream-Anbieter sendet, ruft es resolveProxyForConnectionFromRegistry() auf, wodurch jede Ebene der Reihe nach geprĂŒft wird:
- Kontoebene â Ist dieser spezifischen Verbindungs-ID ein Proxy zugewiesen?
- Anbieterebene â Ist diesem Anbieter (z. B.
openai) ein Proxy zugewiesen? - Globale Ebene â Ist ein globaler Proxy konfiguriert?
- Kein Proxy â Direkte Verbindung zum Anbieter.
Der erste Treffer wird verwendet. Das bedeutet, dass Sie einen globalen Proxy als RĂŒckfalloption festlegen und ihn fĂŒr bestimmte Anbieter oder Verbindungen ĂŒberschreiben können.
Was ĂŒber einen Proxy geleitet wird
Abschnitt betitelt âWas ĂŒber einen Proxy geleitet wirdâ| Datenverkehrstyp | Ăber Proxy? | Hinweise |
|---|---|---|
| Chat-VervollstĂ€ndigungen | â | Alle /v1/chat/completions-Anfragen |
| Einbettungen | â | /v1/embeddings |
| Bilderzeugung | â | /v1/images/generations |
| Audio (TTS/STT) | â | /v1/audio/* |
| OAuth-Token-Austausch | â | Behebt unsupported_country_region_territory |
| Verbindungstests | â | Die SchaltflĂ€che âVerbindung testenâ verwendet den Proxy |
| Token-Aktualisierung | â | OAuth-Erneuerung im Hintergrund |
| Modellsynchronisierung | â | Modellauflistung und -erkennung |
Proxy-Registry (CRUD)
Abschnitt betitelt âProxy-Registry (CRUD)âDie Proxy-Registry ist eine SQLite-Tabelle (proxy_registry), in der alle Ihre Proxys gespeichert werden. Jeder Proxy verfĂŒgt ĂŒber folgende Felder:
| Feld | Typ | Beschreibung |
|---|---|---|
id |
UUID | Eindeutige Kennung |
name |
String | Benutzerfreundliche Bezeichnung |
type |
String | Protokoll: http, https, socks5 |
host |
String | Proxy-Hostname oder -IP-Adresse |
port |
Integer | Portnummer |
username |
String | Benutzername fĂŒr die Authentifizierung (verschlĂŒsselt gespeichert) |
password |
String | Passwort fĂŒr die Authentifizierung (verschlĂŒsselt gespeichert) |
region |
String | Bezeichnung der geografischen Region |
notes |
String | Freitextnotizen |
status |
String | active oder inactive |
source |
String | manual oder oneproxy |
Erstellen eines Proxys
Abschnitt betitelt âErstellen eines ProxysâĂber das Dashboard:
- Navigieren Sie zu Einstellungen â Proxy
- Klicken Sie auf Proxy hinzufĂŒgen
- Geben Sie Typ, Host, Port und optional die Anmeldedaten ein
- Speichern Sie die Angaben
Ăber die API:
curl -X POST http://localhost:20128/api/v1/management/proxies \ -H "Content-Type: application/json" \ -d '{ "name": "US Proxy", "type": "http", "host": "proxy.example.com", "port": 8080, "username": "user", "password": "pass", "region": "US" }'Aktualisieren eines Proxys
Abschnitt betitelt âAktualisieren eines Proxysâ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 }'Hinweis: Anmeldedaten bleiben erhalten, sofern Sie nicht ausdrĂŒcklich nicht leere Ersatzwerte senden. Wenn Sie leere Zeichenfolgen fĂŒr
username/passwordsenden, bleiben die gespeicherten Werte erhalten.
Löschen eines Proxys
Abschnitt betitelt âLöschen eines Proxysâ# SchlĂ€gt fehl, wenn der Proxy einer Ebene zugewiesen istcurl -X DELETE "http://localhost:20128/api/v1/management/proxies?id=proxy-uuid"
# Erzwingt das Löschen (entfernt auch Zuweisungen)curl -X DELETE "http://localhost:20128/api/v1/management/proxies?id=proxy-uuid&force=1"Auflisten von Proxys
Abschnitt betitelt âAuflisten von Proxysâcurl "http://localhost:20128/api/v1/management/proxies?limit=50&offset=0"Zuweisen von Proxys zu Ebenen
Abschnitt betitelt âZuweisen von Proxys zu Ebenenâ# Der globalen Ebene zuweisencurl -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}}'
# Einem bestimmten Anbieter zuweisencurl -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}}'
# Einer bestimmten Verbindung/einem bestimmten SchlĂŒssel zuweisencurl -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}}'Ermitteln des effektiven Proxys
Abschnitt betitelt âErmitteln des effektiven ProxysâPrĂŒfen Sie, welcher Proxy fĂŒr eine bestimmte Verbindung verwendet wĂŒrde:
curl "http://localhost:20128/api/settings/proxy?resolve=connection-uuid"Gibt den ermittelten Proxy mit seiner Ebene (account, provider oder global) und Quelle zurĂŒck.
Massenzuweisung
Abschnitt betitelt âMassenzuweisungâWeisen Sie einen Proxy gleichzeitig mehreren Anbietern oder Verbindungen zu:
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" }'Import/Export
Abschnitt betitelt âImport/ExportâProxys sind im Sicherungs-/Wiederherstellungssystem enthalten. Wenn Sie Ihre OmniRoute-Konfiguration exportieren:
- Navigieren Sie zu Dashboard â Einstellungen â Sicherung
- Klicken Sie auf Exportieren â die Proxy-Registry und die Zuweisungen sind enthalten
- Klicken Sie zum Wiederherstellen auf Importieren und laden Sie die Sicherungsdatei hoch
Die Proxy-Registry unterstĂŒtzt auĂerdem Upserts anhand von Host+Port â wenn Sie einen bereits vorhandenen Proxy importieren (gleicher Host und Port), wird dieser aktualisiert, anstatt ein Duplikat zu erstellen.
Migration von Altdaten
Abschnitt betitelt âMigration von AltdatenâWenn Sie Proxys in einer Ă€lteren Version (vor EinfĂŒhrung der Registry) konfiguriert haben, migriert OmniRoute diese automatisch:
Veralteter key_value-Speicher â proxy_registry + proxy_assignmentsDies erfolgt einmalig beim ersten Start nach dem Upgrade. Verwenden Sie migrateLegacyProxyConfigToRegistry({ force: true }), um die Migration erneut auszufĂŒhren.
1proxy â kostenloser Proxy-Marktplatz
Abschnitt betitelt â1proxy â kostenloser Proxy-MarktplatzâOmniRoute ist in die Community-Plattform 1proxy integriert und bietet Zugriff auf Hunderte kostenlose, validierte Proxys aus aller Welt. Dies ist ideal fĂŒr Benutzer, die keine eigene Proxy-Infrastruktur besitzen.
Funktionsweise
Abschnitt betitelt âFunktionsweiseââââââââââââââââ Synchronisieren âââââââââââââââââââ Rotieren âââââââââââââââââ 1proxy API â âââââââââââââââââ¶ â proxy_registry â âââââââââââ¶ â Anbieter-API ââ (extern) â bis zu 500 â source=oneproxy â nach â ââââââââââââââââ Proxys âââââââââââââââââââ QualitĂ€t ââââââââââââââââ- Synchronisieren â OmniRoute ruft validierte Proxys von der 1proxy API ab
- Speichern â Proxys werden in derselben Tabelle
proxy_registrymitsource = 'oneproxy'gespeichert - Filtern â Nach Protokoll, Land und QualitĂ€tsbewertung filtern
- Rotieren â Den besten Proxy anhand einer qualitĂ€tsbasierten, zufĂ€lligen oder sequenziellen Strategie auswĂ€hlen
- Automatisch herabstufen â Bei fehlgeschlagenen Proxys wird die QualitĂ€tsbewertung reduziert; unterhalb des Schwellenwerts â als inaktiv markiert
Proxys synchronisieren
Abschnitt betitelt âProxys synchronisierenâĂber das Dashboard:
- Navigieren Sie zur Registerkarte Settings â 1proxy
- Klicken Sie auf âSync Nowâ
- Zeigen Sie Statistiken an: Gesamtzahl der Proxys, Anzahl aktiver Proxys, durchschnittliche QualitĂ€t und AufschlĂŒsselung nach Land
Ăber die API:
# Synchronisierung auslösencurl -X POST http://localhost:20128/api/settings/oneproxy \ -H "Content-Type: application/json" \ -d '{}'
# Antwort:# { "success": true, "added": 127, "updated": 45, "failed": 2, "total": 172 }Proxys filtern
Abschnitt betitelt âProxys filternâ# Nach Protokoll filterncurl "http://localhost:20128/api/settings/oneproxy?protocol=socks5"
# Nach Land filterncurl "http://localhost:20128/api/settings/oneproxy?countryCode=US"
# Nach minimaler QualitÀtsbewertung filterncurl "http://localhost:20128/api/settings/oneproxy?minQuality=80"
# Filter kombinierencurl "http://localhost:20128/api/settings/oneproxy?protocol=http&countryCode=DE&minQuality=70"Proxy-QualitÀtsbewertungen
Abschnitt betitelt âProxy-QualitĂ€tsbewertungenâJeder Proxy von 1proxy enthĂ€lt Metadaten:
| Feld | Beschreibung |
|---|---|
qualityScore |
Bewertung von 0â100 aus der 1proxy-Validierung |
latencyMs |
Gemessene Netzwerklatenz |
anonymity |
transparent, anonymous oder elite |
googleAccess |
Gibt an, ob der Proxy auf Google-Dienste zugreifen kann |
countryCode |
Zweistelliger ISO-LĂ€ndercode |
lastValidated |
Zeitstempel der letzten Validierung |
QualitÀtsbewertungen werden dynamisch angepasst:
- Fehlgeschlagene Anfragen reduzieren die Bewertung um 10 Punkte
- Bewertung sinkt auf â€10 â Proxy wird als
inactivemarkiert - Inaktive Proxys werden von der Rotation ausgeschlossen
Rotationsstrategien
Abschnitt betitelt âRotationsstrategienâ# Nach QualitĂ€t rotieren (bester Proxy zuerst) â Standardcurl -X POST http://localhost:20128/api/settings/oneproxy/rotate \ -H "Content-Type: application/json" \ -d '{"strategy": "quality"}'
# ZufÀllige Rotationcurl -X POST http://localhost:20128/api/settings/oneproxy/rotate \ -d '{"strategy": "random"}'
# Sequenziell (zuletzt am lÀngsten nicht validierter Proxy zuerst)curl -X POST http://localhost:20128/api/settings/oneproxy/rotate \ -d '{"strategy": "sequential"}'Circuit Breaker
Abschnitt betitelt âCircuit BreakerâDie 1proxy-Synchronisierung verfĂŒgt ĂŒber einen integrierten Circuit Breaker:
- Nach 5 aufeinanderfolgenden Synchronisierungsfehlern werden weitere Synchronisierungsversuche blockiert
- ZurĂŒcksetzen mit:
resetOneproxyCircuitBreaker()oder durch einen Neustart des Servers - Der Synchronisierungsstatus ist unter
GET /api/settings/oneproxy?action=statusverfĂŒgbar
1proxy-Proxys löschen
Abschnitt betitelt â1proxy-Proxys löschenâ# Einen einzelnen 1proxy-Proxy löschencurl -X DELETE "http://localhost:20128/api/settings/oneproxy?id=proxy-uuid"
# ALLE 1proxy-Proxys löschen (manuelle Proxys bleiben unberĂŒhrt)curl -X DELETE "http://localhost:20128/api/settings/oneproxy?clearAll=1"Schutz vor Erkennung & Tarnung
Abschnitt betitelt âSchutz vor Erkennung & TarnungâOmniRoute leitet den Datenverkehr nicht nur ĂŒber einen Proxy â es lĂ€sst ihn auch legitim erscheinen:
TLS-Fingerprint-Spoofing
Abschnitt betitelt âTLS-Fingerprint-SpoofingâVerwendet wreq-js, um browserĂ€hnliche TLS-Fingerprints zu erzeugen und dadurch Bot-Erkennungssysteme zu umgehen, die TLS-Handshakes von Nicht-Browsern kennzeichnen.
CLI-Fingerprint-Abgleich
Abschnitt betitelt âCLI-Fingerprint-AbgleichâDer CLI-Fingerprint-Schalter (Einstellungen â Sicherheit) ordnet HTTP-Header und Felder im JSON-Textkörper neu an, um exakt der Signatur nativer CLI-BinĂ€rdateien (Claude Code, Codex usw.) zu entsprechen. Dies funktioniert zusĂ€tzlich zum Proxy:
Ihre IP (blockiert) â Proxy-IP (USA) â Anbieter-API + TLS-Spoofing + CLI-FingerprintSie erhalten gleichzeitig sowohl IP-Maskierung als auch AuthentizitĂ€t der Anfragen.
Beibehaltung der Proxy-IP
Abschnitt betitelt âBeibehaltung der Proxy-IPâFarbcodierte Badges im Dashboard zeigen an, welche Proxy-Ebene aktiv ist:
| Badge | Ebene | Bedeutung |
|---|---|---|
| đą | Global | Der gesamte Datenverkehr lĂ€uft ĂŒber diesen Proxy |
| đĄ | Anbieter | Nur der Datenverkehr dieses Anbieters wird weitergeleitet |
| đ” | Verbindung | Dieser spezifische SchlĂŒssel/dieses Konto verwendet diesen Proxy |
Das Badge zeigt zur ĂberprĂŒfung auĂerdem die aufgelöste Proxy-IP an.
Upstream-Proxy-Modi
Abschnitt betitelt âUpstream-Proxy-ModiâFĂŒr Anbieter, die das CLIProxyAPI-Muster verwenden, unterstĂŒtzt OmniRoute drei Upstream-Proxy-Modi:
| Modus | Beschreibung |
|---|---|
native |
OmniRoute ĂŒbernimmt das Proxy-Routing direkt (Standard) |
cliproxyapi |
Delegiert an eine externe CLIProxyAPI-Instanz |
fallback |
Versucht zuerst den nativen Modus und greift auf CLIProxyAPI zurĂŒck |
Konfiguration pro Anbieter:
curl -X PUT "http://localhost:20128/api/upstream-proxy/openai" \ -H "Content-Type: application/json" \ -d '{"mode": "native", "enabled": true}'Dashboard-BenutzeroberflÀche
Abschnitt betitelt âDashboard-BenutzeroberflĂ€cheâEinstellungen â Tab âProxyâ
Abschnitt betitelt âEinstellungen â Tab âProxyââ- Konfiguration des globalen Proxys (einmalig fĂŒr den gesamten Datenverkehr festlegen)
- Anbieterspezifische Proxy-Ăberschreibungen
- Verbindungsspezifische Proxy-Zuweisungen
- Verbindungstest ĂŒber den konfigurierten Proxy
- Farbcodierte Badges, die die aktive Proxy-Ebene anzeigen
Einstellungen â Tab â1proxyâ
Abschnitt betitelt âEinstellungen â Tab â1proxyââ- SchaltflĂ€che Jetzt synchronisieren, um kostenlose Proxys abzurufen
- Statistikkarten: Gesamt, Aktiv, Durchschnittliche QualitÀt, Letzte Synchronisierung
- Filter: Protokoll, LÀndercode, MindestqualitÀt
- Proxy-Tabelle mit Host, Protokoll, Land, QualitÀtsbewertung, Latenz, AnonymitÀt und Google-Zugriff
- Synchronisierungsstatus mit Nachverfolgung von Erfolgen/Fehlern und Anzahl aufeinanderfolgender Fehler
- Alle löschen, um sÀmtliche 1proxy-EintrÀge zu entfernen
API-Referenz
Abschnitt betitelt âAPI-ReferenzâAPI fĂŒr Proxy-Einstellungen
Abschnitt betitelt âAPI fĂŒr Proxy-Einstellungenâ| Methode | Endpunkt | Beschreibung |
|---|---|---|
GET |
/api/settings/proxy |
VollstÀndige Proxy-Konfiguration abrufen |
GET |
/api/settings/proxy?level=global |
Globalen Proxy abrufen |
GET |
/api/settings/proxy?level=provider&id=openai |
Anbieter-Proxy abrufen |
GET |
/api/settings/proxy?resolve=connectionId |
Effektiven Proxy auflösen |
PUT |
/api/settings/proxy |
Proxy-Konfiguration aktualisieren |
DELETE |
/api/settings/proxy?level=provider&id=openai |
Proxy auf dieser Ebene entfernen |
API fĂŒr die Proxy-Registrierung
Abschnitt betitelt âAPI fĂŒr die Proxy-Registrierungâ| Methode | Endpunkt | Beschreibung |
|---|---|---|
GET |
/api/v1/management/proxies |
Alle Proxys auflisten |
GET |
/api/v1/management/proxies?id=uuid |
Proxy anhand der ID abrufen |
GET |
/api/v1/management/proxies?id=uuid&where_used=1 |
Proxy-Zuweisungen abrufen |
POST |
/api/v1/management/proxies |
Proxy erstellen |
PATCH |
/api/v1/management/proxies |
Proxy aktualisieren |
DELETE |
/api/v1/management/proxies?id=uuid |
Proxy löschen |
DELETE |
/api/v1/management/proxies?id=uuid&force=1 |
Löschen erzwingen |
POST |
/api/v1/management/proxies/bulk-assign |
Massenzuweisung durchfĂŒhren |
GET |
/api/v1/management/proxies/assignments |
Zuweisungen auflisten |
GET |
/api/v1/management/proxies/health |
Proxy-Zustandsstatistiken abrufen |
Tunnel-API
Abschnitt betitelt âTunnel-APIâInformationen dazu, wie Sie Ihre OmniRoute-Instanz im öffentlichen Internet verfĂŒgbar machen können (Cloudflare/ngrok/Tailscale), anstatt ausgehenden Datenverkehr ĂŒber einen Proxy zu leiten, finden Sie unter TUNNELS_GUIDE.md. Die Tunnel-REST-API befindet sich unter /api/tunnels/{cloudflared,ngrok,tailscale}/* und ist unabhĂ€ngig von der oben dokumentierten ausgehenden Proxy-Kette.
1proxy-API
Abschnitt betitelt â1proxy-APIâ| Methode | Endpunkt | Beschreibung |
|---|---|---|
GET |
/api/settings/oneproxy |
1proxy-Proxys auflisten |
GET |
/api/settings/oneproxy?action=stats |
Statistiken und Synchronisierungsstatus abrufen |
GET |
/api/settings/oneproxy?action=status |
Nur den Synchronisierungsstatus abrufen |
POST |
/api/settings/oneproxy |
Synchronisierung auslösen |
POST |
/api/settings/oneproxy/rotate |
Zum nÀchsten Proxy wechseln |
DELETE |
/api/settings/oneproxy?id=uuid |
Einzelnen Eintrag löschen |
DELETE |
/api/settings/oneproxy?clearAll=1 |
Alle EintrÀge löschen |
Upstream-Proxy-API
Abschnitt betitelt âUpstream-Proxy-APIâ| Methode | Endpunkt | Beschreibung |
|---|---|---|
GET |
/api/upstream-proxy/:providerId |
Upstream-Proxy-Konfiguration abrufen |
PUT |
/api/upstream-proxy/:providerId |
Upstream-Proxy-Modus festlegen |
DELETE |
/api/upstream-proxy/:providerId |
Upstream-Proxy-Konfiguration entfernen |
Umgebungsvariablen
Abschnitt betitelt âUmgebungsvariablenâ| Variable | Standardwert | Beschreibung |
|---|---|---|
ENABLE_SOCKS5_PROXY |
true |
SOCKS5-Proxy-UnterstĂŒtzung aktivieren (Standardwert true in .env.example) |
Fehlerbehebung
Abschnitt betitelt âFehlerbehebungââSOCKS5-Proxy ist deaktiviertâ
Abschnitt betitelt ââSOCKS5-Proxy ist deaktiviertââSetzen Sie ENABLE_SOCKS5_PROXY=true in Ihrer .env-Datei und starten Sie neu.
âsocket hang upâ-Fehler bei Verwendung eines Proxys
Abschnitt betitelt ââsocket hang upâ-Fehler bei Verwendung eines ProxysâDies ist bei gĂŒnstigen Proxys, die inaktive Verbindungen trennen, normal. OmniRoute behandelt dies bereits folgendermaĂen:
- Keep-Alive wird fĂŒr Proxy-Verbindungen deaktiviert (
keepAliveTimeout: 1) - Pipelining wird deaktiviert (
pipelining: 0) - Dispatcher werden zwischengespeichert, um wiederholte Handshakes zu vermeiden
Falls das Problem weiterhin besteht, verwenden Sie einen anderen Proxy oder die Rotationsfunktion von 1proxy.
âunsupported_country_region_territoryâ wĂ€hrend OAuth
Abschnitt betitelt ââunsupported_country_region_territoryâ wĂ€hrend OAuthâStellen Sie sicher, dass der Proxy konfiguriert ist, bevor Sie den OAuth-Ablauf starten. OmniRoute leitet den Austausch von OAuth-Token ĂŒber den konfigurierten Proxy. Legen Sie zunĂ€chst einen globalen oder anbieterspezifischen Proxy fest und stellen Sie anschlieĂend die Verbindung her.
Proxy wird nicht verwendet
Abschnitt betitelt âProxy wird nicht verwendetâĂberprĂŒfen Sie die Auflösungsreihenfolge:
- PrĂŒfen Sie sie mit
GET /api/settings/proxy?resolve=your-connection-id - PrĂŒfen Sie, ob der Proxy-
statusaufactive(nichtinactive) gesetzt ist - Stellen Sie sicher, dass der Geltungsbereich der Proxy-Zuweisung mit Ihrer Verbindung ĂŒbereinstimmt
1proxy-Synchronisierung schlÀgt fehl
Abschnitt betitelt â1proxy-Synchronisierung schlĂ€gt fehlâPrĂŒfen Sie den Synchronisierungsstatus:
curl "http://localhost:20128/api/settings/oneproxy?action=status"Wenn consecutiveFailures >= 5 gilt, wurde der Schutzschalter ausgelöst. Starten Sie den Server neu, um ihn zurĂŒckzusetzen, oder warten Sie auf eine manuelle ZurĂŒcksetzung.
Datenbankschema
Abschnitt betitelt âDatenbankschemaâTabelle proxy_registry
Abschnitt betitelt âTabelle proxy_registryâCREATE TABLE proxy_registry ( id TEXT PRIMARY KEY, name TEXT NOT NULL, type TEXT NOT NULL DEFAULT 'http', host TEXT NOT NULL, port INTEGER NOT NULL, username TEXT DEFAULT '', password TEXT DEFAULT '', region TEXT, notes TEXT, status TEXT DEFAULT 'active', source TEXT NOT NULL DEFAULT 'manual', -- 'manual' oder 'oneproxy' quality_score INTEGER, -- 0â100 (nur 1proxy) latency_ms INTEGER, -- Millisekunden (nur 1proxy) anonymity TEXT, -- transparent/anonymous/elite google_access INTEGER DEFAULT 0, -- Zugriff auf Google möglich? (1proxy) last_validated TEXT, -- ISO-Zeitstempel (1proxy) country_code TEXT, -- zweistelliger ISO-Code (1proxy) created_at TEXT NOT NULL, updated_at TEXT NOT NULL);Tabelle proxy_assignments
Abschnitt betitelt âTabelle proxy_assignmentsâCREATE TABLE proxy_assignments ( id INTEGER PRIMARY KEY AUTOINCREMENT, proxy_id TEXT NOT NULL REFERENCES proxy_registry(id), scope TEXT NOT NULL, -- 'global', 'provider', 'account', 'combo' scope_id TEXT, -- Anbieter-ID, Verbindungs-ID oder Kombinations-ID created_at TEXT NOT NULL, updated_at TEXT NOT NULL, UNIQUE(scope, scope_id));Proxy-ZustandsprĂŒfung (v3.8.16+)
Abschnitt betitelt âProxy-ZustandsprĂŒfung (v3.8.16+)âDer Proxy-Fast-Fail-Mechanismus von OmniRoute (src/lib/proxyHealth.ts) erkennt nicht erreichbare Proxys durch eine schnelle TCP-VerbindungsprĂŒfung in <2s und speichert das Ergebnis anschlieĂend zwischen, um zusĂ€tzlichen Aufwand bei jeder Anfrage zu vermeiden.
Funktionsweise
Abschnitt betitelt âFunktionsweiseâAnfrage âââ¶ ProxyHealthCache.get(url) â ââ Cache-Treffer + aktuell? âââ¶ zwischengespeicherten Status zurĂŒckgeben â ââ Cache-Fehltreffer / veraltet? âââ¶ TCP-Verbindung zu host:port herstellen (ZeitĂŒberschreitung: FAST_FAIL_TIMEOUT_MS) âââ¶ fĂŒr HEALTH_CACHE_TTL_MS zwischenspeichern âââ¶ Ergebnis zurĂŒckgebenOhne diesen Mechanismus wĂŒrde ein nicht erreichbarer Proxy jede Anfrage fĂŒr die gesamte Dauer von PROXY_TIMEOUT_MS (standardmĂ€Ăig 30s) blockieren, bevor sie fehlschlĂ€gt.
Anpassbare Umgebungsvariablen
Abschnitt betitelt âAnpassbare Umgebungsvariablenâ| Variable | Standardwert | Zweck |
|---|---|---|
PROXY_FAST_FAIL_TIMEOUT_MS |
2000 |
TCP-VerbindungszeitĂŒberschreitung pro ZustandsprĂŒfung |
PROXY_HEALTH_CACHE_TTL_MS |
30000 |
Dauer der Zwischenspeicherung eines Zustandsergebnisses |
Empfohlene Werte:
| Szenario | Fast-Fail-ZeitĂŒberschreitung | Cache-TTL | BegrĂŒndung |
|---|---|---|---|
| API-Gateway mit hohem Durchsatz | 1500ms | 60000ms | Aggressives schnelles Fehlschlagen, lĂ€ngerer Cache zur Reduzierung der PrĂŒfungen |
| Geografisch verteilte Knoten | 3000ms | 15000ms | Langsamere Netzwerke benötigen mehr Zeit; kĂŒrzerer Cache fĂŒr schnelles Failover |
| Entwicklung/Test | 1000ms | 10000ms | Schnelle Iteration mit lokalen Proxys |
| Tarnung/Erkennungsvermeidung | 2500ms | 45000ms | Schnelle Abfragen vermeiden, die Ratenbegrenzungen auslösen könnten |
ĂberprĂŒfen des Proxy-Zustands
Abschnitt betitelt âĂberprĂŒfen des Proxy-Zustandsâimport { getAllProxyHealthStatuses, invalidateProxyHealth } from "omniroute/proxyHealth";
const statuses = getAllProxyHealthStatuses();for (const s of statuses) { console.log(`${s.proxyUrl} â healthy=${s.healthy}, stale=${s.stale}`);}
// Erneute PrĂŒfung eines bestimmten Proxys erzwingeninvalidateProxyHealth("http://user:pass@203.0.113.7:8080");Das Flag stale ist true, wenn der Cache-Eintrag HEALTH_CACHE_TTL_MS ĂŒberschritten hat und die nĂ€chste Anfrage eine erneute PrĂŒfung auslöst.
Standards nach Proxy-Typ
Abschnitt betitelt âStandards nach Proxy-TypâDie ZustandsprĂŒfung verwendet abhĂ€ngig vom URL-Schema sinnvolle Standardwerte:
| Schema | Standardport |
|---|---|
http:// |
8080 |
https:// |
443 |
socks5:// / socks5h:// |
1080 |
Benutzerdefinierte Ports in der URL (http://host:9999) haben stets Vorrang vor dem Standardwert des Schemas.
Proxy-Analyse & Beobachtbarkeit
Abschnitt betitelt âProxy-Analyse & BeobachtbarkeitâOmniRoute erfasst die Nutzung pro Proxy, damit Betreiber Routing-Muster, Latenzspitzen und wiederkehrende Fehler diagnostizieren können.
Erfasste Daten
Abschnitt betitelt âErfasste DatenâFĂŒr jede Anfrage ĂŒber einen konfigurierten Proxy zeichnet OmniRoute Folgendes auf:
| Metrik | Beschreibung |
|---|---|
proxy_url |
VollstÀndige Proxy-URL (Anmeldedaten maskiert) |
provider |
ID des Upstream-Anbieters (openai, anthropic usw.) |
latency_ms |
Gesamte Umlaufzeit einschlieĂlich Proxy-Handshake |
connect_ms |
Nur die Dauer des TCP-Verbindungsaufbaus |
status |
HTTP-Statuscode vom Upstream |
error |
Fehlerklasse, falls die Anfrage fehlgeschlagen ist |
timestamp |
ISO 8601 UTC |
Zugriff auf die Daten
Abschnitt betitelt âZugriff auf die Datenâ# Neueste Proxy-Ereignissecurl -H "Authorization: Bearer $OMNIROUTE_KEY" \ "http://localhost:20128/api/usage/proxy-logs?limit=100"Der tatsĂ€chliche Endpunkt ist /api/usage/proxy-logs (siehe src/app/api/usage/proxy-logs/route.ts). Dieser Endpunkt unterstĂŒtzt:
GET /api/usage/proxy-logsâ Proxy-Protokolle abrufenDELETE /api/usage/proxy-logsâ alle Proxy-Protokolle löschen
Aggregierte Statistiken können bei Bedarf direkt per SQL aus der Tabelle proxy_logs abgefragt werden. Die Dashboard-BenutzeroberflÀche kann aggregierte Ansichten bereitstellen.
HĂ€ufige Muster
Abschnitt betitelt âHĂ€ufige MusterâEinen instabilen Proxy erkennen (wechselt zwischen Erfolg und Fehlschlag):
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_pctFROM proxy_logsWHERE timestamp > datetime('now', '-1 hour')GROUP BY proxy_urlHAVING error_pct > 5ORDER BY error_pct DESC;Langsame Proxys finden (p95-Latenz > 2 s):
WITH ranked AS ( SELECT proxy_url, latency_ms, PERCENT_RANK() OVER (PARTITION BY proxy_url ORDER BY latency_ms) AS pct FROM proxy_logs WHERE timestamp > datetime('now', '-24 hour'))SELECT proxy_url, latency_msFROM rankedWHERE pct >= 0.95ORDER BY latency_ms DESC;Entscheidungsbaum fĂŒr die Rotationsstrategie
Abschnitt betitelt âEntscheidungsbaum fĂŒr die RotationsstrategieâWenn einem Geltungsbereich mehrere Proxys zugewiesen sind, verwendet OmniRoute eine Rotationsstrategie, um auszuwĂ€hlen, welcher Proxy fĂŒr die jeweilige Anfrage verwendet wird. Die Strategie wird auf Ebene des Geltungsbereichs konfiguriert (global, pro Anbieter, pro Konto, pro Kombination).
VerfĂŒgbare Strategien
Abschnitt betitelt âVerfĂŒgbare Strategienâ| Strategie | Empfohlener Einsatzbereich | AbwĂ€gung |
|---|---|---|
quality (Standard) |
Produktion mit Proxys unterschiedlicher QualitÀt | Bevorzugt hoch bewertete Proxys; kann niedrig bewertete benachteiligen |
random |
Lastverteilung, Datenschutz | GleichmĂ€Ăige Verteilung; ignoriert QualitĂ€tssignale |
sequential |
Debugging, deterministische Tests | DurchlÀuft Proxys der Reihe nach; leicht nachvollziehbar |
Entscheidungsbaum
Abschnitt betitelt âEntscheidungsbaumâ VerfĂŒgen Ihre Proxys ĂŒber QualitĂ€tsbewertungen? â âââââââââââââŽââââââââââââ â â JA NEIN â â Sind alle Proxys â qualitativ ungefĂ€hr â gleichwertig? â â â ââââââŽâââââ â â â â JA NEIN `random` â â verwenden â â (gleichmĂ€Ăige â â Verteilung baut â â mit der Zeit â â QualitĂ€tsdaten auf) â â â `quality` verwenden â (am besten bei â gemischter QualitĂ€t) â`random` verwenden(Last gleichmĂ€Ăigverteilen)Automatischer Ausschluss ausgefallener eigener Proxys
Abschnitt betitelt âAutomatischer Ausschluss ausgefallener eigener ProxysâDer 1proxy-Marktplatz-Pool stuft ausgefallene Proxys bereits automatisch herab (siehe
Proxy-QualitĂ€tsbewertungen). FĂŒr Proxys, die Sie zur Registry hinzugefĂŒgt haben, bietet der Hintergrund-Scheduler fĂŒr ZustandsprĂŒfungen
(src/lib/proxyHealth/scheduler.ts) dasselbe Verhalten zum automatischen AusschlieĂen
eines ausgefallenen Mitglieds aus der Kette, ohne etwas zu löschen:
# .env â einen Proxy nach 3 aufeinanderfolgenden fehlgeschlagenen PrĂŒfungen vorĂŒbergehend deaktivieren und# ihn automatisch wieder aktivieren, sobald er erneut auf PrĂŒfungen antwortet.PROXY_AUTO_DISABLE=truePROXY_AUTO_REMOVE_AFTER=3So funktioniert dies in einer Kette mit mehreren Proxys:
- Der Scheduler prĂŒft jeden registrierten Proxy alle
PROXY_HEALTH_INTERVAL_MS(standardmĂ€Ăig 10 Min.; mindestens 1 Min.). - Nach
PROXY_AUTO_REMOVE_AFTERaufeinanderfolgenden eindeutigen Fehlern (einem tatsĂ€chlichen Verbindungsfehler â ein Timeout oder ein eigener 5xx-Fehler des PrĂŒfungsziels zĂ€hlt nie, siehe Proxy-ZustandsprĂŒfung) wird derstatusdes Proxys aufdeadgesetzt. deadist einer der Statuswerte, die der bei der Pool-/Rotationsauflösung verwendete Aktivstatusfilter ausschlieĂt. Daher weist die Rotation eines Geltungsbereichs (Round-Robin / zufĂ€llig / persistent / Latenz â siehe Entscheidungsbaum fĂŒr Rotationsstrategien) diesen Proxy sofort keinen neuen Anfragen mehr zu. Andere Proxys im Pool sind davon nicht betroffen, und der gesamte Pool greift niemals unbemerkt auf eine direkte Verbindung zurĂŒck â siehe die Fail-Closed-Schutzvorrichtung im 4-stufigen Proxy-System.- Der Scheduler prĂŒft
dead-Proxys weiterhin im selben Intervall. Bei der nĂ€chsten erfolgreichen PrĂŒfung wird derstatuswieder aufactivegesetzt und der Proxy erneut in die Rotation aufgenommen â ein manuelles erneutes HinzufĂŒgen ist nicht erforderlich.
Dies ist bewusst optional und nicht destruktiv: StandardmĂ€Ăig zĂ€hlt und
protokolliert der Scheduler lediglich Fehler (siehe Richtlinie C in decision.ts), und PROXY_AUTO_DISABLE
löscht niemals eine Zeile â dafĂŒr ist das separate, aggressivere Flag
PROXY_AUTO_REMOVE vorgesehen. Wenn beide auf true gesetzt sind, hat PROXY_AUTO_REMOVE
Vorrang (bei einem Proxy, der ohnehin gelöscht wird, ist eine zwischenzeitliche vorĂŒbergehende Deaktivierung nicht sinnvoll). Die vollstĂ€ndige
Variablenliste finden Sie in der Referenz zur
Umgebungskonfiguration.
đ Verwandte Dokumentation:
- Benutzerhandbuch â Allgemeine Einrichtung und Konfiguration
- API-Referenz â VollstĂ€ndige API-Dokumentation
- Umgebungskonfiguration â Alle Umgebungsvariablen
HagiCode
HagiCode ist ein agentischer Coding-Arbeitsplatz mit strukturierten Workflows, Multi-Agent-AusfĂŒhrung und Hero-Dungeon-Ansichten.
Mit einem intelligenteren, schnelleren und unterhaltsameren agentischen Workflow wird aus Ideen nutzbare Software.

- SmartStrukturierte Workflows machen aus Absichten einen umsetzbaren Weg von der Idee bis zur Auslieferung.
- EfficientMulti-Agent-Workflows fĂŒhren Recherche, Umsetzung und PrĂŒfung parallel aus.
- FunHero Dungeon macht lange Coding-Sitzungen anschaulich und gemeinschaftlich.