来源
IP2Location LITE
https://lite.ip2location.com/ip2location-lite
GeoLite2
https://dev.maxmind.com/geoip/geolite2-free-geolocation-data
dbip
https://db-ip.com/db/lite.php
实践结果分析
GeoLite2 和 dbip 为相同格式 mmdb ,包含 IPv4 IPv6
IP2Location 区分 IPv4 和 IPv6
IP2Location DB5 IPv4 70MB
IP2Location DB5 IPv6 130MB
查询国家、省、市、经纬度,仅英文、中文拼音
GeoLite2 ASN 8MB
查询 ASN 组织
GeoLite2 City 65MB
查询城市,含州、国家、经纬度,只能查询到国家,多语言支持
dbip asn 7MB
查询 ASN 组织
dbip city 100MB
查询城市,含州、国家、城市、经纬度,城市仅有英文
GeoLite2 包较小,但是不支持城市查询,多语言支持,mmdb 格式
dbip 包比较大,可查询城市,仅英文,mmdb 格式
IP2Location 包比较大,支持城市查询,仅英文,ASN 仅提供 CSV 格式
注意:国家识别为 台湾、香港、澳门 的需要处理,坚定捍卫国家主权和领土完整
使用
GeoLite2
https://github.com/maxmind/MaxMind-DB-Reader-dotnet
mmdb 格式安装依赖包
Install-Package MaxMind.Db
IP2Location LITE
https://github.com/ip2location/ip2location-dotnet
Install-Package IP2Location.IPGeolocation
查询示例
using MaxMind.Db;
using System.Net;
var address = "116.179.32.90";
using (var reader = new Reader("GeoLite2-ASN.mmdb"))
{
var data = reader.Find<Dictionary<string, object>>(IPAddress.Parse(address));
Console.WriteLine(data);
}
var ip2 = new IP2Location.Component();
{
ip2.Open("IP2LOCATION-LITE-DB5.BIN");
var data = ip2.IPQuery(address);
Console.WriteLine(data);
}