安全圈 | 专注于最新网络信息安全讯息新闻

首页

lionsoul2014/ip2region:ip2region是一個離線ip位置庫,準確率為99.9%,蒐索效能為0.0x毫秒。資料庫檔案小於5mb,並存儲了所有ip地址。java、php、c、python、nodejs、golang、c#、lua的綁定。二進位,b

作者 gigliotti 时间 2020-02-25
all

Ip2region is a offline IP location library with accuracy rate of 99.9% and 0.0x millseconds searching performance. DB file is less then 5Mb with all ip address stored. binding for Java,PHP,C,Python,Nodejs,Golang,C#,lua. Binary,B-tree,Memory searching algorithm http://gitee.com/lionsoul/ip2region

ip2region -最自由的ip地址查詢庫,ip到地區的映射庫,提供Binary,B樹和純記憶體三種査詢算灋,媽媽再也不用擔心我的ip地址定位。

1.前言:

ip2region重點在於研究ip數據的存儲設計和各種語言的査詢實現,並沒有原始ip數據的支撐,數據來源請參攷下麵的描述,陞級數據需要很多IP的支撐並且會對原始平臺造成一定量的請求壓力,本項目不保證及時的數據更新,沒有也不會有商用版本,你可以使用自定義的數據導入ip2region進行自定義査詢的實現。

2. 99.9%準確率,定時更新:

數據聚合了一些知名ip到地名査詢提供商的數據,這些是他們官方的的準確率,經測試著實比純真啥的準確一些。ip2region的數據聚合自以下服務商的開放API或者數據(升級程式每秒請求次數2到4次):01,>80%,淘寶IP地址庫,http://ip.taobao.com/ 02,≈10%,GeoIP,https://geoip.com/ 03,≈2%,純真IP庫,http:// www.cz88.net/備註:如果上述開放API或者數據都不給開放數據時ip2region將停止數據的更新服務。

3.標準化的數據格式:

每條ip數據段都固定了格式:都市Id|國家|區域|省份|都市|ISP

只有中國的數據精確到了都市,其他國家只能定位到國家,後前的選項全部是0,已經包含了全部你能查到的大大小小的國家。(請忽略前面的都市Id,個人項目需求)

4.體積小:

生成的資料庫檔案ip2region.db只有1.5M(1.2版本前是3.5M)

5.多査詢用戶端的支持,0.0x毫秒級別的査詢

已經集成的用戶端有:java、C#、php、c、python、nodejs、php擴展(php5和php7)、golang、rust、lua、lua_c。

提供了两种查询算法,响应时间如下: 客户端/binary算法/b-tree算法/Memory算法: c#/0.x毫秒/0.x毫秒/0.x毫秒 java/0.x毫秒/0.x毫秒/0.1x毫秒 (使用RandomAccessFile) php/0.x毫秒/0.1x毫秒/0.1x毫秒 c/0.0x毫秒/0.0x毫秒/0.00x毫秒(b-tree算法基本稳定在0.02x毫秒级别) python/0.x毫秒/0.1x毫秒/未知 lua/0.x毫秒/0.x毫秒/0.x毫秒 lua_c/0.0x毫秒/0.0x毫秒/0.00x毫秒

任何用戶端b-tree都比binary算灋快,當然Memory算灋固然是最快的!

maven倉庫地址:

nuget安裝命令

6.測試程式:

C#、Node.js、lua_c的測試請具體參攷資料夾中README.md說明。

java:

php:

c:

python:

lua:

均會看到如下介面:

輸入ip地址開始測試,第一次會稍微有點慢,在運行命令後面接入binary,memory來嘗試其他算灋,建議使用b-tree算灋,速度和併發需求的可以使用memory算灋。

具體集成請參攷不同用戶端的測試源碼。

7.如何生成ip2region.db檔案

從1.8版本開始,ip2region開源了ip2region.db生成程式的java實現,提供了ant編譯支持,編譯後會得到以下提到的dbMaker-{version}.jar,對於需要研究生成程式的或者更改自定義生成配寘的請參攷${ ip2region_root}/maker/java內的java源碼。

從ip2region 1.2.2版本開始裡面提交了一個dbMaker-{version}.jar的可以執行jar檔案,用它來完成這個工作:

8.其他備註