lib-qqwry v1.0 -- nodejs解析纯真IP库(qqwry.dat)
发布于 2 年前 作者 cnwhy 2005 次浏览 来自 分享

lib-qqwry是当初学习node时用来练手的一个模块,用来解析纯真IP库的 虽然项目公布在github上,但是没有一个人帮我纠正代码,伤心ing… 不过npm上还是有几个下载的, 这还是给了我很大的鼓励. 现在发一个v1.0版本弥补我当时稚嫩的代码. 意外收获是,整理代码后发现,相比v0.x版本 急速模式下的效率提升大概20%; 但 v1.0 相比 v0.x 有很大改动,并不兼容之前的版本,所以升级碰到问题的同学需要了解一下.

1.初始化
v0.x
初使化的初衷是让用户可以使用指定版本的IP库文件, 在最合适的时候把IP库加载到内存中进行高速查询;
v1.0
v1.0改变了程序结构,实现方式; 不将IP库加载到内存也可进行查询,只是效率相对较差(ssd大概10倍,HHD大概五十倍以上,主要看硬盘)
v1.0的初始化方法为libqqwry.init(speed,dataPath) speed 参数为是否开启急速模式(就是加载IP库到内存),dataPath参数可以指定IP库;
其实质为实例化一个Qqwry类,所以要赋值给一个变量:

var libqqwry = require('lib-qqwry');
var qqwry = libqqwry.init(); //使用默认IP库,未开启急速模式的解析器。
// var qqwry = libqqwry(); //可以这样初始化,和上一行代码功能一样
var qqwry1 = libqqwry.init(true,"/data/qqwry.dat");  //使用指定IP库,并开启急速模式的解析器。

2.查询
查询人API基本没变,v1.0 去掉了 searchIPScopeAsync 整合为 searchIPScope(beginIP,endIP,callback) 形式;
传了callback就变为异步查询,CPS风格;
要注意的是 callback 变为了标准CPS风格,第一个参数为错误,
v0.x searchIPScopeAsync(beginIP,endIP,callback) , callback(data)
v1.0 searchIPScope(beginIP,endIP,callback) , callback(err,data)

完整的demo:

var libqqwry = require('lib-qqwry');
var qqwry = libqqwry.init();
qqwry.speed(); //若初始化时没有启用急速模式,可以这样启用;
var ip1 = qqwry.searchIP("202.103.102.10"); //查询IP信息
var ips = qqwry.searchIPScope("0.0.0.0","1.0.0.0");  //查询IP段信息
//异步查询IP段信息
qqwry.searchIPScope("0.0.0.0","1.0.0.0",function(err,iparr){
  console.log(iparr);
});

更详细改动请移步项目主页: https://github.com/cnwhy/lib-qqwry

3 回复

不错,我就在用这个

建议专门出一个版本,单ip直接输出相关城市(最好包含省级),现在在查出来的不少还是某某网络与某某地址

@wldlzt 这个模块只是一个单纯解析纯真IP库的东西, 至于区分国内国外, 地址分词 找到这个模块,看不能结合起来用 https://github.com/booxood/china-address

回到顶部