🌐 Available in
English
• فارسی
• 简体中文
• Русский
• Français
Détection et Reconnaissance V2Ray — se prononce comme v2ray + radar.
Lancez-le une fois sur n'importe quel appareil toujours allumé — vieux téléphone, PC, Raspberry Pi ou serveur domestique — et V2RayDAR trouve, vérifie et sert en continu les meilleures configs fonctionnelles à tous les appareils de votre LAN. Il expose aussi un proxy standard SOCKS5/HTTP, donc chaque appareil de votre LAN profite d'une connexion V2Ray fonctionnelle — sans client V2Ray.
Un outil CLI/TUI rapide en Rust qui récupère les sources d'abonnement V2Ray / Clash / Mihomo, les valide via votre réseau réel avec sing-box, classe les configurations fonctionnelles et les republie sur une URL d'abonnement locale pour vos clients v2rayN / v2rayNG / sing-box / Clash Verge / Mihomo.
📘 Lire le guide développeur détaillé
Après avoir démarré l'application, ouvrez http://127.0.0.1:27141 dans votre navigateur pour le tableau de bord en direct (bêta ; certaines actions restent réservées au TUI).
- Récupère les abonnements en parallèle depuis un nombre illimité de sources.
- Prend en charge les formats brut, base64, JSON et YAML — ainsi que les liens de partage
vmess,vless,trojan,ss,ssr,hysteria2,hy2,tuic. - Parse les configs Clash/Mihomo YAML — ajoutez une URL d'abonnement Mihomo et V2RayDAR extrait automatiquement toutes les entrées proxy.
- Conversion bidirectionnelle — convertit entre les liens de partage V2Ray et les entrées proxy Clash/Mihomo YAML.
- Valide chaque candidat via votre réseau réel avec
sing-box(charge réellement une URL de test à travers le proxy). - Sortie double format — sert les configs fonctionnelles en tant que liens de partage V2Ray (
/subscription) et configs Mihomo YAML complètes (/mihomo.yaml). - Republie les meilleures configs fonctionnelles sur une URL locale pour tout client compatible.
- Survit aux réseaux restreints via les configs précédemment testées en base de données, un config passerelle réseau ou
emergency_config. - Partage LAN optionnel avec protection par token, pour utiliser le même abonnement depuis votre téléphone.
Collez la ligne de votre OS dans un terminal et appuyez sur Entrée — puis encore Entrée (réponse par défaut Oui) et l'installateur termine automatiquement avec les réglages par défaut (mise à jour sur place si déjà installé). Répondez Non pour les invites étape par étape. Le script d'installation détecte votre plateforme, télécharge la dernière version avec sing-box et configure tout. Le mode portable s'installe dans Desktop/V2RayDAR (si le dossier Bureau existe), sinon dans ~/V2RayDAR. Le mode utilisateur installe le binaire dans ~/.local/bin.
Mode portable (recommandé) — tout dans un dossier : copiez-collez et appuyez sur Entrée jusqu'à la fin de l'installation ! Un dossier autonome (sing-box fourni ou v2raydar_data/ existant à côté de l'exécutable) est détecté automatiquement ; --portable le force.
curl -fsSL https://raw.githubusercontent.com/411A/V2RayDAR/main/install.sh | shirm https://raw.githubusercontent.com/411A/V2RayDAR/main/install.ps1 | iexInstallation utilisateur — binaire dans ~/.local/bin, données dans le répertoire home :
# Linux / macOS
curl -fsSL https://raw.githubusercontent.com/411A/V2RayDAR/main/install.sh | sh -s -- --user
# Windows
irm https://raw.githubusercontent.com/411A/V2RayDAR/main/install.ps1 | iex
# Puis choisissez l'option 2 quand demandépkg update -y && apt update && apt full-upgrade -y && pkg install -y curl tar && curl -fsSL https://raw.githubusercontent.com/411A/V2RayDAR/main/install.sh | bash && cd ~/V2RayDAR && ./v2raydar --no-tui- Arrêt :
Ctrl + C - Démarrage :
cd ~/V2RayDAR && ./v2raydar --no-tui
Téléchargement manuel — téléchargez l'archive pour votre OS depuis Releases et lancez-la — les dossiers portables sont détectés automatiquement (--portable le force).
Le script d'installation vérifie les checksums SHA-256, détecte les installations existantes et propose une mise à jour (en préservant configs.yaml, data.db et v2raydar_data/), et ne nécessite pas sudo par défaut.
Après l'installation avec le script ci-dessus, lancez v2raydar (ou v2raydar.exe sous Windows). Au premier lancement, un configs.yaml est créé avec des sources d'abonnement pré-sélectionnées.
- Attendez le remplissage. L'application récupère vos sources d'abonnement en parallèle, teste chaque config via votre réseau et classe les configs fonctionnelles. L'endpoint est actif dès le début — votre client peut s'y connecter immédiatement.
- Pointez votre client vers l'URL d'abonnement :
| Client | Endpoint |
|---|---|
| v2rayN / v2rayNG | http://127.0.0.1:27141/subscription (base64) |
| sing-box | http://127.0.0.1:27141/subscription.txt (brut) |
| Clash Verge / Mihomo | http://127.0.0.1:27141/mihomo.yaml |
- Contrôles TUI :
| Touche | Action |
|---|---|
↑ / ↓ ou j / k |
Navigation |
Enter |
Sélectionner / basculer / confirmer |
Esc / Ctrl+H |
Retour |
Space |
Activer/désactiver l'abonnement |
e |
Modifier l'abonnement sélectionné |
Ctrl+R |
Actualisation manuelle (re-télécharge une fois, sauf si en cours) |
Ctrl+P |
Re-test manuel des configs en cache (sauf si un cycle est en cours) |
q |
Quitter |
: |
Mode commande — :q quitter, :w sauvegarder, :a ajouter, :d supprimer, :n renommer, :u URL, :p priorité, :r actualiser, :ping re-tester |
- Modifier les paramètres depuis le menu principal TUI (Configurations) ou en éditant directement
configs.yaml— les changements prennent effet au prochain rafraîchissement. Paramètres clés :top_n,refresh_seconds,ping_seconds,sharing.enabled,probe.mode. Les nouveaux réglages sont ajoutés avec leurs valeurs par défaut à votre fichier au démarrage ; vos valeurs sont conservées. - Quitter avec
qou:q. L'endpoint s'arrête à la fermeture.
v2raydar # TUI + endpoint d'abonnement local
v2raydar --no-tui # sans interface — endpoint et logs uniquement
v2raydar --once # un rafraîchissement, afficher les résultats, quitter
v2raydar --portable # données à côté de l'exécutable (détecté automatiquement dans les dossiers portables)
v2raydar --uninstall # supprimer les données et règles de pare-feuLes utilisateurs Windows remplacent v2raydar par v2raydar.exe. Sous macOS, ouvrez le .app une fois et Gatekeeper s'en souviendra.
👣 configs.yaml — tableau de toutes les clés, valeurs par défaut et leur rôle. Explications complètes dans le guide développeur.
| Clé | Par défaut | Rôle |
|---|---|---|
bind |
127.0.0.1:27141 |
Adresse HTTP locale pour /subscription, /subscription.txt, /results et /health. |
top_n |
10 |
Nombre de configs fonctionnelles publiées aux clients. |
refresh_seconds |
900 |
Intervalle de rafraîchissement automatique (secondes) ; 0 désactive le timer. |
ping_seconds |
300 |
Intervalle de re-test des configs en cache sans re-téléchargement (secondes) ; 0 désactive. Quand le cache vérifie moins de top_n, le ping teste aussi les configs déjà vues en base pour compléter. |
encoded_subscription |
true |
/subscription renvoie du base64 (compatible v2rayN / v2rayNG). |
prioritize_stability |
true |
Re-vérifie le Top-N sauvegardé de la session précédente et les garde en tête, même si de nouvelles configs avec latence plus basse apparaissent. Avec false, préfère toute config fonctionnelle à faible latence. |
return_configs_asap |
false |
Avec true, publie les configs fonctionnelles dès leur découverte (max top_n) ; les premières configs peuvent ne pas avoir la meilleure latence ou stabilité. |
scan_all_configs |
false |
Avec true, vérifie toutes les configs chargées au lieu de s'arrêter après un nombre suffisant. |
fetch_timeout_ms |
30000 |
Délai de récupération par source. |
fetch_concurrency |
8 |
Nombre de sources récupérées en parallèle. |
max_subscription_bytes |
33554432 |
Taille maximale par source (32 Mio). |
use_cache_only |
false |
Sauter la récupération en ligne et charger les configs précédemment testées depuis la base — utile sur les réseaux très restreints. |
emergency_config |
null |
Lien de partage optionnel utilisé comme passerelle via sing-box lorsque la récupération HTTP échoue. |
clean_offlines_after_days |
7 |
Nombre de jours après lesquels les configs indisponibles sont supprimées de la base. |
sharing.enabled |
false |
Autorise les clients LAN à accéder aux endpoints. |
sharing.require_token |
false |
Les requêtes LAN nécessitent ?token=.... |
sharing.token |
null |
Vide = désactivé, true = génération automatique, chaîne = valeur exacte. |
proxy.enabled |
false |
Démarre un processus SOCKS5/HTTP persistant via sing-box. |
proxy.port |
27910 |
Port du proxy mixte SOCKS5/HTTP. |
proxy.discoverable |
false |
Lie sur 0.0.0.0 et ajoute une règle de pare-feu pour l'accès LAN. |
proxy.health_check_url |
https://www.gstatic.com/generate_204 |
URL testée via le proxy pour vérifier son état. |
proxy.health_check_interval_seconds |
60 |
Secondes entre les vérifications de santé. Bascul automatique en cas d'échec. |
probe.mode |
active |
active utilise sing-box ; tcp est uniquement diagnostique. |
probe.sing_box_path |
null |
Chemin optionnel vers sing-box. Laissez null pour les builds _with_singbox de bureau ou Termux avec sing-box intégré. |
probe.connect_timeout_ms |
5000 |
Délai de connexion TCP en mode diagnostique. |
probe.active_timeout_ms |
30000 |
Délai du test HTTP en mode actif. |
probe.startup_timeout_ms |
5000 |
Temps d'attente du démarrage du proxy temporaire. |
probe.concurrency |
16 |
Nombre de base de vérifications actives simultanées. |
probe.batch_size |
20 |
Taille initiale du lot de vérification active. |
probe.process_concurrency |
null |
Nombre de processus sing-box simultanés ; auto-ajusté si vide. |
probe.test_url |
https://www.gstatic.com/generate_204 |
URL de test chargée via chaque candidat. |
probe.accepted_statuses |
[204, 200] |
Codes HTTP considérés comme succès. |
probe.download_url |
null |
Cible optionnelle de test de débit. |
probe.download_bytes_limit |
1048576 |
Nombre maximal d'octets lus par test de vitesse. |
geoip_db_path |
null |
Chemin optionnel vers un fichier GeoLite2-Country.mmdb ou un répertoire de zones pays (zones.txt, ou fichiers <cc>.zone historiques). Si null, utilise <data-root>/geoip (base MaxMind d'abord, zones en repli ; les deux mis à jour par l'installateur). Country data: GeoLite2 by MaxMind (CC BY-SA 4.0); fallback zones by ipdeny. |
subscriptions |
(sources pré-sélectionnées) | Liste de sources { name, url, enabled, priority }. Ajoutez les vôtres pour une meilleure couverture. |
- Sur les réseaux très restreints, les configs précédemment testées sont stockées en base et accessibles via
use_cache_only: true. - Par défaut, si certaines URLs HTTP échouent mais qu'une config fonctionnelle est disponible, l'application l'utilise pour réessayer les abonnements échoués. Si aucune config n'est disponible mais que vous en avez une, ajoutez-la dans
emergency_configduconfigs.yaml.
- v2rayN (même PC) — gardez
bind: 127.0.0.1:27141et ajoutezhttp://127.0.0.1:27141/subscriptioncomme URL d'abonnement. - v2rayNG / téléphone sur le même Wi-Fi — liez-vous à l'IP LAN du PC (ex.
192.0.2.23:27141), activezsharing.enabled, puis utilisezhttp://192.0.2.23:27141/subscriptionsur le téléphone. Vérifiez d'abord/healthdepuis le téléphone.
Le guide complet de configuration des clients, le partage protégé par token et les détails de pare-feu par OS sont dans le guide développeur.
V2RayDAR peut exécuter un proxy SOCKS5/HTTP persistant à côté de l'endpoint d'abonnement. Toute application sur le système — Telegram, navigateurs, curl, Python — peut y router son trafic sans client VPN séparé.
Activer dans configs.yaml :
proxy:
enabled: true
port: 27910
discoverable: false # true = accès LAN + règle de pare-feuUsage local (sur l'appareil exécutant V2RayDAR) :
curl --socks5 127.0.0.1:27910 https://api.ipify.orgUsage LAN (téléphone sur le même Wi-Fi) :
-
Réglez
proxy.discoverable: true— V2RayDAR ajoutera une règle de pare-feu et écoutera sur0.0.0.0. -
Trouvez l'IP LAN de l'appareil exécutant V2RayDAR dans le panneau TUI sous Network (ou exécutez
ipconfig/ip addr). Par exemple192.0.2.2. -
Telegram : remplacez
YOUR_LAN_IPpar votre vraie IP LAN et ouvrez cette URL sur le téléphone :https://t.me/socks?server=YOUR_LAN_IP&port=27910
Par exemple, si votre IP LAN est
192.0.2.2:https://t.me/socks?server=192.0.2.2&port=27910
Ou manuellement : Telegram → Paramètres → Données et stockage → Paramètres du proxy → Ajouter un proxy :
- Type : SOCKS5 ou HTTP
- Host :
YOUR_LAN_IP(l'IP affichée dans le panneau TUI de V2RayDAR) - Port :
27910
-
Globalement sur Android : Paramètres → WiFi → appui long sur le réseau → Modifier → Avancé → Proxy → Manuel → Serveur :
YOUR_LAN_IP, Port :27910.
Les contributions sont les bienvenues ! N'hésitez pas à ouvrir un Issue pour les bugs, demandes de fonctionnalités, questions ou suggestions, ou à soumettre un Pull Request.
- Ajouter une application GUI multiplateforme à côté du TUI avec Tauri.
- Extraire les configs V2Ray du corps de n'importe quel site web — de préférence les sites peu chargés en JS, avec FireCrawl ou Obscura en alternative pour les sites JS-intensifs.
- Endpoints privés avec mot de passe et authentification : quand un endpoint d'abonnement est privé et protégé par mot de passe, les utilisateurs peuvent obtenir leur endpoint privé via un endpoint national accessible.
L'application est fournie « en l'état », sans aucune garantie.
Le développeur ne crée ni ne distribue de configs compatibles V2Ray, et n'est pas responsable des abonnements V2Ray que l'utilisateur scanne et utilise.
Si vous trouvez ce projet utile, vous pouvez soutenir son développement par des dons sur la blockchain TON :
ton://transfer/TechKraken.tonUQCGk4IU5nm6dYWjXTx6vSQVOtKO4LQg3m8cRcq1eQo7vhCl

