| 关键词: 毫秒 查询 Ip2region 数据 完成 算法 binding region 地址 开源 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
对于从事Web开发相关的程序员来说,给出一个 IP 地址,反查其所在的地理位置,包括国家、城市,甚至于街道等,这是一个再常见不过的需求了。 对于少量的几个IP地址,我们可以直接从搜索引擎,或者一些专门的查询网站查询得到。但对于大批量的查询,这些数据往往就需要付费了。有没有一个开源免费,又能够准确查询IP地址对应的地理位置的库呢?Ip2region就是一个不错的选择。 简介Ip2region,是 lionsoul 在Gitee上开源的离线IP地址定位库,仓库位于 Ip2region 聚合了一些开放的IP到地名查询提供商的数据,并提供了标准化的数据格式,和各种不同编程语言的的查询实现,提供了极为便捷的开源IP地理位置查询库。 使用Ip2region 号称提供 99.9% 的准确率,其数据聚合自以下服务商的开放API或者数据(升级程序每秒请求次数2到4次):
Ip2region是用来标准化的数据格式,来存储ip地理位置信息:
目前中国的数据精确到了城市,其他国家有部分数据只能定位到国家,后前的选项全部是0,已经包含了全部你能查到的大大小小的国家。 Ip2region体积小,包含了全部的IP,生成的数据库文件ip2region.db只有几MB,最小的版本只有1.5MB,随着数据的详细度增加数据库的大小也慢慢增大,目前还没超过8MB。 Ip2region查询速度快,全部的查询客户端单次查询都在0.x毫秒级别,内置了三种查询算法:
其中,任何客户端的b-tree都比binary算法快,而memory算法总是最快的。 Ip2region提供了多查询客户端的支持,已经集成的客户端有:java、C#、php、c、python、nodejs、php 扩展 (php5和php7)、golang、rust、lua、lua_c, nginx 等等:
对于每种支持的客户端,可以通过阅读其中的README说明来使用,如C语言,可以运行demo:
会看到如下cli界面:
Ip2region也提供了可直接安装的库,例如:
总结Ip2region 是一个离线IP地址定位库,聚合了一些开放的IP到地名查询提供商的数据,并提供了标准化的数据格式,和各种不同编程语言的的查询实现,提供了极为便捷的开源IP地理位置查询库。 当然,该项目基本属于个人开源项目,重点在于研究IP数据的存储设计和各种语言的查询实现,数据库的更新也依赖于作者,其不保证及时的数据更新,没有也不会有商用版本,开发者可以使用自定义的数据导入ip2region进行自定义查询的实现。 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| 本文出处: https://www.toutiao.com/a7074884535627956769/ | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
声明:文章版权归原作者所有 部分文章转自互联网 如有侵权请联系
[邮箱地址] 删除
|