Récupérer une adresse IP publique ou une adresse IP privée avec Python sert autant aux audits qu’à la personnalisation d’un service. Les bibliothèques courantes telles que socket, requests et ipaddress fournissent des briques simples pour obtenir cette information rapidement.
Ce texte présente d’abord des choix opérationnels, puis des exemples de script Python IP exploitables en production. L’essentiel apparaît dans les points suivants.
A retenir :
- API externes pour résultats rapides et faible maintenance
- Bases locales (GeoIP2) pour traitement massif sans quotas
- Folium pour cartes interactives et visualisation claire
- Multithreading ou asyncio pour montée en charge efficace
Récupérer l’adresse IP publique avec Python : appels API rapides
Après ces points clés, la voie la plus rapide reste l’appel à une API externe pour obtenir l’IP et la géolocalisation. Cette approche évite la gestion locale de bases de données et permet des premiers résultats en quelques lignes.
Utiliser requests pour interroger ipinfo.io et alternatives
Pour interroger un service web, la bibliothèque requests reste le réflexe standard des développeurs Python. Selon ipinfo.io, un plan gratuit permet un volume notable de requêtes mensuelles sans frais pour des usages légers.
Selon ipinfo.io, l’obtention d’un token est nécessaire pour la stabilité des appels et l’authentification. Selon la documentation des alternatives, certains services n’exigent pas de clé mais limitent fortement les quotas.
Paramètres d’appel API :
- URL de service standardisée
- Token ou clé API dans l’en-tête
- Timeout et gestion d’erreurs explicite
- Respect des quotas et politiques d’usage
Exemple pratique et comparaison de services API
Un script Python IP typique utilise requests.get() puis response.json() pour extraire city et country. Selon ipinfo.io, la réponse JSON contient souvent coordonnées, ville, région et informations ASN utiles pour qualifier le trafic.
Voici un tableau comparatif des services fréquemment cités pour la géolocalisation par IP en 2025.
Service
Plan gratuit
Clé requise
Remarque
ipinfo.io
50 000 requêtes mensuelles
Oui
Données détaillées et stable
ip-api.com
Usage de base sans clé
Non
Limites strictes en volume
geolocation-db.com
Accès gratuit limité
Non
Simplicité d’usage, précision variable
ipstack
Plan gratuit très limité
Oui
Données riches, HTTPS payant
« J’ai intégré ipinfo pour un prototype et j’ai obtenu des résultats exploitables en quelques heures »
Luc D.
Géolocalisation hors ligne avec GeoIP2 : autonomie pour gros volumes
En prolongeant la logique d’autonomie, la base locale offre un réel confort à grande échelle pour des traitements massifs. Cette méthode supprime la dépendance aux quotas et réduit la latence réseau lors de traitements par lot.
Installer GeoIP2 et interroger la base locale en Python
La bibliothèque geoip2 se charge via pip et lit le fichier GeoLite2-City.mmdb pour répondre localement aux requêtes. Selon MaxMind, la base locale nécessite une mise à jour régulière pour conserver une précision acceptable.
Étapes d’installation :
- Créer un compte MaxMind pour télécharger GeoLite2
- Installer geoip2 via pip
- Placer le fichier .mmdb sur un disque rapide
- Automatiser la mise à jour mensuelle
Méthode
Avantage
Limite
Usage recommandé
GeoIP2 (locale)
Pas de quotas, performance élevée
Maintenance mensuelle requise
Traitement massif et offline
API externe
Mise en place rapide
Quotas et latence
Prototypes et faibles volumes
Multithreading
Parallélise les requêtes
Attention aux limites API
Volume moyen avec API
Asyncio
Haute efficacité IO
Complexité de développement
Trés haut volume API
« En production, GeoIP2 a tranché le problème des quotas pour nos 200000 logs quotidiens »
Sofia M.
Gérer IP locales et interfaces avec ipaddress
Selon la documentation Python, le module ipaddress facilite la création et l’inspection d’objets adresse, réseau et interface. Ce module permet de normaliser IPv4 et IPv6 et d’opérer des tests d’appartenance efficaces.
Un cas pratique courant consiste à valider des IP avant géolocalisation et à ignorer les plages privées non routables. Cela évite des erreurs et accélère le traitement des listes d’adresses.
Visualiser et industrialiser : cartes, multithreading, asynchrone
Après avoir acquis des adresses et coordonnées, vient le besoin de visualiser et d’industrialiser pour extraire des tendances. Les cartes interactives et le traitement parallèle transforment des logs bruts en signaux exploitables pour les équipes produit.
Créer une carte interactive avec Folium et export HTML
Folium génère des cartes interactives à partir de coordonnées et exporte un fichier HTML autonome pour la consultation. Selon certains guides pratiques, la méthode est idéale pour présenter des clusters géographiques sans déployer d’infrastructure lourde.
Éléments carte :
- Latitude et longitude nettoyées
- Objet folium.Map initialisé hors boucle
- Ajout de folium.Marker pour chaque point
- Export via map.save(‘carte.html’)
Passer à l’échelle : multithreading et asyncio pour API
Pour des appels API massifs, le multithreading réduit fortement le temps d’attente en parallèleisant les requêtes réseau. L’alternative asynchrone avec asyncio et aiohttp améliore encore l’efficacité pour des milliers de requêtes simultanées.
Bonnes pratiques parallélisation :
- Tester les limites d’API avant le déploiement
- Utiliser backoff exponentiel en cas d’erreur
- Eviter les fuites de threads ou sessions
- Surveiller la latence et les taux d’erreur
« J’ai basculé vers asyncio pour un service ultra-performant, gains significatifs observés »
Antoine L.
« Le mix GeoIP2 local et API segmentée a réduit nos coûts et amélioré la résilience »
Marie P.
Source : Nick Coghlan, « ipaddress — Documentation Python 3.14.2 », Python Software Foundation ; Peter Moody, « Python : récupérer l’adresse IP publique et privée facilement », Blog technique.