如何阻止网络中的虚假位置?

时间:2019-05-07 05:14:12

标签: javascript

我使用javascript获取用户的位置。如何防止虚假位置? 这是我的代码:

if (navigator.geolocation) {
    navigator.geolocation.getCurrentPosition(showPosition, showError);
}

它是showPosition函数:

function showPosition() {
    Latitude  = position.coords.latitude;
    Longitude = position.coords.longitude;
}

2 个答案:

答案 0 :(得分:0)

您无法检测到用户是否在使用模拟。

一种方法是使用用户的IP地址并获取位置,但这可能不准确。 您可能要检查以下问题:

how to detect when user is using mock location chrome browser

答案 1 :(得分:0)

您不能真正防止位置欺骗,但可以检查GPS位置是否与IP区域匹配。

我建议您使用公共API,因为这很容易。

//This only works if for http
fetch('http://www.geoplugin.net/json.gp')
.then((resp) => {
  if(!resp.ok) {
    console.warn('Cannot fetch location data')
    return
  }
  return resp.json()
})
.then((data) => {
  //Check if the location matches with a margin of one degree
  if(Math.abs(Latitude - data.geoplugin_latitude) < 1 && Math.abs(Longitude - data.geoplugin_longitude) < 1) {
    console.log("Location is valid")
  } else {
    console.warn("Location is probably fake")
  }
})