nodejs 解析 ipip.net 数据库
发布于 12天前 作者 ChiChou 118 次浏览 来自 分享

GitHub:ChiChou/node-ipip

这是一个解析 IPIP.net 数据库的模块,可以获取 IP 地址的地理位置等信息。模块实现了 dat/datx 两种格式的兼容,优化了官方代码的算法。

安装:

npm install ipip

在 npm install 过程中将自动下载 IP 地址库文件(17monipdb.dat)的最新版本。收费版的文件(datx 格式)需要自行添加。

调用代码:

var ipip = require('ipip').IPIP;
var ip = new IPIP('/path/to/database.dat'); // 注意,此处加载数据文件使用的是阻塞方法
// 路径参数省略的情况下,默认加载模块根目录下的数据文件

// 查询 IP 信息,以字典格式返回
console.log(ip.ip('202.195.161.30'));

// 域名的接口必须使用异步调用
ip.domain('ujs.edu.cn').then(function(result) {
  console.log(result);
}).catch(function(err) {
  // error occured
});

需要注意的是,IPIP 的构造函数中,为了确保 IPIP.ip 函数同步调用时可用,加载数据文件使用的是同步 I/O( readFileSync 方法)。使用的时候请确保 IPIP 类在接受 HTTP 请求之前初始化完毕。(另外请教一下,类似这样的问题如何通过 API 设计避免?)

回到顶部