lib-qqwry 正在参加 2021 年度 OSC 中国开源项目评选,请投票支持!
lib-qqwry 在 2021 年度 OSC 中国开源项目评选 中已获得 {{ projectVoteCount }} 票,请投票支持!
2021 年度 OSC 中国开源项目评选 正在火热进行中,快来投票支持你喜欢的开源项目!
2021 年度 OSC 中国开源项目评选 >>> 中场回顾
lib-qqwry 获得 2021 年度 OSC 中国开源项目评选「最佳人气项目」 !
授权协议 BSD
开发语言 JavaScript
操作系统 跨平台
软件类型 开源软件
开源组织
地区 国产
投 递 者 含浪
适用人群 未知
收录时间 2015-05-22

软件简介

lib-qqwry是一个高效查询纯真 IP 库(qqwry.dat)的模块。它是用 NodeJS 解析纯真 IP 库(QQwry.dat) ,支持 IP 段查询。为更好的字符转化效率,未使用iconv模块,直接使用gbk编码表文件。经过不断优化,相同环境下,单次查询速度从最初的0.6毫秒提升到现在的0.004毫秒。

实现的功能

1.通过IP地址或有效的IP数值,搜索IP地址对应的地理位置信息。
2.搜索一个IP段的地理位置信息。
3.IP地址与数值的互转。

npm安装

npm install lib-qqwry

调用方法

var qqwry = require('lib-qqwry').info(); //调用并初始化,普通机器初始需要70毫秒左右;
var ipL = qqwry.searchIP("202.103.102.10"); //查询IP信息
var ipLA = qqwry.searchIPScope("0.0.0.0","1.0.0.0");  //查询IP段信息

API

标明的"静态方法"可以值接使用,无需初始化.
初使化操作会将GBK编码表,IP库加载到内存中,以提高后续的查询效率,大概占用12M左右的内存.

info(dataPath) IP库初始化

dataPath : IP库路径,可选; //默认路径为data文件夹中(__dirname + "/data/qqwry.dat");
callback : 回调函数 //可在此时调用查询函数

infoAsync(dataPath,callback) IP库初始化的异步方法

info()的异步方法; 初始化需要70毫秒,以及占用9MB左右的内存,项目资源紧张可以异步初始化。

//你可以这样
qqwry.info();
var ipL = qqwry.searchIP("202.103.102.10");

//也可以这样初始化,推荐;
qqwry.infoAsync(function(){
    var ipL = qqwry.searchIP("202.103.102.10");
});

unInfo() 释放初始化后占用的资源

info()的逆方法

searchIP(IP) 单个IP查询

IP : IP地址/IP数值 反回一个JSON对像;

> qqwry.searchIP("255.255.255.255");
{ ip: '255.255.255.255',
  Country: '纯真网络',
  Area: '2013年6月10日IP数据' }

searchIPScope(beginIP,endIP) IP段查询

beginIP : 启始IP
endIP : 结束IP
反回一个JSON对像数组;

> qqwry.searchIPScope("0.0.0.0","1.0.0.0");
[ { begIP: '0.0.0.0',
    endIP: '0.255.255.255',
    Country: 'IANA保留地址',
    Area: ' CZ88.NET' },
  { begIP: '1.0.0.0',
    endIP: '1.0.0.255',
    Country: '澳大利亚',
    Area: ' CZ88.NET' } ]

searchIPScopeAsync(beginIP,endIP,callback) IP段查询的异步方法

searchIPScope() 的异步方法,查询结果会以第一个参数的形式传给回调函数;

DBUG(Bool) 调试模式开关,默认未启用

DUBG模式会在控制台输出查询的关键信息,方便定位错误;

var qqwry = require('lib-qqwry').DBUG().info(); //开启调试模式并初始化
qqrry.DBUG(false); //关闭调试模式;

ipToInt(IP) IP地址转数值(静态方法)

> qqwry.ipToInt("255.255.255.255")
4294967295

intToIP(INT) 数值转IP地址(静态方法)

> qqwry.intToIP(4294967295)
'255.255.255.255'

ipEndianChange(INT) 字节序转换(静态方法)

按32位转换参数的字节序
一些云平台的环境变量中IP信息可能是Little-Endian形式的数值;
比如百度node.js环境中的 process.env.BAE_ENV_COOKIE_IP , 这时候就有用了;

> qqwry.ipEndianChange(0x010000FF)
4278190081 //0xFF000001

文档说明

  1. ./data/qqwry.dat  默认IP库,可用最新IP库替换; 下载地址www.cz88.net

  2. ./lib/qqwry.js  解析IP库的主文件;

  3. ./lib/gbk.js  GBK编码表文件,从iconv-lite中找出来的,并增加了一个转码方法;

  4. ./test/test.js  使用演示;

  5. ./test/test_v.js  效率测试示例;

效率测试文件 test_v.js

node test_v.js 255.255.255.255 正常工作检查
node test_v.js -1 单个查询效率测试node test_v.js -2 10次IP段查询效率测试


展开阅读全文

代码

评论

点击加入讨论🔥(1)
发表于软件架构专区
2019/03/12 17:13

Node.js IP 库引擎 lib-qqwry v1.3.0 发布,支持命令行下使用

lib-qqwry lib-qqwry是一个高效纯真IP库(qqwry.dat)引擎。 安装 npm i lib-qqwry 使用 cli (v1.3.0+) 从1.3版本开始支持命令模式, 你可以用把lib-qqwry安装到全局来使用; qqwry search <ip> [ips...] 查询IP/IP段 qqwry find <keyword> [keyword...] 反查IP段 qqwry update [dataPath] 从纯真官网更新IP库文件 node var libqqwry = require('lib-qqwry'); var qqwry = libqqwry() //初始化IP库解析器 qqwry.speed(); //...

4
20
没有更多内容
加载失败,请刷新页面
点击加载更多
加载中
下一页
发表了博客
{{o.pubDate | formatDate}}

{{formatAllHtml(o.title)}}

{{parseInt(o.replyCount) | bigNumberTransform}}
{{parseInt(o.viewCount) | bigNumberTransform}}
没有更多内容
暂无内容
发表了问答
{{o.pubDate | formatDate}}

{{formatAllHtml(o.title)}}

{{parseInt(o.replyCount) | bigNumberTransform}}
{{parseInt(o.viewCount) | bigNumberTransform}}
没有更多内容
暂无内容
暂无内容
1 评论
13 收藏
分享
OSCHINA
登录后可查看更多优质内容
返回顶部
顶部