localiser une adresse IP avec python
|

Comment localiser une adresse IP avec python ?

Les machines distantes communiquent entre elles grâce aux adresses IP, qui contiennent des informations de localisation précises que vous pourrez récupérer ensuite pour déterminer où se trouve très précisément une machine ou un utilisateur connecté au réseau.

Pour cela, vous aurez besoin de langages de programmation comme Python. Ce dernier, avec ses nombreuses bibliothèques spécialisées, offre la possibilité de récolter facilement ces informations.

Des outils (bibliothèques) comme geopy, ipinfo, et requests sont par exemple disponibles pour obtenir des détails géographiques à partir d’une adresse IP. Mais il existe également d’autres moyens et outils de localiser une adresse IP avec python et qui seront tous abordés dans cet article.

Qu’est-ce qu’une adresse IP ?

les raisons qui rendent la localisation possible !

Cette prouesse, c’est-à-dire le fait qu’il soit possible de localiser des adresses IP avec python ou d’autres langages de programmation, résulte tout simplement l’ingéniosité humaine avec la mise en place de certaines technologies, mais aussi de la volonté de certains acteurs du monde numérique à vouloir garder écrites la localisation de certaines adresses IP déjà référencées.

Voici les raisons qui rendent la localisation des adresses IP possible :

Les adresses IP sont attribuées par des organismes tels que l’IANA (Internet Assigned Numbers Authority) et les RIR (Regional Internet Registries). Ces organismes maintiennent des registres publics qui associent chaque adresse IP à un fournisseur d’accès à Internet (FAI) et à une localisation géographique approximative.

Les fournisseurs d’accès à Internet en français ou Internet Service Provider disposent souvent de leurs propres bases de données internes qui associent les adresses IP aux adresses physiques des clients. Ils utilisent ces informations pour fournir des services basés sur la localisation, tels que la diffusion de chaînes de télévision locales ou le blocage de sites Web restreints dans certaines régions.

un codeur python

Il existe plusieurs techniques que les entreprises et les individus utilisent pour géolocaliser une adresse IP, notamment :

➡️ Analyse du signal : cette technique utilise des informations sur le signal reçu d’un appareil pour estimer sa position.

➡️ Triangulation des points d’accès Wi-Fi : cette technique détermine la position d’un appareil en fonction des points d’accès Wi-Fi auxquels il se connecte.

➡️ Bases de données de géolocalisation : ces bases de données associent des adresses IP à des emplacements approximatifs.

Comment localiser une adresse IP avec Python ?

Pour localiser une adresse IP avec python, en tout deux méthodes s’offrent à vous : utiliser une bibliothèque adaptée ou bien se tourner vers une api de géolocalisation d’adresse IP.

Une bibliothèque de géolocalisation d’adresse IP désigne un ensemble d’outils et de fonctions Python qui permettent de déterminer l’emplacement géographique approximatif d’une adresse IP. Ces bibliothèques s’appuient sur des bases de données de géolocalisation qui associent des adresses IP à des emplacements physiques.

Une bibliothèque de géolocalisation d’adresse IP fournit des informations telles que le pays, la région, la ville, le code postal ou encore la latitude et la longitude.

Voici quelques exemples de bibliothèques de géolocalisation d’adresse IP pour Python :

PyGeoIp : une bibliothèque Python populaire et open source qui utilise les bases de données GeoLite2 de MaxMind.

GeoPy : une bibliothèque qui offre une interface simple pour plusieurs services de géolocalisation, y compris MaxMind, GeoLite2 et FreeGeoIP.

IPy : une bibliothèque légère et rapide qui utilise sa propre base de données d’adresses IP.

MaxMind GeoIP2 : une bibliothèque commerciale qui offre un accès aux données GeoIP2 de MaxMind avec des options de précision et de couverture plus élevées.

Geocoder : une bibliothèque qui offre une interface à plusieurs services de géocodage et de géolocalisation, y compris Google Maps, OpenStreetMap et MapQuest.

Ipwhois : une bibliothèque pour extraire des informations WHOIS d’adresses IP. Il fournit des détails tels que le nom du propriétaire de l’adresse IP, l’organisation, le pays et l’état et se montre très utile pour la recherche d’informations sur l’origine d’une adresse IP.

Code python pour localiser adresse IP avec la bibliotheque GeoPy :

import geopy.geocoders as geocoders
import requests

def locate_ip_address(ip_address):
    geolocator = geocoders.GoogleV3(domain='maps.google.com', user_agent='my_app')
    location = geolocator.geocode(ip_address)

    if location is not None:
        latitude = location.latitude
        longitude = location.longitude
        print(f"Latitude: {latitude}")
        print(f"Longitude: {longitude}")
    else:
        print("Adresse IP introuvable")

if __name__ == "__main__":
    ip_address = "8.8.8.8"  # Remplacez par l'adresse IP que vous souhaitez localiser
    locate_ip_address(ip_address)

Voilà un exemple complet de code Python qui localise une adresse IP et affiche sa latitude et sa longitude !

Une API (Application Programming Interface) de géolocalisation Python est un outil qui vous permet d’obtenir des informations sur l’emplacement géographique d’une adresse IP

Les API de géolocalisation Python fonctionnent en envoyant une requête à un serveur avec l’adresse IP que vous souhaitez géolocaliser. Le serveur répond ensuite avec des informations sur l’emplacement de l’adresse IP, telles que le pays, la région, la ville et le code postal.

Exemples d’API de géolocalisation Python populaires :

MaxMind GeoIP2 : https://www.maxmind.com/ est l’un des fournisseurs d’API de géolocalisation les plus populaires au monde. Ils proposent une variété d’options d’API différentes, y compris une base de données gratuite.

IPify : https://geo.ipify.org/ est une autre option populaire qui offre une API gratuite avec une limite de 10 000 requêtes par mois.

GeoLite2 : https://www.geoplugin.com/ est une base de données de géolocalisation gratuite et open source que vous pouvez héberger vous-même.

 

l'API de localisation MaxMind GeoIP2

Voici un exemple complet de code Python qui localise une adresse IP avec l’API de localisation MaxMind GeoIP2 et affiche les informations de localisation :

import geoip2.database
import requests

def locate_ip_address(ip_address):
    with geoip2.database.Reader('GeoLite2-City.mmdb') as reader:
        response = reader.city(ip_address)

        if response is not None:
            country = response.country.name
            city = response.city.name
            latitude = response.location.latitude
            longitude = response.location.longitude
            print(f"Pays: {country}")
            print(f"Ville: {city}")
            print(f"Latitude: {latitude}")
            print(f"Longitude: {longitude}")
        else:
            print("Adresse IP introuvable")

if __name__ == "__main__":
    ip_address = "8.8.8.8"  # Remplacez par l'adresse IP que vous souhaitez localiser
    locate_ip_address(ip_address)

API de géolocalisation ou bibliothèque Python : quel est le bon choix ?

Comme expliqué plus haut, deux approches s’offrent à vous pour localiser une adresse IP avec python: les bibliothèques Python et les API de géolocalisation. Mais quel choix est meilleur que l’autre ?

Avantages 

Gratuit et open-source : de nombreuses bibliothèques Python dédiées à la localisation d’IP sont disponibles gratuitement et en open-source, offrant ainsi une solution économique et flexible.

Contrôle et personnalisation: l’utilisation de bibliothèques Python vous donne un contrôle total sur le processus de localisation d’IP. Vous pouvez personnaliser le code en fonction de vos besoins et intégrer des données provenant de sources diverses.

Respect de la vie privée : en utilisant des bibliothèques open-source, vous évitez les problèmes de confidentialité liés aux API tierces et gardez le contrôle de vos données.

Inconvénients

Complexité : la mise en place d’une solution de localisation d’IP à l’aide de bibliothèques Python est plus complexe que l’utilisation d’une API. Cela implique de collecter et de gérer des données de géolocalisation, de traiter les erreurs et de maintenir le code à jour.

Précision et couverture des données : la précision et la couverture des données de localisation d’IP obtenues via des bibliothèques Python varient en fonction de la source des données et de la méthode de traitement.

Mise à jour et maintenance : vous devrez mettre à jour manuellement les bibliothèques et les données de localisation pour garantir l’exactitude et la pertinence des informations.

Avantages

Simplicité : les API de géolocalisation offrent un moyen simple et direct de localiser des adresses IP. Elles fournissent généralement une interface RESTful ou HTTP simple, permettant de récupérer des informations de localisation avec un minimum de code.

Données précises et à jour : les fournisseurs d’API de géolocalisation mettent continuellement à jour leurs bases de données avec des informations précises sur les adresses IP, y compris les pays, les régions, les villes, les codes postaux et les fournisseurs d’accès à Internet (FAI).

Fonctionnalités supplémentaires : de nombreuses API de géolocalisation proposent des fonctionnalités supplémentaires, telles que la détection de bots, la vérification de la fraude et l’analyse des sentiments.

Inconvénients

Coût : la plupart des API de géolocalisation nécessitent un abonnement payant, les coûts variant en fonction du volume d’utilisation et des fonctionnalités requises.

Dépendance tierce : l’utilisation d’une API de géolocalisation implique une dépendance vis-à-vis d’un fournisseur tiers. Cela peut poser des problèmes de disponibilité, de confidentialité et de contrôle sur les données.

Limites de l’API : chaque API de géolocalisation a ses propres limites et restrictions en termes de nombre de requêtes, de précision des données et de couverture géographique.

<?php
// Vérifier si l'adresse IP du visiteur est définie
if (isset($_SERVER['REMOTE_ADDR'])) {
    // Récupérer l'adresse IP du visiteur
    $ip_address = $_SERVER['REMOTE_ADDR'];
    echo "L'adresse IP du visiteur est : " . $ip_address;
} else {
    echo "Impossible de récupérer l'adresse IP du visiteur.";
}
?>
<?php
require 'vendor/autoload.php';

use GeoIp2\Database\Reader;

function geolocate_ip($ip_address) {
    // Spécifiez le chemin vers votre fichier GeoLite2-City.mmdb
    $databasePath = 'GeoLite2-City.mmdb';

    // Créer une nouvelle instance de Reader avec le chemin vers la base de données
    $reader = new Reader($databasePath);

    try {
        // Obtenir les informations de géolocalisation pour l'adresse IP
        $record = $reader->city($ip_address);

        // Extraire les informations pertinentes
        $country = $record->country->name;
        $city = $record->city->name;
        $latitude = $record->location->latitude;
        $longitude = $record->location->longitude;

        // Afficher les informations de géolocalisation
        echo "IP Address: " . $ip_address . "<br>";
        echo "Country: " . $country . "<br>";
        echo "City: " . $city . "<br>";
        echo "Latitude: " . $latitude . "<br>";
        echo "Longitude: " . $longitude . "<br>";
    } catch (GeoIp2\Exception\AddressNotFoundException $e) {
        echo "L'adresse IP " . $ip_address . " n'a pas été trouvée dans la base de données.";
    }
}

// Exemple d'adresse IP à géolocaliser
$ip_address = '8.8.8.8';
geolocate_ip($ip_address);
?>
<?php
require 'vendor/autoload.php';

use GeoIp2\WebService\Client;

function geolocate_ip($ip_address) {
// Vos identifiants d'API MaxMind
$userId = 'YOUR_USER_ID';
$licenseKey = 'YOUR_LICENSE_KEY';

// Créer une nouvelle instance de Client avec les identifiants d'API
$client = new Client($userId, $licenseKey);

try {
// Obtenir les informations de géolocalisation pour l'adresse IP
$record = $client->city($ip_address);

// Extraire les informations pertinentes
$country = $record->country->name;
$city = $record->city->name;
$latitude = $record->location->latitude;
$longitude = $record->location->longitude;

// Afficher les informations de géolocalisation
echo "IP Address: " . $ip_address . "<br>";
echo "Country: " . $country . "<br>";
echo "City: " . $city . "<br>";
echo "Latitude: " . $latitude . "<br>";
echo "Longitude: " . $longitude . "<br>";
} catch (Exception $e) {
echo "Erreur: " . $e->getMessage();
}
}

// Exemple d'adresse IP à géolocaliser
$ip_address = '8.8.8.8';
geolocate_ip($ip_address);
?>

Les raisons de localiser une adresse IP ?

La localisation d’une adresse IP consiste à déterminer l’emplacement géographique approximatif de l’appareil associé à cette adresse. Cette information peut être utilisée à diverses fins, notamment :

C’est la fonction première de la localisation IP. Elle permet aux routeurs d’envoyer les données aux bons endroits sur internet.

De nombreux sites web et services utilisent la localisation IP pour proposer du contenu et des services pertinents en fonction de l’utilisateur. C’est le cas par exemple de la grande majorité des sites web d’actualités qui affichent des articles locaux en fonction de la localisation de l’utilisateur, ou une plateforme de streaming qui propose des films et des séries disponibles dans sa région.

Les entreprises utilisent la localisation IP pour cibler leurs publicités sur des utilisateurs susceptibles d’être intéressés par leurs produits ou services. Par exemple, une entreprise qui vend des chaussures de sport va diffuser des publicités pour ses chaussures à des utilisateurs situés dans des zones où la pratique du sport est populaire.

Les responsables de cybersécurité se servent aussi de la localisation IP pour identifier les activités frauduleuses et cybercriminelles. Par exemple, si une tentative de connexion suspecte est effectuée sur un compte bancaire, le responsable lance une localisation IP de l’utilisateur pour déterminer si elle est légitime.

Lire aussi : Web scraping avec proxy et Beautiful Soup sous Python – le guide complet !

Dans certains cas, les forces de l’ordre utilisent la localisation IP pour identifier et enquêter sur des suspects d’activités criminelles. Cependant, cela est soumis à des restrictions strictes et à des exigences légales.

Comment se protéger de la localisation d’adresses IP ?

De nos jours, la protection de la vie privée en ligne est plus importante que jamais. Et comme vous le savez maintenant, une adresse IP révèle des informations sensibles vous concernant, telles que votre emplacement physique, vos activités en ligne et même votre identité.

Heureusement, vous avez la possibilité de masquer votre adresse IP et de naviguer sur Internet en toute confidentialité.

Voici quelques-unes des solutions les plus efficaces :

Utiliser un VPN (Virtual Private Network) : un VPN crypte votre trafic internet et le fait passer par un serveur intermédiaire, ce qui masque votre adresse IP réelle et la remplace par celle du serveur VPN.

Naviguer avec un navigateur Tor : Tor est un réseau libre et ouvert qui permet de naviguer sur internet de manière anonyme.

Utiliser un proxy : un proxy agit comme un intermédiaire entre votre appareil et internet. Il masque votre adresse IP et redirige votre trafic vers son propre serveur.

Conclusion

Auteur/autrice

  • Freddy Andrianasolo

    Je suis Freddy A, webmestre et développeur 👨‍💻  passionné par la création de sites web et applications web. Ma passion ? Les codes ! Depuis 2020, j'ai le plaisir de mettre mes compétences au service de l’agence web Qelios, où je contribue à la conception, au développement et à la maintenance des sites web de nos clients. Contactez moi si vous voulez nous proposer du contenu dans les thématiques suivantes : webmastering, developpement web...

    Voir toutes les publications

Publications similaires

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.