Géolocaliser les visiteurs de son site web par adresse IP

Est-ce que vous connaissez l’expression : « Dis-moi ce que tu manges et je te dirai qui tu es » ? Je suppose que oui. La variante moderne, adaptée pour internet, de cette expression serait plus : « Dis-moi quelle est ton adresse IP et je te dirais, à peu près, où tu es ».

Votre adresse IP est une donnée publique. Elle est l’identifiant unique permettant de faire le lien avec les différents serveurs web que vous allez visiter. Ceci étant dit, sachant qu’il est possible de savoir à quel pays est assigné un bloc d’adresse IP en question. Il est, par le fait même, de géolocaliser votre visite. C’est-à-dire d’être en mesure de déterminer avec une certaine précision votre provenance.

Toutefois, dans le cas qui m’intéresse, je suis uniquement intéressé par les données permettant de retrouver le pays associé à une adresse IP. Bref, uniquement des données publiques.

La recette

Lorsqu’on s’y attarde un peu, il n’est pas vraiment compliqué d’arriver à ses fins lorsqu’il est temps d’identifier le pays de provenance. Il suffit d’avoir accès à une base de données décemment bâtie et vous serez en affaires.

La précision peut effectivement varier selon les sources que vous allez utiliser. Sachez surtout que, plus le service prétend être en mesure d’identifier avec précision le positionnement d’une adresse IP, plus vous pouvez suspecter que le fournisseur a eu recours à des sources possiblement illégales.

Une base de données d’adresses IP

La compagnie MaxMind met à votre disposition une panoplie de données liées aux adresses IP, sous format CSV. Il y a notamment la base de données GeoLite Country qui permet d’avoir accès à une liste d’adresses regroupées par pays. Il faut noter que la licence d’utilisation stipule que vous devez absolument mentionner l’utilisation de MaxMind comme source de données si vous désirez être conforme.

Si cela ne vous plaît pas, vous pouvez toujours acheter la base de données pour 50$.

Interroger cette base de données

Assumons que vous avez téléchargé le fichier CSV et avez importé son contenu dans votre base de données SQL.

Les données sont présentées dans le format suivant :

« 202.81.80.0 », »202.81.95.255", »3394326528", »3394330623", »JP », »Japan »
« 202.81.96.0 », »202.81.127.255", »3394330624", »3394338815", »AU », »Australia »
« 202.81.128.0 », »202.81.159.255", »3394338816", »3394347007", »IN », »India »

Les deux colonnes qui vous intéressent sont les colonnes #3 et #4. Il s’agit de la conversion de l’adresse IP en une valeur numérique. C’est assez pratique si vous désirez comparer vos données dans les plages d’adresse IP.

Récupérer l’adresse IP  d’un visiteur avec C#


public static IPAddress GetIp(this System.Web.HttpRequest request)
{
string ipString;
if (string.IsNullOrEmpty(request.ServerVariables["HTTP_X_FORWARDED_FOR"]))
{
ipString = request.ServerVariables["REMOTE_ADDR"];
}
else
{
ipString = request
.ServerVariables["HTTP_X_FORWARDED_FOR"]
.Split(",".ToCharArray(), StringSplitOptions.RemoveEmptyEntries)
.FirstOrDefault();
}
IPAddress result;
if (!IPAddress.TryParse(ipString, out result))
{
result = IPAddress.None;
}
return result;
}

view raw

ip.cs

hosted with ❤ by GitHub

Comment comparer son adresse IP en valeur numérique?

Selon l’extrait de données, que j’ai indiqué plus haut, il suffit de déterminer si l’adresse IP se situe à l’intérieur d’un bloc d’adresses en particulier. Par exemple, un visiteur du Japon pourrait utiliser une adresse entre 202.81.80.0 et 202.81.95.255.

Pour y arriver, il faut comparer des bananes avec des bananes. La façon la plus simple d’y arriver et de convertir l’adresse IP en une valeur numérique. Comparer une adresse IP avec une autre sans cette valeur numérique est pratiquement impossible.

Pour y arriver, le calcul à utiliser est le suivant(premier octet * 256³) + (second octet * 256²) + (troisième octet * 256) + (quatrième octet).

Une fois cette valeur en main, vous pouvez comparer vos valeurs numériques assez facilement. Sommairement, il en revient à faire une requête SQL utilisant l’opérateur BETWEEN.

Et puis, pour le reste? Je crois que vous serez en mesure de compléter vous-même le restant de l’histoire. Happy coding!

Publicité

Auteur : Pascal Paradis

Je suis les mains et le cerveau derrière http://frenchcoding.com. Je développe des microservices chez @UbisoftMTL. Amateur de Hockey et j'aime la technologie, en général.

Une réflexion sur “Géolocaliser les visiteurs de son site web par adresse IP”

Laisser un commentaire

Entrer les renseignements ci-dessous ou cliquer sur une icône pour ouvrir une session :

Logo WordPress.com

Vous commentez à l’aide de votre compte WordPress.com. Déconnexion /  Changer )

Photo Facebook

Vous commentez à l’aide de votre compte Facebook. Déconnexion /  Changer )

Connexion à %s

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur la façon dont les données de vos commentaires sont traitées.

%d blogueueurs aiment cette page :