La localisation d’une adresse IP est une pratique courante dans le domaine de la programmation, souvent utilisée pour l’identification de l’origine d’une attaque ou d’une activité malveillante sur un réseau, pour des analyses géographiques, pour des analyses marketing, pour la gestion de contenu et plus encore.
Il existe de nombreuses alternatives à Python pour la localisation d’adresses IP, mais les programmeurs et développeurs aiment cependant l’utiliser, car il propose des bibliothèques et APIs puissantes pour réaliser cette tâche en toute simplicité.
Comment localiser une adresse IP avec Python ? Découvrez dans cet article divers outils et techniques avancés pour le faire.
Qu’est-ce qu’une adresse IP ?
Avant de parler des différentes manières de localiser une adresse IP avec python, voyons d’abord ce qu’est une adresse IP (Internet Protocol). A ne pas confondre avec une adresse URL, une adresse IP est tout simplement d’un numéro d’identification unique (par exemple, 192.168.0.1 ou encore 2a00:1db8:85a3:0000) attribué à chaque appareil connecté à un réseau informatique, comme Internet. Elle fonctionne comme une adresse postale pour votre appareil sur Internet, grâce à laquelle d’autres appareils connectés au réseau peuvent le localiser et lui envoyer des données.
Il existe deux types principaux d’adresses IP :
Les adresses IP statiques qui sont attribuées de manière permanente à un appareil spécifique.
Et les adresses IP dynamiques, attribuées temporairement à un appareil lorsqu’il se connecte à un réseau. C’est le cas le plus courant pour les connexions domestiques à Internet.
Il existe de nombreuses raisons pour lesquelles vous pourriez vouloir ou être amené à localiser une adresse IP via Python ou d’autres moyens. En voici quelques-unes :
Identifier la source d’une attaque ou d’une activité malveillante : la localisation de l’adresse IP du pirate aide à identifier l’origine du piratage et à prendre des mesures pour le bloquer.
Bloquer des utilisateurs indésirables : une fois les adresses IP des utilisateurs qui envoient des spams identifiées, il ne reste plus qu’à les bloquer pour résoudre le problème.
Cibler le contenu et les publicités : certains outils offrent aux éditeurs la possibilité de proposer du contenu ou des publicités plus pertinents en fonction de l’emplacement approximatif d’un utilisateur, qui est connu grâce à la localisation d’adresses IP. Certains sites web restreignent l’accès en fonction de l’adresse IP. Si votre adresse IP est bloquée, vous verrez une erreur 403.
Rechercher l’origine d’un e-mail ou d’un message : en traçant l’adresse IP associée à un e-mail ou à un message, vous identifiez par la même occasion son origine et son authenticité.
Rechercher l’origine d’un e-mail ou d’un message : en traçant l’adresse IP associée à un e-mail ou à un message, vous identifiez par la même occasion son origine et son authenticité.
Comment localiser une adresse IP avec Python ?
Pour localiser une adresse IP avec à python (l’un des langages de programmation les plus utilisés), des bibliothèques tierces ou encore des APIs de géolocalisation sont à votre disposition. Mais sinon, vous avez aussi la bibliothèque socket standard du langage de programmation qui offre plus de contrôle et de flexibilité, mais nécessite cependant une compréhension plus approfondie de la programmation réseau et de la manipulation de sockets.
Introduction au module ipaddress
Le module ipaddress intégré à Python offre des fonctionnalités pour créer, valider et manipuler des adresses IP IPv4 et IPv6, des réseaux et des interfaces. Le module ipaddress ne fournit pas de fonctionnalités directes pour la géolocalisation d’adresses IP. Mais c’est bien lui qui permet à Python de se servir des services de géolocalisation d’adresses IP tiers pour obtenir des informations sur l’emplacement géographique d’une adresse IP donnée.
Utilisation des bibliothèques tierces
De nombreuses bibliothèques tierces existent pour étendre les capacités de localisation IP de Python. Parmi les plus populaires, on trouve :
GeoPy : cette bibliothèque utilise des services de géolocalisation tels que MaxMind GeoIP pour obtenir des informations sur l’emplacement géographique d’une adresse IP.
FreeGeoIP : ce module propose un accès gratuit à l’API de géolocalisation FreeGeoIP, permettant de récupérer des données de localisation simples.
IPy : cette bibliothèque propose un ensemble d’outils pour la manipulation d’adresses IP, incluant la géolocalisation.
Méthodes simples avec Python
L’option la plus simple pour localiser une adresse IP reste l’utilisation d’une API de géolocalisation. Cette méthode implique l’envoi d’une requête HTTP à un service web tiers avec l’adresse IP en question. Le service web renvoie ensuite des informations sur l’emplacement, telles que le pays, la ville, la latitude et la longitude.
Méthode 1 : l’API FreeGeoIP
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
Ce code utilise l’API FreeGeoIP pour obtenir la localisation de l’adresse IP spécifiée. Il affiche ensuite les informations de localisation dans la console.
Méthode 2 : l’API ipstack
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")
Ce code Python utilise l’API ipstack pour localiser une adresse IP et récupérer son pays, sa ville (si disponible), sa latitude et sa longitude correspondants. En utilisant la librairie requests et en gérant la réponse de l’API de manière appropriée, le code extrait et affiche les informations de localisation.
Comment localiser une adresse IP avec PHP ?
Si vous n’êtes pas très à l’aise avec le langage Python pour localiser une adresse IP, vous avez aussi comme option le langage de programmation à connaître : PHP.
Il existe deux manières de localiser une adresse IP avec PHP :
1. Obtenir l’adresse IP du visiteur
La variable globale $_SERVER en PHP contient des informations sur le serveur et la requête en cours. L’adresse IP du visiteur peut être obtenue à l’aide de la clé REMOTE_ADDR de cette variable.
$ip_visiteur = $_SERVER['REMOTE_ADDR'];
echo "L'adresse IP du visiteur est : $ip_visiteur";
2. Géolocaliser une adresse IP
Pour obtenir plus d’informations sur une adresse IP, comme son pays ou sa ville, diverses bases de données de géolocalisation IP sont à votre disposition. Il existe plusieurs bibliothèques PHP disponibles à cet effet, telles que :
GeoIP : une bibliothèque payante qui offre une précision et une couverture géographique élevées.
MaxMind GeoIP2: une alternative open source à GeoIP.
FreeGeoIP: Une base de données de géolocalisation IP gratuite, mais moins précise que les options payantes.
Une fois que vous avez choisi une bibliothèque, voici ce qu’il faut faire pour géolocaliser une adresse IP :
// Exemple avec MaxMind GeoIP2
include "geoip2.phar";
$reader = new \GeoIP2\DatabaseReader("/chemin/vers/votre/fichier_geoip2.db");
$record = $reader->country($_SERVER['REMOTE_ADDR']);
$pays = $record->country->name;
$ville = $record->city->name;
echo "L'adresse IP est située à $ville, $pays";
Les outils et les techniques à connaître
Création d’un Scanner IP avec Python
Les API de géolocalisation offrent un moyen simple et direct d’obtenir des informations de localisation à partir d’une adresse IP avec Python. Cependant, avec cette option, vous dépendez de la disponibilité et de la qualité des services de l’API de géolocalisation. De plus, la plupart des API de géolocalisation nécessitent un abonnement payant.
Si vous souhaitez un contrôle total sur les données de localisation collectées et sur la manière dont elles sont utilisées, créez plutôt un scanner IP avec Python. De nombreuses bibliothèques Python pour le scan IP sont gratuites et open-source, les plus utilisées étant Scapy et Nmap.
Seul inconvénient avec cette option, la configuration et l’utilisation d’un scanner IP en Python sont plus complexes que l’utilisation d’une API de géolocalisation.
Voici un exemple de code Scapy simple pour scanner un réseau et afficher les adresses IP des hôtes actifs :
from scapy.all import *
def scan(network):
for addr in ARP(pdst=network).send() and receive(timeout=2):
print(addr[ARP].psrc)
if __name__ == "__main__":
network = "192.168.1.0/24"
scan(network)
Ce code envoie des requêtes ARP à toutes les adresses IP du réseau spécifié et imprime les adresses IP des hôtes qui répondent.
Obtenir des adresses IP en Python
Python offre de nombreuses options pour obtenir des adresses IP, allant des bibliothèques dédiées aux modules intégrés. Voici quelques approches populaires que vous pourrez essayer :
1. Module socket :
Le module socket fournit des fonctions de base pour la communication réseau. Il est particulièrement efficace pour obtenir l’adresse IP locale ou l’adresse d’un nom d’hôte distant.
import socket
# Obtenir l'adresse IP locale
hostname = socket.gethostname()
local_ip = socket.gethostbyname(hostname)
print(f"Adresse IP locale: {local_ip}")
# Obtenir l'adresse IP d'un nom d'hôte distant
remote_ip = socket.gethostbyname('www.google.com')
print(f"Adresse IP de google.com: {remote_ip}")
2. Outils en ligne de commande:
Des outils en ligne de commande comme dig ou curl vous offrent également la possibilité d’obtenir des informations d’adresses IP et les canaliser vers des scripts Python.
import subprocess
# Obtenir l'adresse IP d'un nom d'hôte avec dig
command = ['dig', '+short', 'A', 'google.com']
process = subprocess.Popen(command, stdout=subprocess.PIPE)
output, _ = process.communicate()
hostname_ip = output.decode('utf-8').strip()
print(f"Adresse IP de google.com: {hostname_ip}")
Comment se protéger de la localisation d’adresse IP ?
La recherche d’adresses IP via Python (ou d’autres méthodes) d’autres utilisateurs soulève des questions importantes de vie privée, d’éthique et de légalité. Et malheureusement, certaines personnes qui s’engagent dans cette pratique n’ont pas toujours de bonnes intentions. C’est la raison pour laquelle vous devez savoir comment s’en protéger.
Voici quelques moyens de protéger votre adresse IP et d’empêcher les gens de la retracer :
Utiliser un VPN (réseau privé virtuel) : Un VPN crypte votre trafic internet et le fait passer par un serveur intermédiaire, ce qui masque votre adresse IP réelle.
Utiliser un proxy : un proxy agit comme un intermédiaire entre votre appareil et internet, masquant votre adresse IP au site web ou au service que vous utilisez.
Naviguer en mode navigation privée ou incognito : ce mode empêche votre navigateur de stocker votre historique de navigation, vos cookies et autres données qui pourraient être utilisées pour vous retracer.
Désactiver le suivi de la localisation : de nombreux sites web et applications demandent votre autorisation pour suivre votre localisation. Vous pouvez désactiver ce suivi dans les paramètres de confidentialité de ces sites web et applications.
Utiliser un navigateur web respectueux de la vie privée : certains navigateurs web, tels que Firefox et Tor, sont conçus pour protéger votre vie privée en ligne.
Je m’appelle Marc. J’ai toujours été passionné par l’informatique depuis mon plus jeune âge… et la création d’Internet ! 😜 J’en ai fait mon métier puisque je travaille dans une agence de webmarketing aujourd’hui. J’adore également partagé autour de moi mes connaissances. Ce qui fait que j’ai énormément de questions de mes clients et de mes proches… Quoi de mieux qu’un blog pour lister ses interrogations et y répondre pour que cela serve au plus grand nombre !