netnr 2022-07-20 18:26:59 2022-07-23 10:36:18 👁830 💬0

来源

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);
}

链接