今天在做公司裂变系统时,需要对每一个扫码进来的用户进行IP地址查询,考虑到裂变项目的高并发特点,考虑用node.js来实现这个接口,我的想法是先找一下网上有没有类似的插件,有的话先拿来解决问题,没有就自己写一个,后面还真找到了,lib-qqwry就是专业干这个的,一起来了解一下。

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

就凭这查询速度完全就是为我准备的啊,哈哈哈!

1. 它能干些啥?

1. 通过IP地址或有效的IP数值,搜索IP地址对应的地理位置信息;

2. 搜索一个IP段的地理位置信息;

3. IP地址与数值的互转;

2. 如何安装?

npm install lib-qqwry

3. 如何使用?

1. 引入并初始化,普通机器初始70毫秒左右;

var qqwry = require('lib-qqwry').info(); 

2.  查询IP信息;

qqwry.searchIP("202.103.102.10"); 

3. 查询IP段信息;

qqwry.searchIPScope("0.0.0.0","1.0.0.0");  

4. 静态方法

1. IP库初始化;

info(dataPath)   

dataPath  IP库路径,可选,默认路径为data文件夹中(__dirname + "/data/qqwry.dat");

2. IP库初始化的异步方法;

infoAsync(dataPath,callback) 

dataPath   IP库路径,可选,默认路径为data文件夹中(__dirname + "/data/qqwry.dat");

callback  回调函数 ,可在此时调用查询函数。

3. 释放初始化后占用的资源;

unInfo() 

4. 单个IP查询;

searchIP(IP) 

IP地址/IP数值 返回一个JSON对像

5. IP段查询;

searchIPScope(beginIP,endIP)

beginIP为开始IP,endIP为结束IP;

6. IP段查询的异步方法;

searchIPScopeAsync(beginIP,endIP,callback)

beginIP为开始IP,endIP为结束IP,callback  回调函数,查询结果会以第一个参数的形式传给回调函数

7. 调试模式开关,默认未启用;

DBUG(Bool)

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

require('lib-qqwry').DBUG().info()   

开启调试模式并初始化

qqrry.DBUG(false) 

关闭调试模式

8. IP地址转数值 (静态方法,无需初始化,可直接使用);

ipToInt(IP)qqwry.ipToInt("255.255.255.255")   // 输出  429496729

9. 数值转IP地址( 静态方法 );

intToIP(INT)qqwry.intToIP(4294967295)     输出  '255.255.255.255'

10. 字节序转换 (静态方法);

ipEndianChange(INT)

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

qqwry.ipEndianChange(0x010000FF)     // 输出 4278190081 // 0xFF000001

最后一起来看一下这段代码的最终实现,代码挺简单的

Express高效查询纯真IP库插件lib-qqwry相关推荐

  1. python ipaddr库_用Python脚本查询纯真IP库QQWry.dat(Demon修改版)

    #!/usr/bin/env python # coding: utf-8 # from: http://linuxtoy.org/files/pyip.py # Blog: http://linux ...

  2. 纯真IP库的结构分析及一个查询类

    个人网站上有个功能,记录访问者的IP及其归属地.最初我偷懒通过一个WebService来查询IP归属地,后来觉得通过这种方法响应时间长,资源耗费大,而且对那个WebSerice的依赖度太高,如果它挂了 ...

  3. CnSeu社工库免费查询_ip代理-golang测试纯真ip库与免费版ipip.net库比较

    ip代理-golang测试纯真ip库与免费版ipip.net库比较 本篇文章主要为使用golang测试国内两款纯真ip数据库与ipip.net免费版数据库进行操作,当输入一个ip地址或域名时可以看到输 ...

  4. qq纯真IP库安装及更新

    QQ纯真IP库和命令,其主要功能就是把一些网络工具的输出的IP字符串,附加上地理位置信息(使用纯真数据库).例如218.65.137.1会变成218.65.137.1[广西南宁市电信]. qqwry. ...

  5. 根据IP地址获取真实IP所在地区 ,使用纯真IP库(纯真版20160215)

     package com.alpha.util; import java.io.ByteArrayOutputStream; import java.io.IOException; import ...

  6. Discuz!开发之替换系统IP库为纯真IP库的方法

    Discuz!默认使用的IP库只有1M,运行时占用资源少,但很多ip不准确,更新也慢,默认存放的路径在data/ipdata/tinyipdata.dat,这里给大家介绍如何将系统IP库换成纯真ip库 ...

  7. Java 解析纯真IP库

    JAVA解析纯真IP地址库 博客分类: JAVA Java log4j Cache 数据结构 J#  前几天看了下Ruby的IPParse,觉得很过瘾,上网查了下貌似很多IP数据库都要收费的,就下了个 ...

  8. redis缓存原理与实现_基于Redis实现范围查询的IP库缓存设计方案

    点击上方"码农沉思录"  发现更多精彩我先说下结果.我现在还不敢放线上去测,这是本地测的数据,我4g内存的电脑本地开redis,一次都没写完过全部数据,都是写一半后不是redis挂 ...

  9. 利用纯真IP库建立mysql ip数据库

    首先到http://www.cz88.net/  下载一个最新的ip库,安装ip库后会生成一个快捷方式,如下图所示: 点击打开后,出现下图界面: 点击解压,会生成一个20多兆的文本文件,打开或者下载一 ...

  10. 纯真ip库使用过程的总结

    最近公司的旧的ip定位老是不准确,就让我写一个新的ip定位接口,产品经理本着负责的太多就从百度随便百度了一个纯真的ip库(主要经费有限,只能使用免费的),给了我一个demo,我就照着demo写了开来, ...

最新文章

  1. 2022-2028年中国铪行业市场研究及前瞻分析报告
  2. Linux修改hostname(临时或者永久)
  3. Decorator pattern
  4. Consul入门05 - 健康检测
  5. 7.java.lang.IllegalAccessException
  6. 重庆大学校友会计算机,资环学院联谊会隆重举行
  7. python中列表中的字典的排序问题
  8. 在eclipse环境下配置OpenCV环境
  9. linux下安装使用dig命令
  10. anjuta调试caffe
  11. android 支付宝工具类,Android app第三方支付宝支付接入教程
  12. 未来几年,自动化发展趋势展望
  13. 逆天改命,Java 反射的黑科技
  14. 'ContactForm' object has no attribute 'cleaned_data'
  15. 初见“Linux——通配符,命令ls,别名alias,命令du”
  16. Mysql 性能优化教程
  17. MSP430G2553-引脚简单使用
  18. 11g新增加的后台进程
  19. git push问题:kex_exchange_identification: read: Connection reset by peer
  20. 初学java之模拟QQ聊天软件(简单实现)

热门文章

  1. 计算机网络 王道考研2021 第六章:应用层 -- 域名系统 DNS、域名解析
  2. 如何一次将蓝牙耳机连接到多个设备
  3. 执行throw后 后面代码还会执行吗?
  4. linux基本防护 /病毒检测
  5. CSU - 1256 天朝的单行道
  6. 如何获取任意小程序的AppId和页面路径?
  7. java导出dbf_java 导出dbf格式
  8. 【马红“名师+”研修共同体成员风采】
  9. apache网站漏洞修复解决办法
  10. Linux操作系统笔记(基本命令+环境安装项目部署+Shell编程)