đ OmniRoute Proxy Guide (Français)
Table des matiĂšres
Section intitulée « Table des matiÚres »- Pourquoi utiliser des proxys ?
- Vue dâensemble de lâarchitecture
- SystĂšme de proxy Ă 4 niveaux
- Registre des proxys (CRUD)
- Place de marché gratuite 1proxy
- Rotation des proxys
- Antidétection et discrétion
- Modes de proxy en amont
- Interface du tableau de bord
- RĂ©fĂ©rence de lâAPI
- Variables dâenvironnement
- Dépannage
Pourquoi utiliser des proxys ?
Section intitulĂ©e « Pourquoi utiliser des proxys ? »De nombreux fournisseurs dâIA limitent lâaccĂšs selon la rĂ©gion gĂ©ographique. Les dĂ©veloppeurs en Russie, Chine, Iran, Cuba, Turquie et dans dâautres pays rencontrent des erreurs telles que :
unsupported_country_region_territoryMĂȘme en dehors des rĂ©gions bloquĂ©es, les proxys sont utiles pour :
| Cas dâutilisation | Description |
|---|---|
| Contournement géographique | Accéder à OpenAI, Anthropic, Codex et Copilot depuis des pays bloqués |
| Rotation des adresses IP | RĂ©partir les requĂȘtes entre plusieurs adresses IP afin dâĂ©viter la limitation de dĂ©bit |
| Confidentialité | Masquer votre véritable adresse IP aux fournisseurs en amont |
| Conformité | Acheminer le trafic via des juridictions spécifiques |
| Tests | Simuler des requĂȘtes provenant de diffĂ©rentes rĂ©gions |
Vue dâensemble de lâarchitecture
Section intitulĂ©e « Vue dâensemble de lâarchitecture »ââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ Serveur OmniRoute ââ ââ âââââââââââââââ ââââââââââââââââ ââââââââââââââââââââ ââ â Registre â â RĂ©partiteur â â RĂ©cupĂ©ration â ââ â des proxys âââââ¶â de proxys âââââ¶â (undici) â ââ â (SQLite) â â (en cache) â â â ââ âââââââââââââââ ââââââââââââââââ ââââââââââŹââââââââââ ââ âČ â ââ â ⌠ââ ââââââââŽâââââââ ââââââââââââââââââââ ââ â Synchro. â â API du â ââ â 1proxy â â fournisseur â ââ â (pool grat.)â â en amont â ââ âââââââââââââââ ââââââââââââââââââââ ââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââComposants principaux
Section intitulée « Composants principaux »| Composant | Fichier | RÎle |
|---|---|---|
| Registre des proxys | src/lib/db/proxies.ts |
Opérations CRUD sur les entrées de proxy et affectations de portée |
| Répartiteur de proxys | open-sse/utils/proxyDispatcher.ts |
Crée des répartiteurs ProxyAgent/SOCKS undici avec mise en cache |
| Récupération par proxy | open-sse/utils/proxyFetch.ts |
Encapsule fetch() avec lâinjection dâun rĂ©partiteur de proxys |
| Route des paramĂštres | src/app/api/settings/proxy/route.ts |
API héritée de configuration des proxys (GET/PUT/DELETE) |
| Route de gestion | src/app/api/v1/management/proxies/route.ts |
API CRUD du registre (GET/POST/PATCH/DELETE) |
| BD 1proxy | src/lib/db/oneproxy.ts |
Persistance de la place de marché de proxys gratuits |
SystĂšme de proxy Ă 4 niveaux
Section intitulée « SystÚme de proxy à 4 niveaux »OmniRoute prend en charge la configuration des proxys à quatre niveaux indépendants, résolus par ordre de priorité :
Ordre de résolution des priorités (de la plus élevée à la plus faible) :
1. đ” Proxy de compte/connexion â par clĂ© API / connexion OAuth 2. đĄ Proxy de fournisseur â par fournisseur (p. ex., tout le trafic OpenAI) 3. đ Proxy de combinaison â par combinaison/configuration de routage 4. đą Proxy global â tout le trafic, tous les fournisseursFonctionnement de la rĂ©solution
Section intitulĂ©e « Fonctionnement de la rĂ©solution »LorsquâOmniRoute envoie une requĂȘte Ă un fournisseur en amont, il appelle resolveProxyForConnectionFromRegistry(), qui vĂ©rifie chaque niveau dans lâordre :
- Niveau du compte â Un proxy est-il attribuĂ© Ă cet identifiant de connexion spĂ©cifique ?
- Niveau du fournisseur â Un proxy est-il attribuĂ© Ă ce fournisseur (p. ex.,
openai) ? - Niveau global â Un proxy global est-il configurĂ© ?
- Aucun proxy â Connexion directe au fournisseur.
La premiÚre correspondance est retenue. Vous pouvez donc définir un proxy global comme solution de repli, puis le remplacer pour certains fournisseurs ou certaines connexions.
Trafic passant par le proxy
Section intitulée « Trafic passant par le proxy »| Type de trafic | Via le proxy ? | Remarques |
|---|---|---|
| ComplĂ©tions de chat | â | Toutes les requĂȘtes /v1/chat/completions |
| Embeddings | â | /v1/embeddings |
| GĂ©nĂ©ration dâimages | â | /v1/images/generations |
| Audio (TTS/STT) | â | /v1/audio/* |
| Ăchange de jetons OAuth | â | RĂ©sout unsupported_country_region_territory |
| Tests de connexion | â | Le bouton « Tester la connexion » utilise le proxy |
| Actualisation des jetons | â | Renouvellement OAuth en arriĂšre-plan |
| Synchronisation des modĂšles | â | Liste et dĂ©couverte des modĂšles |
Registre des proxys (CRUD)
Section intitulée « Registre des proxys (CRUD) »Le registre des proxys est une table SQLite (proxy_registry) qui stocke tous vos proxys. Chaque proxy possÚde les champs suivants :
| Champ | Type | Description |
|---|---|---|
id |
UUID | Identifiant unique |
name |
ChaĂźne | LibellĂ© lisible par lâutilisateur |
type |
ChaĂźne | Protocole : http, https, socks5 |
host |
ChaĂźne | Nom dâhĂŽte ou adresse IP du proxy |
port |
Entier | Numéro de port |
username |
ChaĂźne | Nom dâutilisateur dâauthentification (chiffrĂ© au repos) |
password |
ChaĂźne | Mot de passe dâauthentification (chiffrĂ© au repos) |
region |
Chaßne | Libellé de la région géographique |
notes |
ChaĂźne | Notes en texte libre |
status |
ChaĂźne | active ou inactive |
source |
ChaĂźne | manual ou oneproxy |
CrĂ©ation dâun proxy
Section intitulĂ©e « CrĂ©ation dâun proxy »Via le tableau de bord :
- AccĂ©dez Ă ParamĂštres â Proxy
- Cliquez sur Ajouter un proxy
- Renseignez le type, lâhĂŽte, le port et, facultativement, les identifiants dâauthentification
- Enregistrez
Via lâ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" }'Mise Ă jour dâun proxy
Section intitulĂ©e « Mise Ă jour dâun proxy »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 }'Remarque : Les identifiants sont conservĂ©s, sauf si vous envoyez explicitement des valeurs de remplacement non vides. Lâenvoi de chaĂźnes vides pour
username/passwordconservera les valeurs stockées.
Suppression dâun proxy
Section intitulĂ©e « Suppression dâun proxy »# Ăchoue si le proxy est attribuĂ© Ă un niveau quelconquecurl -X DELETE "http://localhost:20128/api/v1/management/proxies?id=proxy-uuid"
# Force la suppression (supprime également les attributions)curl -X DELETE "http://localhost:20128/api/v1/management/proxies?id=proxy-uuid&force=1"Liste des proxys
Section intitulée « Liste des proxys »curl "http://localhost:20128/api/v1/management/proxies?limit=50&offset=0"Attribution de proxys aux niveaux
Section intitulée « Attribution de proxys aux niveaux »# Attribuer au niveau globalcurl -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}}'
# Attribuer à un fournisseur spécifiquecurl -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}}'
# Attribuer à une connexion/clé spécifiquecurl -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}}'Résolution du proxy effectif
Section intitulée « Résolution du proxy effectif »Vérifiez quel proxy serait utilisé pour une connexion donnée :
curl "http://localhost:20128/api/settings/proxy?resolve=connection-uuid"Renvoie le proxy résolu avec son niveau (account, provider ou global) et sa source.
Attribution groupée
Section intitulée « Attribution groupée »Attribuez un proxy à plusieurs fournisseurs ou connexions à la fois :
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" }'Importation/Exportation
Section intitulée « Importation/Exportation »Les proxys sont inclus dans le systÚme de sauvegarde/restauration. Lorsque vous exportez votre configuration OmniRoute :
- AccĂ©dez Ă Tableau de bord â ParamĂštres â Sauvegarde
- Cliquez sur Exporter â le registre des proxys et les attributions sont inclus
- Pour effectuer une restauration, cliquez sur Importer et chargez le fichier de sauvegarde
Le registre des proxys prend Ă©galement en charge lâupsert par host+port â si vous importez un proxy qui existe dĂ©jĂ (mĂȘmes hĂŽte et port), il est mis Ă jour au lieu de crĂ©er un doublon.
Migration de lâancien systĂšme
Section intitulĂ©e « Migration de lâancien systĂšme »Si vous avez configurĂ© des proxys dans une ancienne version (antĂ©rieure au registre), OmniRoute les migre automatiquement :
Ancien stockage key_value â proxy_registry + proxy_assignmentsCette opĂ©ration sâeffectue une seule fois, au premier dĂ©marrage aprĂšs la mise Ă niveau. Utilisez migrateLegacyProxyConfigToRegistry({ force: true }) pour la relancer.
Marché gratuit de proxies 1proxy
Section intitulĂ©e « MarchĂ© gratuit de proxies 1proxy »OmniRoute sâintĂšgre Ă la plateforme communautaire 1proxy pour fournir un accĂšs Ă des centaines de proxies gratuits et validĂ©s provenant du monde entier. Cette solution est idĂ©ale pour les utilisateurs qui ne disposent pas de leur propre infrastructure de proxies.
Fonctionnement
Section intitulĂ©e « Fonctionnement »âââââââââââââââ Synchronisation âââââââââââââââââââ Rotation ââââââââââââââââ API 1proxy â âââââââââââââââââ¶ â proxy_registry â âââââââââââââââ¶ â Fournisseur ââ (externe) â jusquâĂ 500 â source=oneproxy â par qualitĂ© â API ââââââââââââââââ proxies âââââââââââââââââââ âââââââââââââââ- Synchronisation â OmniRoute rĂ©cupĂšre les proxies validĂ©s depuis lâAPI 1proxy
- Stockage â Les proxies sont enregistrĂ©s dans la mĂȘme table
proxy_registryavecsource = 'oneproxy' - Filtrage â Filtrez par protocole, pays et score de qualitĂ©
- Rotation â SĂ©lectionnez le meilleur proxy Ă lâaide dâune stratĂ©gie basĂ©e sur la qualitĂ©, alĂ©atoire ou sĂ©quentielle
- DĂ©gradation automatique â Le score de qualitĂ© des proxies dĂ©faillants est rĂ©duit ; sâil passe sous le seuil, ils sont marquĂ©s comme inactifs
Synchronisation des proxies
Section intitulée « Synchronisation des proxies »Via le tableau de bord :
- AccĂ©dez Ă lâonglet Settings â 1proxy
- Cliquez sur « Sync Now »
- Consultez les statistiques : nombre total de proxies, nombre de proxies actifs, qualité moyenne et répartition par pays
Via lâAPI :
# Déclencher la synchronisationcurl -X POST http://localhost:20128/api/settings/oneproxy \ -H "Content-Type: application/json" \ -d '{}'
# Réponse :# { "success": true, "added": 127, "updated": 45, "failed": 2, "total": 172 }Filtrage des proxies
Section intitulée « Filtrage des proxies »# Filtrer par protocolecurl "http://localhost:20128/api/settings/oneproxy?protocol=socks5"
# Filtrer par payscurl "http://localhost:20128/api/settings/oneproxy?countryCode=US"
# Filtrer par score de qualité minimalcurl "http://localhost:20128/api/settings/oneproxy?minQuality=80"
# Combiner les filtrescurl "http://localhost:20128/api/settings/oneproxy?protocol=http&countryCode=DE&minQuality=70"Scores de qualité des proxies
Section intitulée « Scores de qualité des proxies »Chaque proxy 1proxy est accompagné de métadonnées :
| Champ | Description |
|---|---|
qualityScore |
Note de 0 Ă 100 issue de la validation de 1proxy |
latencyMs |
Latence réseau mesurée |
anonymity |
transparent, anonymous ou elite |
googleAccess |
Indique si le proxy peut accéder aux services de Google |
countryCode |
Code pays ISO Ă deux lettres |
lastValidated |
Horodatage de la derniĂšre validation |
Les scores de qualité sont ajustés dynamiquement :
- Les requĂȘtes ayant Ă©chouĂ© rĂ©duisent le score de 10 points
- Le score tombe Ă â€10 â le proxy est marquĂ© comme
inactive - Les proxies inactifs sont exclus de la rotation
Stratégies de rotation
Section intitulĂ©e « StratĂ©gies de rotation »# Rotation par qualitĂ© (meilleur proxy en premier) â stratĂ©gie par dĂ©fautcurl -X POST http://localhost:20128/api/settings/oneproxy/rotate \ -H "Content-Type: application/json" \ -d '{"strategy": "quality"}'
# Rotation aléatoirecurl -X POST http://localhost:20128/api/settings/oneproxy/rotate \ -d '{"strategy": "random"}'
# Rotation séquentielle (proxy validé le moins récemment en premier)curl -X POST http://localhost:20128/api/settings/oneproxy/rotate \ -d '{"strategy": "sequential"}'Coupe-circuit
Section intitulĂ©e « Coupe-circuit »La synchronisation avec 1proxy dispose dâun coupe-circuit intĂ©grĂ© :
- AprÚs 5 échecs de synchronisation consécutifs, les tentatives de synchronisation suivantes sont bloquées
- Réinitialisez-le avec :
resetOneproxyCircuitBreaker()ou redĂ©marrez le serveur - LâĂ©tat de la synchronisation est disponible Ă lâadresse
GET /api/settings/oneproxy?action=status
Suppression des proxies 1proxy
Section intitulée « Suppression des proxies 1proxy »# Supprimer un seul proxy 1proxycurl -X DELETE "http://localhost:20128/api/settings/oneproxy?id=proxy-uuid"
# Supprimer TOUS les proxies 1proxy (les proxies manuels ne sont pas affectés)curl -X DELETE "http://localhost:20128/api/settings/oneproxy?clearAll=1"Antidétection et furtivité
Section intitulĂ©e « AntidĂ©tection et furtivitĂ© »OmniRoute ne se contente pas dâacheminer le trafic via un proxy â il lui donne une apparence lĂ©gitime :
Usurpation de lâempreinte TLS
Section intitulĂ©e « Usurpation de lâempreinte TLS »Utilise wreq-js pour gĂ©nĂ©rer des empreintes TLS similaires Ă celles des navigateurs, contournant ainsi les systĂšmes de dĂ©tection des bots qui signalent les nĂ©gociations TLS ne provenant pas dâun navigateur.
Correspondance de lâempreinte CLI
Section intitulĂ©e « Correspondance de lâempreinte CLI »Le bouton dâactivation de lâempreinte CLI (ParamĂštres â SĂ©curitĂ©) rĂ©organise les en-tĂȘtes HTTP et les champs du corps JSON pour correspondre exactement Ă la signature des binaires CLI natifs (Claude Code, Codex, etc.). Cette fonctionnalitĂ© sâapplique en complĂ©ment du proxy :
Votre IP (bloquĂ©e) â IP du proxy (Ătats-Unis) â API du fournisseur + usurpation TLS + empreinte CLIVous bĂ©nĂ©ficiez simultanĂ©ment du masquage de lâadresse IP et de lâauthenticitĂ© des requĂȘtes.
PrĂ©servation de lâadresse IP du proxy
Section intitulĂ©e « PrĂ©servation de lâadresse IP du proxy »Des badges Ă code couleur dans le tableau de bord indiquent le niveau de proxy actif :
| Badge | Niveau | Signification |
|---|---|---|
| đą | Global | Tout le trafic transite par ce proxy |
| đĄ | Fournisseur | Seul le trafic de ce fournisseur transite par ce proxy |
| đ” | Connexion | Cette clĂ© ou ce compte spĂ©cifique utilise ce proxy |
Le badge affiche Ă©galement lâadresse IP rĂ©solue du proxy Ă des fins de vĂ©rification.
Modes de proxy en amont
Section intitulée « Modes de proxy en amont »Pour les fournisseurs qui utilisent le modÚle CLIProxyAPI, OmniRoute prend en charge trois modes de proxy en amont :
| Mode | Description |
|---|---|
native |
OmniRoute gÚre directement le routage par proxy (par défaut) |
cliproxyapi |
DélÚgue le routage à une instance CLIProxyAPI externe |
fallback |
Essaie dâabord le mode natif, puis se rabat sur CLIProxyAPI |
Configuration par fournisseur :
curl -X PUT "http://localhost:20128/api/upstream-proxy/openai" \ -H "Content-Type: application/json" \ -d '{"mode": "native", "enabled": true}'Interface du tableau de bord
Section intitulĂ©e « Interface du tableau de bord »ParamĂštres â Onglet Proxy
Section intitulĂ©e « ParamĂštres â Onglet Proxy »- Configuration du proxy global (dĂ©finie une seule fois pour tout le trafic)
- Remplacements du proxy par fournisseur
- Affectations de proxy par connexion
- Test de connexion via le proxy configuré
- Badges Ă code couleur indiquant le niveau de proxy actif
ParamĂštres â Onglet 1proxy
Section intitulĂ©e « ParamĂštres â Onglet 1proxy »- Bouton Synchroniser maintenant pour rĂ©cupĂ©rer des proxys gratuits
- Cartes de statistiques : total, actifs, qualité moyenne, derniÚre synchronisation
- Filtres : protocole, code pays, qualité minimale
- Tableau des proxys avec lâhĂŽte, le protocole, le pays, le score de qualitĂ©, la latence, lâanonymat et lâaccĂšs Ă Google
- Panneau dâĂ©tat de la synchronisation avec suivi des rĂ©ussites et des Ă©checs, ainsi que le nombre dâĂ©checs consĂ©cutifs
- Tout effacer pour supprimer toutes les entrées 1proxy
RĂ©fĂ©rence de lâAPI
Section intitulĂ©e « RĂ©fĂ©rence de lâAPI »API des paramĂštres de proxy
Section intitulée « API des paramÚtres de proxy »| Méthode | Point de terminaison | Description |
|---|---|---|
GET |
/api/settings/proxy |
Obtenir la configuration complĂšte |
GET |
/api/settings/proxy?level=global |
Obtenir le proxy global |
GET |
/api/settings/proxy?level=provider&id=openai |
Obtenir le proxy du fournisseur |
GET |
/api/settings/proxy?resolve=connectionId |
Résoudre le proxy effectif |
PUT |
/api/settings/proxy |
Mettre Ă jour la configuration |
DELETE |
/api/settings/proxy?level=provider&id=openai |
Supprimer le proxy Ă ce niveau |
API du registre des proxys
Section intitulée « API du registre des proxys »| Méthode | Point de terminaison | Description |
|---|---|---|
GET |
/api/v1/management/proxies |
Répertorier tous les proxys |
GET |
/api/v1/management/proxies?id=uuid |
Obtenir un proxy par ID |
GET |
/api/v1/management/proxies?id=uuid&where_used=1 |
Obtenir les affectations du proxy |
POST |
/api/v1/management/proxies |
Créer un proxy |
PATCH |
/api/v1/management/proxies |
Mettre Ă jour un proxy |
DELETE |
/api/v1/management/proxies?id=uuid |
Supprimer un proxy |
DELETE |
/api/v1/management/proxies?id=uuid&force=1 |
Forcer la suppression |
POST |
/api/v1/management/proxies/bulk-assign |
Effectuer une affectation en masse |
GET |
/api/v1/management/proxies/assignments |
Répertorier les affectations |
GET |
/api/v1/management/proxies/health |
Obtenir les statistiques dâĂ©tat |
API des tunnels
Section intitulĂ©e « API des tunnels »Pour exposer votre instance OmniRoute Ă lâInternet public (Cloudflare/ngrok/Tailscale) au lieu dâacheminer le trafic sortant via un proxy, consultez TUNNELS_GUIDE.md. LâAPI REST des tunnels se trouve sous /api/tunnels/{cloudflared,ngrok,tailscale}/* et est indĂ©pendante de la chaĂźne de proxys sortants documentĂ©e ci-dessus.
API 1proxy
Section intitulée « API 1proxy »| Méthode | Point de terminaison | Description |
|---|---|---|
GET |
/api/settings/oneproxy |
Répertorier les proxys 1proxy |
GET |
/api/settings/oneproxy?action=stats |
Obtenir les statistiques et lâĂ©tat de synchro. |
GET |
/api/settings/oneproxy?action=status |
Obtenir uniquement lâĂ©tat de synchronisation |
POST |
/api/settings/oneproxy |
Déclencher la synchronisation |
POST |
/api/settings/oneproxy/rotate |
Passer au proxy suivant |
DELETE |
/api/settings/oneproxy?id=uuid |
En supprimer un |
DELETE |
/api/settings/oneproxy?clearAll=1 |
Tout effacer |
API du proxy en amont
Section intitulée « API du proxy en amont »| Méthode | Point de terminaison | Description |
|---|---|---|
GET |
/api/upstream-proxy/:providerId |
Obtenir la configuration du proxy en amont |
PUT |
/api/upstream-proxy/:providerId |
Définir le mode du proxy en amont |
DELETE |
/api/upstream-proxy/:providerId |
Supprimer la configuration du proxy en amont |
Variables dâenvironnement
Section intitulĂ©e « Variables dâenvironnement »| Variable | Valeur par dĂ©faut | Description |
|---|---|---|
ENABLE_SOCKS5_PROXY |
true |
Active la prise en charge du proxy SOCKS5 (true par défaut dans .env.example) |
Dépannage
Section intitulée « Dépannage »« Le proxy SOCKS5 est désactivé »
Section intitulée « « Le proxy SOCKS5 est désactivé » »Définissez ENABLE_SOCKS5_PROXY=true dans votre fichier .env, puis redémarrez.
Erreurs « socket hang up » via le proxy
Section intitulée « Erreurs « socket hang up » via le proxy »Ce comportement est normal avec les proxys bon marché qui interrompent les connexions inactives. OmniRoute gÚre déjà ce problÚme en :
- Désactivant le maintien des connexions pour les connexions au proxy (
keepAliveTimeout: 1) - Désactivant le pipelining (
pipelining: 0) - Mettant en cache les rĂ©partiteurs afin dâĂ©viter les nĂ©gociations rĂ©pĂ©tĂ©es
Si le problÚme persiste, essayez un autre proxy ou utilisez la fonctionnalité de rotation de 1proxy.
« unsupported_country_region_territory » pendant OAuth
Section intitulĂ©e « « unsupported_country_region_territory » pendant OAuth »Assurez-vous que le proxy est configurĂ© avant de dĂ©marrer le flux OAuth. OmniRoute achemine lâĂ©change de jetons OAuth via le proxy configurĂ©. DĂ©finissez dâabord un proxy global ou propre au fournisseur, puis Ă©tablissez la connexion.
Le proxy nâest pas utilisĂ©
Section intitulĂ©e « Le proxy nâest pas utilisĂ© »VĂ©rifiez lâordre de rĂ©solution :
- Effectuez une vérification avec
GET /api/settings/proxy?resolve=your-connection-id - Vérifiez que le
statusdu proxy estactive(et noninactive) - Assurez-vous que la portĂ©e dâaffectation du proxy correspond Ă votre connexion
Ăchec de la synchronisation de 1proxy
Section intitulĂ©e « Ăchec de la synchronisation de 1proxy »VĂ©rifiez lâĂ©tat de la synchronisation :
curl "http://localhost:20128/api/settings/oneproxy?action=status"Si consecutiveFailures >= 5, le disjoncteur sâest dĂ©clenchĂ©. RedĂ©marrez le serveur pour le rĂ©initialiser, ou attendez une rĂ©initialisation manuelle.
Schéma de la base de données
Section intitulée « Schéma de la base de données »Table proxy_registry
Section intitulée « Table 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' ou 'oneproxy' quality_score INTEGER, -- 0-100 (1proxy uniquement) latency_ms INTEGER, -- millisecondes (1proxy uniquement) anonymity TEXT, -- transparent/anonymous/elite google_access INTEGER DEFAULT 0, -- peut accéder à Google ? (1proxy) last_validated TEXT, -- horodatage ISO (1proxy) country_code TEXT, -- code ISO à 2 lettres (1proxy) created_at TEXT NOT NULL, updated_at TEXT NOT NULL);Table proxy_assignments
Section intitulĂ©e « Table 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, -- ID du fournisseur, ID de connexion ou ID de combinaison created_at TEXT NOT NULL, updated_at TEXT NOT NULL, UNIQUE(scope, scope_id));VĂ©rification de lâĂ©tat des proxys (v3.8.16+)
Section intitulĂ©e « VĂ©rification de lâĂ©tat des proxys (v3.8.16+) »Le mĂ©canisme dâĂ©chec rapide des proxys dâOmniRoute (src/lib/proxyHealth.ts) dĂ©tecte les proxys indisponibles en moins de 2 s grĂące Ă une vĂ©rification rapide de la connexion TCP, puis met le rĂ©sultat en cache afin dâĂ©viter une surcharge Ă chaque requĂȘte.
Fonctionnement
Section intitulĂ©e « Fonctionnement »RequĂȘte âââ¶ ProxyHealthCache.get(url) â ââ RĂ©sultat en cache et rĂ©cent ? âââ¶ renvoyer lâĂ©tat en cache â ââ RĂ©sultat absent ou obsolĂšte ? âââ¶ connexion TCP Ă host:port (dĂ©lai dâexpiration : FAST_FAIL_TIMEOUT_MS) âââ¶ mise en cache pendant HEALTH_CACHE_TTL_MS âââ¶ renvoyer le rĂ©sultatSans ce mĂ©canisme, un proxy indisponible bloquerait chaque requĂȘte pendant toute la durĂ©e de PROXY_TIMEOUT_MS (30 s par dĂ©faut) avant dâĂ©chouer.
Variables dâenvironnement configurables
Section intitulĂ©e « Variables dâenvironnement configurables »| Variable | Valeur par dĂ©faut | RĂŽle |
|---|---|---|
PROXY_FAST_FAIL_TIMEOUT_MS |
2000 |
DĂ©lai dâexpiration de la connexion TCP par vĂ©rification dâĂ©tat |
PROXY_HEALTH_CACHE_TTL_MS |
30000 |
DurĂ©e de mise en cache dâun rĂ©sultat de vĂ©rification dâĂ©tat |
Valeurs recommandées :
| ScĂ©nario | DĂ©lai dâĂ©chec rapide | DurĂ©e de vie du cache | Justification |
|---|---|---|---|
| Passerelle API Ă haut dĂ©bit | 1500ms | 60000ms | Ăchec rapide agressif et cache plus long pour rĂ©duire le nombre de vĂ©rifications |
| NĆuds gĂ©odistribuĂ©s | 3000ms | 15000ms | Les rĂ©seaux plus lents nĂ©cessitent davantage de temps ; cache plus court pour un basculement rapide |
| Développement / tests | 1000ms | 10000ms | Itérations rapides sur les proxys locaux |
| FurtivitĂ© / prĂ©vention de dĂ©tection | 2500ms | 45000ms | Ăvite les sondages rapides susceptibles de dĂ©clencher des limites de dĂ©bit |
Inspection de lâĂ©tat des proxys
Section intitulĂ©e « Inspection de lâĂ©tat des proxys »import { getAllProxyHealthStatuses, invalidateProxyHealth } from "omniroute/proxyHealth";
const statuses = getAllProxyHealthStatuses();for (const s of statuses) { console.log(`${s.proxyUrl} â healthy=${s.healthy}, stale=${s.stale}`);}
// Forcer une nouvelle vĂ©rification dâun proxy spĂ©cifiqueinvalidateProxyHealth("http://user:pass@203.0.113.7:8080");Lâindicateur stale vaut true lorsque lâentrĂ©e du cache a dĂ©passĂ© HEALTH_CACHE_TTL_MS et que la requĂȘte suivante dĂ©clenchera une nouvelle vĂ©rification.
Valeurs par défaut selon le type de proxy
Section intitulĂ©e « Valeurs par dĂ©faut selon le type de proxy »La vĂ©rification dâĂ©tat utilise des valeurs par dĂ©faut adaptĂ©es au schĂ©ma de lâURL :
| Schéma | Port par défaut |
|---|---|
http:// |
8080 |
https:// |
443 |
socks5:// / socks5h:// |
1080 |
Les ports personnalisĂ©s indiquĂ©s dans lâURL (http://host:9999) ont toujours prioritĂ© sur la valeur par dĂ©faut du schĂ©ma.
Analyse et observabilité des proxys
Section intitulĂ©e « Analyse et observabilitĂ© des proxys »OmniRoute suit lâutilisation de chaque proxy afin dâaider les opĂ©rateurs Ă diagnostiquer les schĂ©mas de routage, les pics de latence et les dĂ©faillances rĂ©currentes.
Données suivies
Section intitulĂ©e « DonnĂ©es suivies »Pour chaque requĂȘte transitant par un proxy configurĂ©, OmniRoute enregistre :
| Métrique | Description |
|---|---|
proxy_url |
URL complĂšte du proxy (identifiants dâauthentification masquĂ©s) |
provider |
ID du fournisseur en amont (openai, anthropic, etc.) |
latency_ms |
DurĂ©e totale de lâaller-retour, nĂ©gociation avec le proxy comprise |
connect_ms |
Durée de connexion TCP uniquement |
status |
Code dâĂ©tat HTTP provenant du service en amont |
error |
Classe dâerreur en cas dâĂ©chec de la requĂȘte |
timestamp |
UTC au format ISO 8601 |
AccÚs aux données
Section intitulĂ©e « AccĂšs aux donnĂ©es »# ĂvĂ©nements rĂ©cents des proxyscurl -H "Authorization: Bearer $OMNIROUTE_KEY" \ "http://localhost:20128/api/usage/proxy-logs?limit=100"Le point de terminaison rĂ©el est /api/usage/proxy-logs (voir src/app/api/usage/proxy-logs/route.ts). Ce point de terminaison prend en charge :
GET /api/usage/proxy-logsâ rĂ©cupĂ©rer les journaux des proxysDELETE /api/usage/proxy-logsâ effacer tous les journaux des proxys
Si nĂ©cessaire, les statistiques agrĂ©gĂ©es peuvent ĂȘtre interrogĂ©es directement dans la table proxy_logs via SQL. Lâinterface du tableau de bord peut proposer des vues agrĂ©gĂ©es.
Schémas courants
Section intitulée « Schémas courants »Détecter un proxy instable (alternant entre succÚs et échec) :
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;Trouver les proxys lents (latence p95 > 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;Arbre de décision pour la stratégie de rotation
Section intitulĂ©e « Arbre de dĂ©cision pour la stratĂ©gie de rotation »Lorsque plusieurs proxys sont affectĂ©s Ă une portĂ©e, OmniRoute utilise une stratĂ©gie de rotation pour choisir celui Ă utiliser pour chaque requĂȘte. La stratĂ©gie est configurĂ©e au niveau de la portĂ©e (globale, par fournisseur, par compte ou par combinaison).
Stratégies disponibles
Section intitulĂ©e « StratĂ©gies disponibles »| StratĂ©gie | Cas dâutilisation | Compromis |
|---|---|---|
quality (par défaut) |
Production avec des proxys de qualité variable | Favorise les proxys les mieux notés ; peut priver de trafic ceux qui sont moins bien notés |
random |
Répartition de la charge, confidentialité | Répartition uniforme ; ignore les indicateurs de qualité |
sequential |
DĂ©bogage, tests dĂ©terministes | Parcourt les proxys dans lâordre ; comportement facile Ă comprendre |
Arbre de décision
Section intitulĂ©e « Arbre de dĂ©cision » Disposez-vous de scores de qualitĂ© pour vos proxys ? â âââââââââââââŽââââââââââââ â â OUI NON â â Tous les proxys â ont-ils une qualitĂ© â Ă peu prĂšs Ă©quivalente ? â â â ââââââŽâââââ â â â â OUI NON Utilisez â â `random` â â (la rĂ©partition â â uniforme constitue â â progressivement des â â donnĂ©es de qualitĂ©) â â â Utilisez `quality` â (idĂ©al pour une â qualitĂ© variable) âUtilisez `random`(rĂ©partissez la chargeuniformĂ©ment)Exclusion automatique des pannes pour vos propres proxys
Section intitulée « Exclusion automatique des pannes pour vos propres proxys »Le pool de la marketplace 1proxy dégrade déjà automatiquement les proxys défaillants (voir
Scores de qualité des proxys). Pour les
proxys que vous avez ajoutĂ©s au registre, le planificateur de vĂ©rification dâintĂ©gritĂ© en arriĂšre-plan
(src/lib/proxyHealth/scheduler.ts) fournit le mĂȘme comportement permettant
« dâexclure automatiquement de la chaĂźne un membre hors service », sans rien supprimer :
# .env â dĂ©sactiver temporairement un proxy aprĂšs 3 sondes consĂ©cutives en Ă©chec,# puis le rĂ©activer automatiquement dĂšs quâil recommence Ă rĂ©pondre aux sondes.PROXY_AUTO_DISABLE=truePROXY_AUTO_REMOVE_AFTER=3Fonctionnement au sein dâune chaĂźne de plusieurs proxys :
- Le planificateur sonde chaque proxy enregistré toutes les
PROXY_HEALTH_INTERVAL_MS(10 min par défaut ; 1 min au minimum). - AprÚs
PROXY_AUTO_REMOVE_AFTERĂ©checs concluants consĂ©cutifs (un vĂ©ritable Ă©chec de connexion â un dĂ©lai dâattente dĂ©passĂ© ou une erreur 5xx provenant de la cible de la sonde ne compte jamais, voir VĂ©rification de lâintĂ©gritĂ© des proxys), lestatusdu proxy est dĂ©fini surdead. deadfait partie des statuts exclus par le filtre des statuts actifs utilisĂ© lors de la rĂ©solution du pool/de la rotation. La rotation dâun pĂ©rimĂštre (round-robin / alĂ©atoire / persistante / latence â voir Arbre de dĂ©cision de la stratĂ©gie de rotation) cesse donc immĂ©diatement dâattribuer ce proxy aux nouvelles requĂȘtes. Aucun autre proxy du pool nâest affectĂ©, et lâensemble du pool ne bascule jamais silencieusement vers une connexion directe â voir le mĂ©canisme de protection Ă fermeture sĂ©curisĂ©e du SystĂšme de proxys Ă 4 niveaux.- Le planificateur continue de sonder les proxys
deadselon le mĂȘme intervalle. La prochaine sonde rĂ©ussie rĂ©tablit lestatussuractive, et le proxy rĂ©intĂšgre la rotation â aucun ajout manuel nâest nĂ©cessaire.
Ce comportement est délibérément optionnel et non destructif : par défaut, le planificateur se contente de
compter et de journaliser les échecs (voir la politique C dans decision.ts), et PROXY_AUTO_DISABLE
ne supprime jamais aucune ligne â câest le rĂŽle de lâoption distincte et plus agressive
PROXY_AUTO_REMOVE. Si les deux sont définies sur true, PROXY_AUTO_REMOVE
est prioritaire (il est inutile de dĂ©sactiver temporairement un proxy sur le point dâĂȘtre supprimĂ©). Consultez
la rĂ©fĂ©rence Configuration de lâenvironnement pour obtenir la liste complĂšte
des variables.
đ Documentation associĂ©e :
- Guide de lâutilisateur â Installation et configuration gĂ©nĂ©rales
- RĂ©fĂ©rence de lâAPI â Documentation complĂšte de lâAPI
- Configuration de lâenvironnement â Toutes les variables dâenvironnement
HagiCode
HagiCode est un espace de développement agentique qui associe workflows structurés, exécution multi-agent et vues Hero Dungeon.
Transformez vos idées en logiciels utiles grùce à un workflow agentique plus intelligent, rapide et agréable.

- SmartDes workflows structurĂ©s transforment une intention en parcours exĂ©cutable, de lâidĂ©e Ă la livraison.
- EfficientLes workflows multi-agents font avancer recherche, réalisation et revue en parallÚle.
- FunHero Dungeon rend les longues sessions de code plus visuelles et collaboratives.