一、前言
获取IP地理地址是一个网站或程序开发中经常需要的功能。它可以帮助我们了解访问者的地理位置,对于提升用户体验、优化市场推广、实现本地化等功能具有重要意义。例如,一个电商网站可以根据用户的地理位置来调整页面语言,推荐适合的商品;一个广告平台可以根据用户的地理位置来定向投放广告。
文章地址(到此提问):https://xygeng.cn/post/309
二、实例
在Node.js中,我们可以使用第三方库来获取IP地理地址。其中一个常用的库是ip2region
。以下是一个简单的示例代码:
import IP2Region, { IP2RegionResult } from 'ip2region';
import path from 'path';
/**
* 服务
*/
const ipService = new IP2Region({
ipv4db: path.join(process.cwd(), './data/ip2region.db'),
ipv6db: path.join(process.cwd(), './data/ipv6wry.db'),
disableIpv6: true
});
const result = ipService.search(ip);
这个示例代码创建了一个HTTP服务器,当客户端访问服务器时,服务器会获取客户端的IP地址,并使用ip2region
库查询IP的地理信息。如果查询成功,服务器将返回一个包含IP地址和地理信息
三、免费获取IP地理地址的接口
除了使用第三方库,还可以使用一些免费提供的API接口来获取IP地理地址。以下是我开发使用的接口
POST请求地址 (只支持post请求)
https://api.xygeng.cn/openapi/ip/getInfo
详细使用文档
// js演示
var axios = require('axios');
var data = JSON.stringify({
ip: '116.119.168.152'
});
// 注意只支持post请求
var config = {
method: 'post',
url: 'https://api.xygeng.cn/openapi/ip/getInfo',
headers: {
'Content-Type': 'application/json',
},
data: data
};
axios(config)
.then(function (response) {
console.log(JSON.stringify(response.data));
})
.catch(function (error) {
console.log(error);
});
返回结果:
{
"code": 200,
"data": {
"country": "印度",
"city": "",
"province": "德里国家首都辖区",
"isp": "印度电信"
},
"error": null,
"updateTime": 1702634088798
}