Localiser une adresse IP est une tâche courante dans le domaine du développement web et de la cybersécurité. En utilisant des bibliothèques Python, vous pouvez facilement obtenir des informations précises sur un serveur ou un utilisateur. Ce processus peut être utile pour surveiller le trafic, améliorer la sécurité ou analyser des données réseau. Dans cet article, on vous montre comment localiser une adresse IP en Python avec des exemples concrets de code.
Qu’est-ce qu’une adresse IP ?
Une adresse IP (Internet Protocol) est un identifiant unique attribué à chaque appareil connecté à un réseau (ordinateur, smartphone, serveur…). Elle permet de localiser et de distinguer chaque appareil sur internet ou un réseau local. Ce numéro se compose généralement de quatre séries de chiffres appelées adresses IPv4 ou de huit groupes hexadécimaux dans le cas des adresses IPv6.
Outre le fait d’assurer la communication entre différents systèmes, une adresse IP permet de retracer l’origine d’une connexion. Elle joue ainsi un rôle important dans la gestion des échanges de données sur le web. Il s’agit donc d’une donnée très sensible.
Localiser une adresse IP : pourquoi le faire ?
Localiser une adresse IP présente de nombreux avantages dans différents secteurs (sécurité, marketing, enquêtes numériques…). Voici quelques bonnes raisons de le faire :
- Renforcer la sécurité: localiser une adresse IP peut s’avérer utile pour identifier l’origine de connexions suspectes ou non autorisées afin de prévenir des cyberattaques et sécuriser les réseaux ;
- Mener des enquêtes judiciaires: une telle localisation permet de remonter jusqu’à la source d’activités illégales en ligne (fraude, piratage…) et obtenir des preuves légales ;
- Cibler les audiences marketing: connaître l’emplacement d’une adresse IP permet d’adapter les contenus et les services aux visiteurs en fonction de leur localisation géographique pour une meilleure personnalisation ;
- Appliquer des restrictions géographiques: grâce au repérage des adresses IP, on peut limiter l’accès à des services ou contenus spécifiques selon la région ;
- Surveiller le trafic réseau: analyser les adresses IP aide énormément dans la détection des activités inhabituelles ou malveillantes sur un site ou un réseau.
Localiser une adresse IP avec Python : les étapes à suivre
Python est un langage de programmation polyvalent, facile à lire et très simple d’usage. Il est utilisé dans divers domaines comme le développement web, l’analyse de données, l’intelligence artificielle et l’automatisation. Python permet l’utilisation de bibliothèques spécialisées qui vous aideront à extraire et à localiser des adresses IP. Voici comment procéder.
Installer Python
La première étape pour localiser une adresse IP avec Python est d’installer l’environnement Python sur votre machine. Python est disponible en téléchargement sur son site officiel (www.python.org). Son installation est compatible avec la plupart des systèmes d’exploitation : Windows, Mac OS ou Linux. Après avoir installé Python, ajoutez-le à votre chemin système pour exécuter des scripts depuis n’importe quel répertoire. Une fois Python installé, il convient de vérifier sa version en utilisant la commande python –version dans le terminal.
Maîtriser IPaddress intégré à Python
Python possède un module intégré appelé ipaddress qui permet de manipuler et analyser des adresses IP. Après l’installation de Python, vous pouvez l’utiliser sans avoir à installer de packages supplémentaires. La bibliothèque ipaddress met à votre disposition des outils pour valider, manipuler et identifier des adresses IPv 4 et IPv 6. Si elle ne permet pas une localisation à proprement parlé, ipaddress aide Python à user des services de géolocalisation tiers pour traquer une adresse IP.
Pour l’utiliser, il suffit de l’importer dans votre script à l’aide de import ipaddress. Vous pouvez ensuite entrer une adresse IP sous forme de chaîne de caractères et la convertir en un objet IPv4Address ou IPv6Address pour effectuer des vérifications et des opérations de base.
Utiliser les bibliothèques tierces
Si vous souhaitez aller plus loin et obtenir une localisation géographique, il devient nécessaire d’utiliser des bibliothèques tierces. Ces bibliothèques sont simples à intégrer et offrent des fonctionnalités avancées pour traiter des informations liées aux adresses IP. Les voici.
Requests
La bibliothèque requests est très utilisée pour envoyer des requêtes HTTP et récupérer des données à partir d’API. Dans le cadre de la localisation d’une adresse IP, requests permet de se connecter à des services en ligne comme FreeGeoIP ou IPinfo pour extraire des informations sur l’emplacement géographique de l’adresse IP. Vous pouvez installer requests via pip install requests, puis l’utiliser afin d’envoyer une requête GET à une API et obtenir des données sous forme de JSON.
Geopy
La bibliothèque Geopy est utilisée pour la géolocalisation. Elle vous permet de transformer des adresses IP en coordonnées géographiques (latitude et longitude) qui peuvent ensuite être traduites en noms de lieux. Après avoir installé Geopy avec la commande pip install geopy, il est possible d’utiliser divers services de géolocalisation pris en charge. On pense bien évidemment à Nominatim et Google Maps. Ils vous permettront d’obtenir des informations géographiques exactes à partir de l’adresse IP et donc la position physique associée à une connexion internet.
FreeGeoIP
FreeGeoIP est un service en ligne que vous pouvez intégrer dans vos scripts Python pour localiser une adresse IP. Ce service fournit des informations détaillées, dont :
- Le pays ;
- La ville ;
- Le code postal ;
- Etc.
Après avoir installé requests, vous pouvez envoyer une requête à l’API FreeGeoIP en spécifiant l’adresse IP cible. La réponse contiendra un ensemble de données que vous pouvez ensuite analyser ou utiliser pour des applications diverses : filtrage géographique, analyse de la localisation des utilisateurs…
IPy
Cette bibliothèque est pratique pour manipuler et analyser des adresses IP. Elle s’avère très utile dans le cadre de :
- La conversion entre différents formats ;
- La vérification d’appartenance à des sous-réseaux ;
- La génération d’adresses à partir de blocs d’IP.
Si vous installez IPy avec pip install IPy, vous pouvez facilement créer des objets IP et exécuter des opérations complexes comme la vérification de la validité d’une adresse IP ou la conversion entre des formats numériques et textuels. Cette bibliothèque est particulièrement utile si vous travaillez sur des projets qui requièrent la gestion de grandes plages d’adresses IP ou des calculs de réseau.
Utiliser une API de géolocalisation
Pour traquer une adresse IP avec Python, utilisez une API de géolocalisation si vous n’êtes pas à l’aise avec les bibliothèques. Voici deux options intéressantes.
L’API Free GeoIP
Pour se servir de l’API FreeGeoIP afin d’obtenir la localisation d’une adresse IP, utilisez le code ci-après :
import requests
def localiser_ip(ip_address) :
url = f"https://freegeoip.app/json/{ip_address}"
response = requests.get(url)
if response.status_code == 200 :
data = response.json()
pays = data["country_name"]
region = data["region_name"]
ville = data["city"]
code_postal = data["postal_code"]
localisation = f"{pays}, {region}, {ville}, {code_postal}"
print(f"Localisation de l’adresse IP {ip_address}: {localisation}")
else :
print(f"Echec de la localisation de l’adresse IP {ip_address}")
# Exemple d’utilisation
localiser_ip("8.8.8.8") # Remplacez par l’adresse IP à localiser
Après insertion, les informations de localisation apparaîtront dans l’interface.
L’API ipstack
Grâce à cet API, Python peut localiser une adresse avec indication du pays, de la ville, de la latitude et la longitude. Voici le code à utiliser :
import requests
# Remplacer 'YOUR_API_KEY' par votre clé API ipstack
api_key = 'YOUR_API_KEY'
ip_address = '8.8.8.8'
url = f"https://api.ipstack.com/{ip_address}?access_key={api_key}”
response = requests.get(url)
if response.status_code == 200:
data = response.json()
country = data['country_name']
city = data['city']
latitude = data['latitude']
longitude = data['longitude']
print(f"Pays : {country}")
print(f"Ville : {city}")
print(f"Latitude : {latitude}")
print(f"Longitude : {longitude}")
else :
print("Erreur lors de la récupération des informations de localisation")