2016-12-23 10:02

引用来自“imxae”的评论

求perl接口
perl不会玩啊,有兴趣可以参考现在的客户端和文档http://dongyado.com/tools/2016/08/18/structure-of-ip2region-database-file/加一个!
2016-12-22 18:56

引用来自“理工小强”的评论

数据是哪里来的 纯真的也一直更新

引用来自“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秒.
这个方案是可行的,whois的数据不敢恭维,我自己网络的ip和服务器的ip的信息都是不对的。项目里面有原始的txt数据,可以导入到SQLite
2016-12-22 18:27

引用来自“理工小强”的评论

数据是哪里来的 纯真的也一直更新

引用来自“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秒.
你怎么显示是深圳的网友呀?
2016-12-22 18:25
不错哦
2016-12-22 18:19

引用来自“理工小强”的评论

数据是哪里来的 纯真的也一直更新
访问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秒.
2016-12-22 12:01

引用来自“理工小强”的评论

数据是哪里来的 纯真的也一直更新
http://git.oschina.net/lionsoul/ip2region,就是因为纯真的没法满足要求,问题太多才开发的ip2region
2016-12-22 11:44

引用来自“熊猫叔叔”的评论

这个怎么用
http://git.oschina.net/lionsoul/ip2region,阅读一下README文档就知道了!
回复 @
{{emojiItem.symbol}}
返回顶部
顶部