一直以来,纯真IP地址库都只支持ipv4,现在纯真开放了免费的社区版IP地址库并且支持IPV6了
目前纯真社区版IP库以二进制(CZDB)的形式发布,配有开源的数据解析程序。该IP库文件同时支持IPv4和IPv6地理位置数据,具有占用内存小,访问速度快,线程安全,更新方便快捷的特点。
CZDB解析程序和使用文档我们已公开到GITHUB,以下为目前已支持的编程语言:
★ JAVA语言 https://github.com/tagphi/czdb-search-java
★ PHP语言 https://github.com/tagphi/czdb_searcher_php
★ C语言 https://github.com/tagphi/czdb-search-c
以下是java调用纯真IP地址库的使用指南:
czdb-search 使用指南
czdb-search 是一个用于在纯真(CZ88)IP库中搜索数据的类。它支持三种类型的搜索算法:内存搜索(MEMORY)和B树搜索(BTREE)。数据库类型(IPv4或IPv6)和查询类型(MEMORY、BTREE)在运行时确定。
Maven 依赖
如果你想在你的Maven项目中使用czdb-search,请在你的pom.xml中添加以下依赖:
<dependency>
<groupId>net.cz88</groupId>
<artifactId>czdb-search</artifactId>
<version>${cz88db.version}</version>
</dependency>
请替换${cz88db.version}为你想要使用的版本。目前最新的版本是1.0.2.1。
支持 IPv4 和 IPv6
czdb-search 支持 IPv4 和 IPv6 地址的查询。在创建 DbSearcher 实例时,你需要提供相应的数据库文件和密钥。
数据库文件和密钥可以从 www.cz88.net 获取。
如何使用
首先,你需要创建一个 DbSearcher 的实例。在创建实例时,你需要提供数据库文件的路径、查询类型和用于解密数据库的密钥。
DbSearcher searcher = new DbSearcher("数据库文件路径", QueryType.MEMORY, "密钥");
然后,你可以使用 search 方法来根据提供的 IP 地址在数据库中搜索数据。
String region = searcher.search("IP地址");
如果搜索成功,search 方法将返回找到的数据块的区域。如果搜索失败,它将返回 null。
返回的字符串格式为 "国家–省份–城市–区域 ISP"。例如,对于一个位于中国上海市虹口区的IP地址,返回的字符串可能是 "中国–上海–上海–虹口区 电信"。如果搜索失败,它将返回 null。
查询类型
DbSearcher 支持2种查询类型:MEMORY 和 BTREE。
MEMORY:此模式是线程安全的,将数据存储在内存中。
BTREE:此模式使用 B-tree 数据结构进行查询。它不是线程安全的。不同的线程可以使用不同的查询对象。
你可以在创建 DbSearcher 实例时选择查询类型。
DbSearcher searcher = new DbSearcher("数据库文件路径", QueryType.BTREE, "密钥");
线程安全
请注意,只有 MEMORY 查询模式是线程安全的。如果你在高并发环境下使用 BTREE 查询模式,可能会导致打开的文件过多的错误。在这种情况下,你可以增加内核中允许打开的最大文件数(fs.file-max),或者使用 MEMORY 查询模式。当然更合理的一个方式是为线程池中的每一个线程只创建一个DbSearcher实例。
关闭数据库
当查询结束时,你应该关闭数据库。注意并不是说每次查询都需要创建DbSearcher实例查完后关闭,如果是为每个线程创建一个DbSearcher实例,那么只有在线程结束时才需要关闭数据库。
searcher.close();
这将释放所有使用的资源,并关闭对数据库文件的访问。
如何进行查询测试
我们提供了一个名为 SearcherTest 的类,你可以通过命令行来使用它进行查询测试。以下是如何使用的说明:
首先,你需要从 GitHub 的 release 中下载 czdb-search-1.0.jar 文件。你可以点击这里下载。
然后,你可以运行 SearcherTest。它需要三个参数:
-d 或 --dbFilePath:数据库文件的路径。
-t 或 --queryType:查询类型。有效的类型有 MEMORY 和 BTREE。
-k 或 --key:用于解密数据库文件的密钥。
以下是一个运行 SearcherTest 的示例命令:
java -cp czdb-search-1.0.jar net.cz88.czdb.SearcherTest -d your-db-file-path -t MEMORY -k your-key
请将 your-db-file-path 和 your-key 替换为实际的值。 在运行 SearcherTest 后,你可以输入 IP 地址进行查询,或输入 'q' 退出程序。
性能测试
做性能测试,需要额外提供两个参数:
-b 表示进行性能测试
-i 待查询的IP地址文件路径。文件格式为
开始ip\t结束ip
程序会每行抽取一个ip查询,查询完后打印查询时间,查询次数和QPS。
纯真(CZ88.NET)自2005年起一直为广大社区用户提供社区版IP地址库,只要获得纯真的授权就能免费使用,并不断获取后续更新的版本。如果有需要免费版IP库的朋友可以前往纯真的官网进行申请。纯真除了免费的社区版IP库外,还提供数据更加准确、服务更加周全的商业版IP地址查询数据。纯真围绕IP地址,基于 网络空间拓扑测绘 + 移动位置大数据 方案,对IP地址定位、IP网络风险、IP使用场景、IP网络类型、秒拨侦测、VPN侦测、代理侦测、爬虫侦测、真人度等均有近20年丰富的数据沉淀。