web-dev-qa-db-fra.com

Comment détecter le pays du navigateur sur le site client?

J'ai trouvé que le site Web suivant peut détecter mon pays et ma devise même en mode privé

http://www.innisfreeworld.com/

Il enregistre dans un cookie, comment faire?

enter image description here

Est-ce possible à réaliser sur le site client? navigateur?

6
KevinHu

Il existe plusieurs options pour déterminer les paramètres régionaux. En ordre décroissant d'utilité, ce sont:

  1. Recherchez l'adresse IP , avec un service de géolocalisation IP comme Maxmind GeoIP . Il s'agit de l'emplacement d'où provient la demande, c'est-à-dire que si un Américain part en Italie et utilise un VPN suédois, il renverra Sweden.

Cela ne peut être fait qu'avec l'aide du serveur. Le principal avantage est qu'il est très fiable. La précision sera le pays ou la région pour les services gratuits, la ville ou la région pour les services payants.

  1. Recherchez l'emplacement précis sur Terre à partir du navigateur avec l'API de géolocalisation . Un Américain en vacances en Italie utilisant un VPN suédois s'enregistrera en Italie.

La réponse sera très précise, généralement à moins de 10 mètres. En principe, cela pourrait fonctionner côté client, bien que vous souhaitiez peut-être effectuer la recherche de coordonnées -> pays sur le serveur. Les principaux inconvénients sont que tous les appareils n'ont pas de position GPS ou WiFi et que cela nécessite généralement le consentement explicite de l'utilisateur.

  1. Regardez dans le Accept-Language en-tête sur le serveur (ou avec l'aide du serveur), et extrayez les informations locales. Un Américain en vacances en Italie utilisant un VPN suédois s'enregistrera aux États-Unis.

L'inconvénient est qu'il s'agit d'un paramètre extrêmement facile à modifier. Par exemple, les anglophones du monde entier peuvent préférer en-US paramètres afin d'éviter le texte traduit automatiquement. Sur les navigateurs modernes (au moment de l'écriture, pas IE/Edge, et uniquement Safari 11+), vous pouvez également demander navigator.languages .

  1. navigator.language est le premier élément du navigator.languages entête. Toutes les considérations de navigator.languages ​​s'appliquent. De plus, ces informations peuvent parfois être uniquement la langue sans paramètres régionaux (c'est-à-dire en au lieu de en-US).

  2. Utilisez un autre service tiers . Par exemple, si l'utilisateur se connecte via un système d'authentification unique tel que Facebook, vous pouvez demander la ville natale de l'utilisateur. Ces informations sont généralement très peu fiables et nécessitent un tiers.

13
phihag