IPTools:.NET 开发者的高性能 IP 地理信息查询利器

IPTools 是一款基于 .NET 的开源库,专为开发者提供高效的 IP 地址地理信息查询功能。它支持中国和全球 IP 查询,提供详细的地理位置信息,包括国家、省份、城市、经纬度等。

IPTools GitHub地址:https://github.com/stulzq/IPTools

IPTools:.NET 开发者的高性能 IP 地理信息查询利器

IPTools.China:专注中国 IP 查询

IPTools.China 组件专注于中国 IP 地址的查询,提供国家、省份、城市和网络运营商等详细信息。对于非中国 IP,仅支持查询国家信息。

安装方法:

Install-Package IPTools.China

数据库文件下载:https://github.com/stulzq/IPTools/raw/master/db/ip2region.db

将数据库文件 ip2region.db 下载并放置在项目根目录,与 .csproj 文件同级,并设置为复制到输出目录。

var ipinfo = IpTool.Search("171.210.12.163");
Console.WriteLine(ipinfo.Country); // 中国
Console.WriteLine(ipinfo.Province); // 四川省
Console.WriteLine(ipinfo.City); // 成都市
Console.WriteLine(ipinfo.NetworkOperator); // 电信

性能测试:

在单线程双重 for 循环中查询 65,025 个 IP 地址,耗时约 170 毫秒。

自定义数据库文件路径:

IpToolSettings.ChinaDbPath = "path/to/your/ip2region.db";

IPTools.International:全球 IP 查询支持

IPTools.International 组件支持全球 IP 地址的查询,提供多语言支持,地理信息包括国家、省份、城市、邮政编码、纬度和经度。

安装方法:

Install-Package IPTools.International

数据库文件下载:

数据库文件下载:https://github.com/stulzq/IPTools/raw/master/db/GeoLite2-City.mmdb

将数据库文件 GeoLite2-City.mmdb 下载并放置在项目根目录,与 .csproj 文件同级,并设置为复制到输出目录。

使用示例:

var ipinfo = IpTool.SearchWithI18N("171.210.12.163");
Console.WriteLine(ipinfo.Country); // China
Console.WriteLine(ipinfo.CountryCode); // CN
Console.WriteLine(ipinfo.Province); // Sichuan
Console.WriteLine(ipinfo.ProvinceCode); // SC
Console.WriteLine(ipinfo.City); // Chengdu
Console.WriteLine(ipinfo.Latitude); // 30.6667
Console.WriteLine(ipinfo.Longitude); // 104.6667
Console.WriteLine(ipinfo.AccuracyRadius); // 50

设置语言:

默认语言为中文,可通过以下代码设置其他语言(例如英文):

IpToolSettings.DefaultLanguage = "en";

提升查询速度:

将数据库文件加载到内存中可显著提升查询速度,但会增加约 60-70MB 的内存占用:

IpToolSettings.LoadInternationalDbToMemory = true;

性能测试:

在内存模式下,单线程双重 for 循环查询 65,025 个 IP 地址,耗时约 1500 毫秒。

自定义数据库文件路径:

IpToolSettings.InternationalDbPath = "path/to/your/GeoLite2-City.mmdb";

ASP.NET Core 支持

IPTools 提供了对 HttpContext 对象的扩展方法,便于在 ASP.NET Core 应用中获取远程 IP 信息:

var ipInfo = HttpContext.GetRemoteIpInfo();
// 或者从请求头获取 IP 地址信息(适用于 Nginx、HAProxy 等代理)
var ipInfoFromHeader = HttpContext.GetRemoteIpInfo("X-Forwarded-For");

同时使用 IPTools.China 和 IPTools.International

IPTools.China 和 IPTools.International 都实现了 IIpSearcher 接口,IpTool 类在加载时会根据已安装的程序包进行初始化。

  • 如果只安装了 IPTools.China,则 DefaultSearcher 为 IpChinaSearcher,IpAllSearcher 为 null。
  • 如果只安装了 IPTools.International,则 DefaultSearcher 为 IpAllSearcher,IpChinaSearcher 为 null。
  • 如果同时安装了两个组件,默认情况下 DefaultSearcher 为 IpChinaSearcher,IpChinaSearcher 和 IpAllSearcher 都不为 null。

更改默认搜索器:

IpToolSettings.DefalutSearcherType = IpSearcherType.China;
IpToolSettings.DefalutSearcherType = IpSearcherType.International;

IPTools 为 .NET 开发者提供了强大且灵活的 IP 地址地理信息查询功能,支持中国和全球 IP 查询,满足多种应用场景的需求。其高性能和易用性使其成为构建地理位置相关功能的理想选择。

评论 添加
暂无评论,来聊两句?