我正在尝试查找IP地址的位置。 IP地址将通过前端android / iOS应用程序发送到API(我目前正在使用我的计算机的静态IP地址)。我想使用客户端IP地址来确定它们可能的物理位置,并将位置发送到MongoDB进行存储。任何有关这方面的帮助将不胜感激。提前谢谢。
答案 0 :(得分:3)
您可以利用GeoIP-lite从IP地址获取地理数据。
var geoip = require('geoip-lite');
var ip = "207.97.227.239";
var geo = geoip.lookup(ip);
console.log(geo);
/*{ range: [ 3479297920, 3479301339 ],
country: 'US',
region: 'TX',
city: 'San Antonio',
ll: [ 29.4889, -98.3987 ],
metro: 641,
zip: 78218 }*/
答案 1 :(得分:1)
您可以使用freegeoip.net:
freegeoip.net/{format}/{IP_or_hostname}
示例GET http://freegeoip.net/json/207.97.227.239:
{
ip: "207.97.227.239",
country_code: "US",
country_name: "United States",
region_code: "TX",
region_name: "Texas",
city: "San Antonio",
zip_code: "78218",
time_zone: "America/Chicago",
latitude: 29.4889,
longitude: -98.3987,
metro_code: 641
}
限制:
默认情况下,每小时最多允许10,000次查询。达到此限制后,您的所有请求都将导致HTTP 403被禁止,直到您的配额被清除。
freegeoip web服务器是免费的开源软件,所以如果公共服务限制对您来说是个问题,请下载并运行您自己的实例。
如果您只需要国家/地区精确度,则可以使用cloudflare ip geoloc,它会在请求中添加标头,因此无需额外的API调用。