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#

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!

Les liens de la semaine – Édition #37

Développement

.NET

Web

Technologie

Science et autres

Le guide de l’essentiel du développeur web .NET

Il n’y a pas si longtemps, j’ai eu à reconfigurer mon environnement de développement et de travail. Voilà un bel exercice pour le blogueur en moi pour faire ce que j’aime le plus : documenter.

Après tout, on passe tous par là inévitablement. La réinstallation et la configuration, des outils nécessaires pour mon poste de développement, ne sont pas nécessairement ce que j’aime le plus dans mon travail.

Ce guide se veut comme une petite référence pour ne plus oublier ce dont j’ai besoin pour travailler. Certains des choix sont discutables. Surtout en ce qui concerne les outils qui peuvent orbiter autour. En exemple, vous préférerez peut-être un autre éditeur texte que Notepad++. Ce choix vous appartient.

Chocolatey

La façon la plus efficace et la plus geek alpha d’installer ces applications est de passer par l’utilitaire Chocolatey.

Chocolatey est l’équivalent de NuGet pour votre système Windows. Il permet l’installation et la mise à jour d’applications à l’aide d’un utilitaire en ligne de commande.

L’installation de Chocolatey est très simple. Il suffit d’exécuter la ligne de commande suivante à l’aide de cmd.exe :

@powershell -NoProfile -ExecutionPolicy unrestricted -Command « iex ((new-object net.webclient).DownloadString(‘https://chocolatey.org/install.ps1’)) » && SET PATH=%PATH%;%systemdrive%\chocolatey\bin

Ensuite, il suffit d’invoquer la commande cinst votre-application-à-installer

Chacune des applications présentes dans cette liste a la ligne de commande à inscrire pour que vous soyez en mesure de l’installer à l’aide de Chocolatey ainsi que le lien vers la page dédiée à celle-ci sur le site du projet.

Visual Studio

Liens Chocolatey

Extensions

Outils de développement

Utilitaires

Son nom ne figure pas sur la liste. Je considère que Windows 8 doit faire partie de votre arsenal. Après tout, il faut regarder vers l’avenir. De plus, je ne trouve pas que la transition à la nouvelle expérience d’utilisation Windows est si pire que cela.

Le bonus à utiliser Windows 8 est que vous avez accès à IIS 8. Sachez qu’il y a des fonctionnalités relativement assez intéressantes pour les développeurs ASP.NET.

Les liens de la semaine – Édition #36

Développement

.NET

Technologie

Web

Science et autres