介绍
GeoLite2 数据库是一个免费的 IP 地理定位数据库,与 MaxMind 的 GeoIP2 数据库有一定可比性,但不如后者准确。GeoLite2 Country 与 City 数据库在每月的第一个周二更新。GeoLite2 ASN 数据库的更新时间为每周二。
我们做开发的时候,用户注册或者登陆的时候,都可以获取ip地址,我们想知道该ip属于哪个城市,我们可以通过城市来统计分析用户,这时,ip数据库就显得非常重要了!
网址:https://dev.maxmind.com/zh-hans/geoip/geoip2/geolite2/
使用
我们首先从官网上面下载GeoLite2 City和GeoLite2 Country,前者包含城市,后者不包含城市,只能通过ip获取到归属的国家。
如何用c#调用呢?首先创建.net 4.5的项目,然后用nuget执行如下命令:
这个库使用.NETFramework 4.5版和以上和.NET标准1.4或以上。
安装完成以后,把“GeoLite2-City.mmdb”文件记得拷贝到程序的bin目录下面!!!
执行如下代码:
结果如下:
https://www.itsvse.com by:小渣渣 输入ip地址为:47.94.71.45
city {"geoname_id":1808926,"names":{"de":"Hangzhou","en":"Hangzhou","es":"Hangzhou","fr":"Hangzhou","ja":"杭州市","pt-BR":"Hangzhou","ru":"Ханчжоу","zh-CN":"杭州"}}
continent {"code":"AS","geoname_id":6255147,"names":{"de":"Asien","en":"Asia","es":"Asia","fr":"Asie","ja":"アジア","pt-BR":"ásia","ru":"Азия","zh-CN":"亚洲"}}
country {"geoname_id":1814991,"iso_code":"CN","names":{"de":"China","en":"China","es":"China","fr":"Chine","ja":"中国","pt-BR":"China","ru":"Китай","zh-CN":"中国"}}
locatio{过滤}n {"accuracy_radius":50,"latitude":30.2936,"longitude":120.1614,"time_zone":"Asia/Shanghai"}
registered_country {"geoname_id":1814991,"iso_code":"CN","names":{"de":"China","en":"China","es":"China","fr":"Chine","ja":"中国","pt-BR":"China","ru":"Китай","zh-CN":"中国"}}
subdivisions [{"geoname_id":1784764,"iso_code":"ZJ","names":{"en":"Zhejiang","fr":"Province de Zhejiang","zh-CN":"浙江省"}}]
请按任意键继续. . .
我们查询了3个ip地址,一个是百度的ip地址,一个是本机的外网ip地址,还有一个是本网站的ip地址。如下图:
只有我们本站的ip查询出来是不准确的,ip数据库不可能做到100%准确,因为ip每天都能在变化,在分配到不同的城市。
GeoIP2 City 准确性
https://www.maxmind.com/zh/geoip2-city-accuracy-comparison
最后,附上源代码:
|