如何在客户端站点中检测浏览器国家?

时间:2018-01-16 09:32:33

标签: javascript html browser navigator

我发现以下网站甚至可以在私人模式下检测我的国家和货币

http://www.innisfreeworld.com/

它在cookie中记录,它是如何做到的?

enter image description here

这可能在客户端网站中实现吗?导航?

2 个答案:

答案 0 :(得分:8)

有多种方法可以确定区域设置。按有用性的降序排列,这些是:

  1. 查找 IP地址with an IP geolocation service,如Maxmind GeoIP。这是请求来自的位置,即如果美国人在意大利度假并使用瑞典VPN,它将返回Sweden
  2. 只能在服务器的帮助下完成。主要优点是它非常可靠。准确性将是国家或地区的免费服务,城市或地区的付费。

    1. 使用geolocation API在浏览器中查找地球上的精确位置。使用瑞典VPN在意大利度假的美国人将注册为意大利。
    2. 答案非常准确,通常不超过10米。原则上,它可以在客户端工作,尽管您可能想要执行坐标 - >在服务器上查找国家/地区主要缺点是并非所有设备都具有GPS或WiFi位置,并且通常需要明确的用户同意。

      1. 查看服务器上的Accept-Language标头(或在服务器的帮助下),并提取区域设置信息。使用瑞典VPN在意大利度假的美国人将登记为美国。
      2. 缺点是这是一个非常容易改变的设置。例如,世界各地的英语使用者可能更喜欢en-US设置,以避免机器翻译的文本。在现代浏览器上(写作不是IE / Edge,只有Safari 11+),您也可以请求navigator.languages

        1. navigator.languagenavigator.languages标头的第一个元素。 navigator.languages的所有注意事项都适用。最重要的是,此信息有时可能只是没有任何语言环境的语言(即en而不是en-US)。

        2. 使用其他第三方服务。例如,如果用户通过诸如Facebook连接的单点登录系统登录,则可以请求用户的家乡。此信息通常非常不可靠,需要第三方。

答案 1 :(得分:0)

另一个选择是使用(internationalization API

console.log(Intl.DateTimeFormat().resolvedOptions().timeZone)