La liste blanche d'IP de l'API Binance est la mesure de sécurité la plus critique : une fois configurée, seules les requêtes provenant des adresses IP spécifiées peuvent utiliser cette clé pour opérer sur le compte. Même si la clé est compromise, un attaquant ne pourra pas passer d'ordres. Cet article couvre les solutions de configuration complètes pour cinq scénarios : IP fixe sur serveur cloud, IP dynamique sur connexion résidentielle, IP multiples pour l'équilibrage de charge, proxy VPN et IPv6, accompagnées de scripts pour vérifier votre IP de sortie actuelle et de 10 points de dépannage courants. Si vous n'avez pas encore de compte Binance, veuillez effectuer votre inscription sur le Site officiel de Binance ; les nouveaux utilisateurs peuvent s' inscrire gratuitement.
I. Règles fondamentales de la liste blanche d'IP
| Règle | Description |
|---|---|
| Nombre max d'IP par clé | 30 adresses |
| Type d'IP | Uniquement IPv4 (IPv6 non supporté pour le moment) |
| Plages CIDR | Non supportées (chaque IP doit être saisie individuellement) |
| Temps d'application | Immédiat après enregistrement (moins de 30 secondes) |
| Permissions de retrait | Nécessitent obligatoirement une liste blanche (désactivées par défaut sans IP restreinte) |
| Fréquence de modification | Illimitée, ajustable à tout moment |
Important : Une clé sans liste blanche d'IP ne pourra jamais activer les permissions de retrait, c'est une règle de sécurité impérative de Binance.
II. Scénario 1 : Serveur Cloud (IP Statique)
C'est le scénario idéal. Saisissez directement l'IP publique de votre serveur cloud lors de la création de l'API.
1. Vérifier l'IP publique du serveur cloud
# Méthode 1 : Interroger un service externe
curl -4 ifconfig.me
curl -4 ipv4.icanhazip.com
curl -4 api.ipify.org
# Méthode 2 : Métadonnées Alibaba Cloud
curl http://100.100.100.200/latest/meta-data/eipv4
# Méthode 3 : Métadonnées AWS
curl http://169.254.169.254/latest/meta-data/public-ipv4
2. Configuration sur Binance
Page de gestion d'API Binance → Modifier la clé → Restreindre l'accès aux adresses IP de confiance uniquement (Recommandé) → Entrer les adresses IP → Enregistrer.
Séparez plusieurs IP par des virgules :
1.2.3.4,5.6.7.8,9.10.11.12
3. Points d'attention pour les serveurs cloud
- Une IP élastique (EIP) libérée n'est pas conservée, veillez à la supprimer de la liste blanche sur Binance.
- Les instances de groupes d'auto-scaling voient leurs IP changer ; il est préférable d'utiliser une passerelle NAT pour fixer l'IP de sortie.
- Les proxys inverses CDN ne conviennent pas — Binance verra l'IP du fournisseur de proxy, pas celle de votre serveur.
III. Scénario 2 : Connexion Résidentielle (IP Dynamique)
L'IP résidentielle peut changer toutes les 24 heures. Voici plusieurs approches :
Option A : Non restreinte (Simple mais risqué)
Choisissez Sans restriction (moins sécurisé) sur la page de gestion d'API Binance. Inconvénients :
- Les permissions de retrait sont automatiquement désactivées.
- Aucune protection en cas de fuite de la clé.
Convient uniquement aux scénarios de lecture de données (cocher uniquement « Activer la lecture »).
Option B : Mise à jour dynamique de la liste blanche (Solution intermédiaire)
Binance ne fournit pas d'API pour mettre à jour la liste blanche, la modification doit être faite manuellement via l'interface web. Une automatisation complète est donc impossible.
Vous pouvez opter pour du semi-automatique :
- Détecter l'IP de sortie actuelle toutes les heures.
- Comparer avec l'IP configurée dans la liste blanche.
- En cas de différence, envoyer une notification via Telegram ou e-mail.
- Se connecter manuellement à Binance pour mettre à jour.
Exemple de script :
import requests
import time
CURRENT_WHITELIST = {"1.2.3.4"} # L'IP configurée sur Binance
TG_BOT = "TELEGRAM_BOT_TOKEN"
TG_CHAT = "YOUR_CHAT_ID"
def get_current_ip():
return requests.get("https://api.ipify.org").text.strip()
def notify(msg):
requests.get(
f"https://api.telegram.org/bot{TG_BOT}/sendMessage",
params={"chat_id": TG_CHAT, "text": msg}
)
last_ip = None
while True:
ip = get_current_ip()
if ip != last_ip:
if ip not in CURRENT_WHITELIST:
notify(f"L'IP a changé pour {ip}, veuillez mettre à jour la liste blanche sur Binance")
last_ip = ip
time.sleep(3600)
Option C : DDNS + Entrée Fixe (Recommandé)
Utilisez un serveur cloud avec une IP fixe comme proxy inverse ou passerelle :
Ordinateur résidentiel → Tunnel SSH → Serveur Cloud → API Binance
Sur le serveur cloud (par exemple un VPS léger à bas prix) :
# Établir un tunnel SSH depuis l'ordinateur résidentiel
ssh -N -L 8443:api.binance.com:443 [email protected]
Modifiez ensuite le BASE_URL dans votre code pour https://localhost:8443 (nécessite de gérer la validation du certificat TLS). Il suffit alors d' ajouter l'IP fixe du serveur cloud à la liste blanche.
Une solution encore plus élégante consiste à monter un VPN WireGuard pour faire passer tout le trafic de l'ordinateur résidentiel par la sortie du VPS.
IV. Scénario 3 : Équilibrage de charge multi-serveurs
Les stratégies de trading algorithmique de niveau production sont souvent déployées sur plusieurs serveurs pour la redondance :
Stratégie principale : Alibaba Cloud Tokyo (IP: 47.1.2.3)
Stratégie de secours : AWS Tokyo (IP: 54.4.5.6)
Service de surveillance : Tencent Cloud HK (IP: 150.7.8.9)
Saisissez les 3 adresses IP sur Binance, séparées par des virgules :
47.1.2.3,54.4.5.6,150.7.8.9
Renforcement de la sécurité : Créez des clés indépendantes pour chaque serveur au lieu d'en partager une seule. Ainsi, si une machine est compromise, il suffit de révoquer sa clé spécifique sans affecter les autres.
V. Scénario 4 : IP de sortie VPN / Proxy
1. Confirmer l'IP de sortie finale de la chaîne de proxy
Un VPN ou un proxy fera sortir le trafic par l'IP du serveur proxy plutôt que par votre IP réelle :
# Vérifier via le proxy
curl -x http://proxy.exemple.com:8080 ifconfig.me
# Ou vérifier après activation du VPN
curl ifconfig.me
C'est l' IP de sortie du proxy qu'il faut ajouter à la liste blanche.
2. Risques liés aux sorties partagées
L'IP de sortie d'un VPN commercial peut être partagée par des milliers de personnes. Ces IP :
- Sont souvent sur la liste noire de Binance (utilisées pour du spam ou des activités suspectes).
- Peuvent être bloquées si un autre utilisateur déclenche un contrôle des risques, affectant tous les utilisateurs partageant l'IP.
- Peuvent déclencher des examens de conformité KYC.
L'utilisation de VPN commerciaux n'est pas recommandée pour le trading via API. Un VPS personnel avec une IP dédiée est la solution la plus sûre.
VI. Scénario 5 : Conteneurs Docker / Kubernetes
L'IP de sortie d'un conteneur est déterminée par la configuration réseau de l'hôte :
1. Mode réseau "Host"
# Docker Compose
services:
bot:
image: mybot
network_mode: "host" # Le conteneur utilise l'IP de l'hôte
Dans ce cas, l'IP de sortie du conteneur est celle du serveur hôte.
2. Réseau Bridge + NAT
services:
bot:
image: mybot
networks:
- default
Docker utilise par défaut le NAT, la sortie reste l'IP publique de l'hôte (sauf si l'hôte possède plusieurs cartes réseau pointant vers des sorties différentes).
3. Kubernetes
Utilisez une passerelle NAT ou une Egress Gateway pour unifier l'IP de sortie. Les fournisseurs cloud (GKE, EKS, ACK) supportent tous des fonctions d' IP de sortie fixe.
VII. Causes courantes d'échec de la liste blanche d'IP
| Symptôme | Cause | Solution |
|---|---|---|
| Nouvelle IP non listée, erreur -2015 | L'IP a changé sans synchronisation | Mettre à jour sur Binance |
| IP inchangée sur serveur cloud mais échec d'appel | Blocage par pare-feu ou route VPC | Vérifier les règles sortantes |
| curl OK, mais échec de l'appel Python | Python passe par un proxy socks5 | Vérifier la variable http_proxy |
| curl local affiche A, mais Binance voit B | Multi-cartes réseau, routes différentes | Vérifier avec route -n |
| Échec du test juste après l'ajout | Cache non rafraîchi | Réessayer après 30 secondes |
| Déconnexion VPN, le script sort par l'IP locale | Pas de "kill switch" sur le VPN | Configurer iptables pour bloquer hors VPN |
VIII. Double assurance : Vérification d'IP applicative
Même si Binance restreint l'IP, votre programme devrait effectuer un auto-contrôle au démarrage :
import requests
EXPECTED_IP = "1.2.3.4"
def verify_ip():
current = requests.get("https://api.ipify.org").text.strip()
if current != EXPECTED_IP:
raise SystemExit(f"IP de sortie anormale : {current} ≠ {EXPECTED_IP}, démarrage refusé")
print(f"Vérification IP réussie : {current}")
verify_ip()
# Initialiser le client Binance seulement après cette étape
IX. Questions fréquemment posées (FAQ)
Q1 : Combien d'IP peut-on définir pour une seule clé ?
R : Jusqu'à 30 adresses, saisies dans le même champ et séparées par des virgules. Si vous avez plus de 30 serveurs, il est recommandé de créer plusieurs clés par groupe de serveurs.
Q2 : Peut-on ajouter une IP de n'importe quelle région à la liste blanche ?
R : Oui, vous pouvez saisir n'importe quelle adresse IPv4. Les serveurs de Binance ne rejettent pas d'IP spécifique à une région pour la liste blanche. Cependant, pour des raisons de stabilité réseau, préférez des VPS situés à Hong Kong ou Singapour.
Q3 : Quelle est la différence entre la liste blanche d'IP et un pare-feu ?
R : La liste blanche d'IP est un contrôle d'accès côté Binance (restreint la source des requêtes) ; le pare-feu est un contrôle d'accès côté serveur (restreint le trafic entrant). Les deux sont complémentaires et doivent être configurés.
Q4 : Mon VPS supporte l'IPv6, mais pas Binance, que faire ?
R : Binance ne supporte pas encore les listes blanches IPv6. Solution : Utilisez curl -4 pour forcer l'IPv4 ou désactivez l'IPv6 au niveau du système :
# Linux
sysctl -w net.ipv6.conf.all.disable_ipv6=1
Q5 : Une fois la liste blanche définie, les requêtes de données de marché doivent-elles aussi provenir de cette IP ?
R : Oui. La liste blanche d'IP restreint toutes les requêtes portant l'en-tête X-MBX-APIKEY, y compris les interfaces signées et les interfaces USER_DATA. Les données de marché publiques (comme /ticker/price sans Header) ne sont pas restreintes.
Après avoir consulté les solutions pour la liste blanche d'IP, revenez à la Navigation par catégorie pour découvrir d'autres tutoriels sur le renforcement de la sécurité dans la catégorie « Intégration API ».