由连岳,想到ip地址库实现方式

前言:最近有一个热点新闻,连岳最近的几篇文章显示“发表于日本”,网上很多自媒体就攻击了,说爱国为啥不在中国,最后连岳自己也出来解释了,说是医疗签,解释是为什么?想想有几种原因?

  1. 辟谣型,他说下个月就回国,不回不是中国人,如果他是一个平常诚实守信的人,多半不是假话。


  2. 公关型,和事实无关,目的是为了减少商业化影响,维持人设。这个也有可能,因为看他每天一篇推送的文章下面都是书籍和其他带货产品。他这个文章可能是他后面团队的选择。


  3. 维权型,受到严重伤害需要维护法律权益,这个没有达到,因为他的公众号基本恶评都不会看到,而且大部分粉丝还在为他说话。


网上搜了一下,他是牛博网的创始人,做过记者,那对传播学很了解,所以靠赞赏能吃饭绝不是没有道理的。简单翻看他的文章,多站在意识层面和大局上谈解法,可对于实际问题没有提供解决思路,偏鸡汤类型,受众也很多。

回归正题,今天分享几个IP地址库的知识点。

地址库实现的几种方式

一般都是获取运营商的ip地址库,读取ipdb文件,然后检索。或者走第三方的ip查询rest接口。

翻了下github,找来两种地址库解析sdk分析一下。

Ip2region

ip2region – 准确率99.9%的离线IP地址定位库,0.0x毫秒级查询,ip2region.db数据库只有数MB,提供了java,php,c,python,nodejs,golang,c

已经集成的客户端有:java、C

优势是短小精悍支持Btree查找和内存查找,缺点是ip数据依赖第三方服务商,同步频率较低。

ipipdotnet

IPIP 专注 IP 地理位置以及 IP 画像数据的研究、整理与发行,我们的主力产品 IP 地理位置数据库主要基于 BGP/ASN 数据以及遍布全球的网络监测点进行城市级 IP 地域数据标注,准确度远高于国内国外同类产品。

  • ASN(Autonomous system number)自治系统编号
  • BGP(Border Gateway Protocol)边界网关协议

已经集成的客户端有:PHP、Java、Python、Golang、NodeJS、C++、C、C

优势是数据准确且支持IPv4、IPv6,支持db库自动化更新。

官方例子:


// City类可用于IPDB格式的IPv4免费库,IPv4与IPv6的每周高级版、每日标准版、每日高级版、每日专业版、每日旗舰版
City db = new City("src/test/resources/db/ipipfree.ipdb");

// db.find(address, language) 返回索引数组
System.out.println(Arrays.toString(db.find(“120.204.76.212”, “CN”)));

// db.findInfo(address, language) 返回 CityInfo 对象
CityInfo info = db.findInfo(“120.204.76.212”, “CN”);
System.out.println(info);

返回结果:


[中国, 上海, 上海]
country_name:中国
region_name:上海
city_name:上海
owner_domain:
isp_domain:
latitude:
longitude:
timezone:
utc_offset:
china_admin_code:
idd_code:
country_code:
continent_code:
idc:
base_station:
country_code3:
european_union:
currency_code:
currency_name:
anycast:

Process finished with exit code 0

 

声明:文中观点不代表本站立场。本文传送门:https://eyangzhen.com/206852.html

联系我们
联系我们
分享本页
返回顶部