ip2region是准确率99.9%的ip地址定位库,0.0x毫秒级查询,数据库文件大小只有1.6M,提供了java, php, c, python,nodejs,golang查询绑定和Binary,B树,内存三种查询算法,妈妈再也不同担心我的ip地址定位!
ip2region 1.2.3版本更新如下:
1,优化升级算法,进行更深度的分裂,可以使准确率再度提高(同时数据的更新也花费了2天多的时间)。
2,数据升级至2016/12/14版本的数据(包括原始数据和binary数据库的数据)。
下载地址:
码云:http://git.oschina.net/lionsoul/ip2region/tree/v1.2.3-release
github:https://github.com/lionsoul2014/ip2region/releases/tag/v1.2.3-release
引用来自“imxae”的评论
求perl接口引用来自“理工小强”的评论
数据是哪里来的 纯真的也一直更新引用来自“eechen”的评论
访问APNIC(负责亚太),RIPE(负责欧洲),AfriNIC(负责非洲),ARIN(负责北美),LACNIC(负责拉美)这5大网络信息中心提供的whois数据服务.http://ftp.apnic.net/apnic/stats/apnic/delegated-apnic-latest
获取apnic负责分配的所有IPv4地址段的起始地址和长度.
通过对上述IP段进行whois操作,得到该IP段的相关信息.
whois结果的信息提取,处理和规范化.常见的处理包括国家/省/市/ISP/机构等信息的提取,英文与中文的转化等.
举例(Ubuntu/Debian): sudo apt-get install whois
whois会查询whois.apnic.net/whois.arin.net等获得信息:
whois 180.76.76.76|egrep 'inetnum|netname|country'
inetnum: 180.76.0.0 - 180.76.255.255
netname: Baidu
country: CN
我建议应该把采集到的数据存储为SQLite格式,这样会通用得多,统一用SQL操作即可.
CREATE TABLE location (ip INTEGER PRIMARY KEY, country INTEGER);
CREATE TABLE country (id INTEGER PRIMARY KEY AUTOINCREMENT, value VARCHAR (255) UNIQUE);
查询:
$ip = sprintf('%u', ip2long('180.76.76.76'));
SELECT country.value FROM location JOIN country ON location.country = country.id
WHERE location.ip < {$ip} ORDER BY location.ip DESC LIMIT 1;
40多万条数据,我Ubuntu(i5-3230M)上PHP查询耗时约为为0.00014秒.
引用来自“理工小强”的评论
数据是哪里来的 纯真的也一直更新引用来自“eechen”的评论
访问APNIC(负责亚太),RIPE(负责欧洲),AfriNIC(负责非洲),ARIN(负责北美),LACNIC(负责拉美)这5大网络信息中心提供的whois数据服务.http://ftp.apnic.net/apnic/stats/apnic/delegated-apnic-latest
获取apnic负责分配的所有IPv4地址段的起始地址和长度.
通过对上述IP段进行whois操作,得到该IP段的相关信息.
whois结果的信息提取,处理和规范化.常见的处理包括国家/省/市/ISP/机构等信息的提取,英文与中文的转化等.
举例(Ubuntu/Debian): sudo apt-get install whois
whois会查询whois.apnic.net/whois.arin.net等获得信息:
whois 180.76.76.76|egrep 'inetnum|netname|country'
inetnum: 180.76.0.0 - 180.76.255.255
netname: Baidu
country: CN
我建议应该把采集到的数据存储为SQLite格式,这样会通用得多,统一用SQL操作即可.
CREATE TABLE location (ip INTEGER PRIMARY KEY, country INTEGER);
CREATE TABLE country (id INTEGER PRIMARY KEY AUTOINCREMENT, value VARCHAR (255) UNIQUE);
查询:
$ip = sprintf('%u', ip2long('180.76.76.76'));
SELECT country.value FROM location JOIN country ON location.country = country.id
WHERE location.ip < {$ip} ORDER BY location.ip DESC LIMIT 1;
40多万条数据,我Ubuntu(i5-3230M)上PHP查询耗时约为为0.00014秒.
引用来自“理工小强”的评论
数据是哪里来的 纯真的也一直更新http://ftp.apnic.net/apnic/stats/apnic/delegated-apnic-latest
获取apnic负责分配的所有IPv4地址段的起始地址和长度.
通过对上述IP段进行whois操作,得到该IP段的相关信息.
whois结果的信息提取,处理和规范化.常见的处理包括国家/省/市/ISP/机构等信息的提取,英文与中文的转化等.
举例(Ubuntu/Debian): sudo apt-get install whois
whois会查询whois.apnic.net/whois.arin.net等获得信息:
whois 180.76.76.76|egrep 'inetnum|netname|country'
inetnum: 180.76.0.0 - 180.76.255.255
netname: Baidu
country: CN
我建议应该把采集到的数据存储为SQLite格式,这样会通用得多,统一用SQL操作即可.
CREATE TABLE location (ip INTEGER PRIMARY KEY, country INTEGER);
CREATE TABLE country (id INTEGER PRIMARY KEY AUTOINCREMENT, value VARCHAR (255) UNIQUE);
查询:
$ip = sprintf('%u', ip2long('180.76.76.76'));
SELECT country.value FROM location JOIN country ON location.country = country.id
WHERE location.ip < {$ip} ORDER BY location.ip DESC LIMIT 1;
40多万条数据,我Ubuntu(i5-3230M)上PHP查询耗时约为为0.00014秒.
引用来自“理工小强”的评论
数据是哪里来的 纯真的也一直更新引用来自“熊猫叔叔”的评论
这个怎么用