Giter Site home page Giter Site logo

lionsoul2014 / ip2region Goto Github PK

View Code? Open in Web Editor NEW
15.9K 446.0 2.7K 81.13 MB

Ip2region (2.0 - xdb) is a offline IP address manager framework and locator, support billions of data segments, ten microsecond searching performance. xdb engine implementation for many programming languages

License: Apache License 2.0

C 15.64% Java 12.69% PHP 5.40% Python 9.28% JavaScript 3.83% Go 16.01% C# 8.30% Makefile 0.53% Rust 5.86% Shell 0.03% Lua 8.79% Batchfile 0.06% Erlang 4.27% Perl 0.11% C++ 9.20%
java php clang golang ip-address ip-lookup ip-location c rust ip-address-database

ip2region's People

Contributors

begeekmyfriend avatar biluohc avatar codingox avatar dependabot[bot] avatar dongyado avatar gongzhengyang avatar heweizhen0822 avatar jwcn avatar kaifulee avatar kevinwl avatar kooooooma avatar leigong996 avatar leolin49 avatar lionsoul2014 avatar lishangbu avatar liuyunbin avatar liyang1009 avatar luckydog6132 avatar malus2077 avatar mohong122 avatar morsmalleo avatar phpstatic avatar rocherkong avatar soar360 avatar stulzq avatar tangerren avatar weideguo avatar wujjpp avatar wuxiaodonggit avatar zzl88824 avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

ip2region's Issues

lua error

\lualib\resty\Ip2region.lua:314: attempt to call method 'seek' (a nil value)

1、测试环境:windows 、openresty-1.13.6.2-win64 、lua 版本是5.1.5 ,lua位库使用的是外部bitlib.dll计算
因为目前windows openresty 最高版本是5.1.5

程序里使用,与jar包结果不同

我使用maven引入了1.4.jar的包,进行了一点点小小的封装,生成一个可以使用的接口,但是扫描同一IP时会出现使用jar包扫描出结果,使用程序调试却没有结果的现象。我可以确定ip2region.db是一致的。问题如下图(测试地址为218.30.222.25):
_15360297104513
_15360300997651

160.19.212 段不在日本

比如 160.19.212.227

ip.taobao.com 查询在日本

ipip.net 查询是正确的:
**北京 hexinmi.com 联通
AS9929 160.19.212.0/22 CNCNET-CN China Netcom Corp., CN

Java heap space

byte[] iBuffer = new byte[blockLen + blen];
java.lang.OutOfMemoryError: Java heap space
这个怎么解决?

city_id 匹配兼容性不强

由于原始数据格式并不统一,导致大量 city_id 无法匹配。比如
有的IP数据是所在地是大理,而csv里面只有大理市,导致 city_id 为 0
还有比如说 阿拉善,csv里面只有 阿拉善盟,city_id 也为 0

[php7.1]pointer being freed was not allocated

Mac下Brew的php71装完php -m 报错如下:

php(55947,0x7fff9bb2a3c0) malloc: *** error for object 0x7faabb817200: pointer being freed was not allocated

环境如下:

PHP 7.1.0 (cli) (built: Dec  2 2016 11:32:42) ( NTS )
Copyright (c) 1997-2016 The PHP Group
Zend Engine v3.1.0-dev, Copyright (c) 1998-2016 Zend Technologies

How to deploy this lib?

You know that since we're deploying our lib to the public, however how to publish the db? When you use Install-Package xxx or npm i. It won't install db file?

What do u think of this?

Your code has a buffer overrun bug

If I passed in a random and long string, it will cause buffer overrun.

buffer is allocated at ip2region/binding/c/ip2region.c::389
buffer will be overran at ip2region/binding/c/ip2region.c::406

提个需求

关于IP查询,返回对应的地理位置经度和纬度,为何不做这个需求呢?

速度挑战

git clone https://github.com/ExodusVPN/ip-db.git
cd ip-db
cargo build --bin iana --release
target/debug/iana lookup "23.18.0.0"
target/debug/iana lookup "2001:258:4000::"
cargo bench

查询 IPv4/IPv6 的平均耗时是 50ns - 60ns .

image

😆

103.107.104.0 IP段识别错误

识别到印度了,
ip2region>> 103.107.104.0
20|印度|0|0|0|0 in 0.03735 millseconds

其实是香港的。
ip138.com IP查询(搜索IP地址的地理位置)
您查询的IP:103.107.104.0
本站数据:香港特别行政区
参考数据1:亚太地区亚太地区
参考数据2:APNIC

What is the source of the database?

It is having a hard time resolving regions other than China based IP address. For example:

example 1 (USA):

ip2region>> 8.8.8.8
166|美国|0|0|0|Level3 in 1.308838 millseconds

example 2 (Canada):

ip2region>> 207.189.25.17
166|美国|0|0|0|0 in 0.139160 millseconds

example 3 (Hungary):

ip2region>> 91.219.237.244
64|匈牙利|0|0|0|0 in 0.140625 millseconds

定义为全局变量问题

我用的是go的包

region, err := ip2region.New("ip2region.db") 这一句我觉得定义为全局变量。系统启动的时候执行一次加载到内存,之后就不需要再执行了,这样也就只消耗了2M左右的内存,效果是否是最好的?

如果每次请求都要执行一次上面的操作,相当于每次都会有一次打开文件的操作吧?当并发量非常大的时候,文件描述符打开太多,就会报 open too many file 的错误了

当我用定义成全局变量

var Region, _ = ip2region.New("ip2region.db")

在做benchmark 测试的时候, 得到了 和你的测试结果一致的结果,MemorySearch 是最快的

城市id查出来都是0

我看db识别出来城市id都是0,有计划支持吗?我这边可以帮忙。🤦‍♀️

并发性能问题

大佬你好,我循环几万次查询,发现总共耗时很高(好几秒),有时候不能忍了,不知道大佬这方面测试了木有呢~
start_time = time.time()
for i in range(20000):
start = time.time()
locations = searcher.memorySearch("182.61.62.41")
print time.time() - start_time
但是,对比于ipipnet查询不超过1秒,这方面是不是有优化空间呢?感谢哈🙏

IP地址段存在包含的问题

11.8.0.0|11.11.255.255|**|XX|YY|0|0
11.8.32.58|11.8.32.58|**|XX|YY|Z|0
11.8.33.15|11.8.33.15|**|XX|Z2|0|0

以上三个IP地址段,第一个IP包含了后面的两个。
但是查询11.9.11.1是查询不到,python返回N2

php 扩展问题

想请教下php 扩展,
扩展在加载数据文件时,
是一次加载后长驻?
还是每次调用都读一次?
1.如果是每次都读数据文件,那是否可以通过设置搞成长驻的.

因为我部份脚本应用时,需要长驻.也就是你的mem方式

关于命名问题

binding 一般是指一种语言不实现相关逻辑包装了另一种语言的代码,比如 Python 通过 cffi 来包装 C 语言的库。看了下代码现在这几种语言都不是用 binding 的方式实现的,所以叫 implementation 或者叫 impls 或者叫 lang

还有 python 实现的文件名不是蛇型小写字母的。

golang执行测试报错

binging/golang 下面两个包了,按照readme执行测试代码会报错,建议分别放到不同路径下

如何支持 piwik 呢?

如题 0.0
Piwik 上似乎并没有什么靠谱的免费的 ip 转地理位置的方法。。
看到这个又不知道怎么用 0.0

SpringBoot 中使用,无法取得文件路径

由于 SpringBoot 的启动方式是 fat jar,不会解压文件到磁盘,从 Java 内部读取资源文件最好使用相对路径,看了ip2region读取 db 文件使用的RandomAccessFile来读取,恰好RandomAccessFile只支持从绝对路径读取文件流,所有无法找到正确的 db data 文件位置

private static final String dbFilePath = "data/ip2region.db";

    /**
     * 初始化 IP 地址搜索对象
     *
     * @return
     * @throws DbMakerConfigException
     * @throws FileNotFoundException
     */
    @Bean
    public DbSearcher ipSearcher() throws DbMakerConfigException, FileNotFoundException {

        String dbPath = ResourceUtils.getFile("classpath:" + dbFilePath).getPath();

        DbConfig config = new DbConfig();

        log.info("[IP-Address-Search-1] start.");
        return new DbSearcher(config, dbPath);
    }

异常信息如下:

java.io.FileNotFoundException: file:/app.jar!/BOOT-INF/classes!/data/ip2region.db (No such file or directory)

golang sdk 并发问题

golang sdk 存在并发安全问题

region 设置为全局变量

region, err := ip2region.New(file)

后面多次并发调用搜索

BinarySearch:

QQ20180813-141437@2x.png

BtreeSearch:

QQ20180813-141551@2x.png

MemorySearch 测试表明是并发安全的

QQ20180813-141735@2x.png

从classpath中加载数据库文件

java 怎么从classpath加载文件,

URL dbURL = IpUtils.class.getClassLoader().getResource("data/ip2region.db");
searcher = new DbSearcher(new DbConfig(), dbURL.getFile());

这个加载不到,请问怎么解决

C#/.Net

this is a good project.Is there any plan about .Net Support?

最新版ip.merge.txt有部分IP数据不正确

最新版ip.merge.txt,有几行的ip起止端不正确,起始ip大于终止ip,如下:

"17.72.133.213";"17.72.127.255";"法国";"0";"0";"0";"0";"";"";""
"103.66.56.166";"103.66.56.106";"印度尼西亚";"0";"0";"0";"0";"";"";""
"103.66.142.9";"103.66.131.255";"泰国";"0";"0";"0";"0";"";"";""
"103.73.172.44";"103.73.168.61";"柬埔寨";"0";"0";"0";"0";"";"";""
"103.75.152.97";"103.75.151.255";"新加坡";"0";"0";"0";"0";"";"";""
"103.76.158.192";"103.76.151.255";"印度尼西亚";"0";"0";"0";"0";"";"";""
"103.82.27.210";"103.80.20.130";"香港";"0";"香港特别行政区";"0";"Hong Kong Internet Exchange";"";"";""
"173.222.109.200";"173.222.102.234";"西班牙";"0";"0";"0";"0";"";"";""

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.