ip2region 简介
ip2region是一个高性能、高精度的离线IP地址定位库和IP位置数据管理框架。根据IP地址,您可以解析相应的位置信息,如国家、地区、州、城市、互联网服务提供商(ISP)等。以下是ip2region 的一些主要功能。
准确率高:号称准确率高达99.9%,定位IP地址的可靠性极高。
快速查询:查询速度达到0.0x毫秒级别(约10微秒级别),意味着查询响应极快。
数据库大小小:尽管包含大量数据,ip2region.db 数据库文件的大小通常只有几MB,因此易于部署和使用。
多语言支持:提供多种编程语言的查询绑定,包括Java、PHP、C、Python、Node.js、Go、C#、Rust和Lua。
查询算法:支持二进制(binary)、B-tree、纯内存三种查询算法,适应不同的性能和资源需求。
标准化数据格式:每个IP数据段的地域信息采用固定格式,如“国家|地区|省|城市|ISP”。虽然中国的大部分数据精确到城市层面,但其他国家的数据可能只精确到国家层面。
数据管理和定制:ip2region除了是一个定位库之外,还是一个数据管理框架,允许用户定制数据格式,例如添加GPS信息、国际地理代码、邮政编码等。
重复数据删除和压缩:数据库生成工具自动删除重复数据并对其进行压缩,以保持数据库精简和高效。
ip2region广泛应用于需要IP地址定位能力的场景,如网站访问统计、网络安全监控、CDN优化、广告定位等。由于它是离线数据库,不需要实时连接外部服务进行查询,因此其稳定性也得到了保证。
教程
ip2region开源项目地址https://github.com/lionsoul2014/ip2region
本文向您展示如何在nodejs项目中使用ip2region库来获取基于IP的区域位置信息。
package.json 中引入依赖
\’依赖\’: {
\’ip2region\’:\’^2.3.0\’
},
代码实现
从“ip2region”导入IP2Region。
OriginIp=requestIp.getClientIp(req);
令状态=空。
让城市=空。
console.log(\’当前工作目录:\’, process.cwd());
if (originIp !=null) {
//默认从IP2Region库的data文件夹中搜索db文件。
const data=new IP2Region().searchRaw(originIp);
//自定义db文件路径。 Docker打包不会将db文件下载到IP2Region库中,所以路径是自定义的。
const 数据=新IP2Region({
ipv4db: process.cwd() + \’/db/ip2region.db\’,
ipv6db: process.cwd() + \’/db/ipv6wry.db\’
}).searchRaw(originIp);
如果(数据!==空){
状态=数据.状态;
城市=data.city;
}
}
process.cwd() 是当前工作目录。数据对象包括国家、州、城市、运营商和其他信息。数据类型为Ipv4ToRegionResult 或Ipv6ToRegionResult。
/**
*知识产权分析结果
*/
导出接口Ipv4ToRegionResult {
/** 城市ID */
id: 号码;
/** 国家*/
国家/地区: 字符串;
/** 区域*/
区域: 字符串;
/** 状态*/
state: 字符串;
/** 城市*/
city: 字符串;
/** ISP 提供商*/
isp: 字符串;
}
导出接口Ipv6ToRegionResult {
/** 国家*/
国家/地区: 字符串;
/** 状态*/
state: 字符串;
/** 城市*/
city: 字符串;
/** ISP 提供商*/
isp: 字符串;
/** 原始数据*/
数据:字符串;
}
db 文件,如果使用pnpm i 将依赖下载到本地,ip2region 库将包含db 文件,但如果使用docker 打包,下载的ip2region 库将包含js 文件,并且由于只包含json 文件,因此db 文件从本地ip2region 库文件复制。它位于项目根目录的db 文件夹中。
不要忘记将复制命令添加到dockerfile 打包文件配置中。
复制–from=builder /app/projects/$name/db /app/projects/$name/db
执行docker打包镜像命令
docker build -tregistry.cn-hangzhou.aliyuncs.com/tarzanx/wikigpt:v0.1.9 –no-cache –build-arg name=app 。
以上安装#nodejs和使用ip2region的相关内容来源网络,仅供参考。相关信息请参见官方公告。
原创文章,作者:CSDN,如若转载,请注明出处:https://www.sudun.com/ask/93287.html