IPTools for .NET:快速查询全球IP信息

IPTools 是一个用于快速查询全球 IP 地址信息的库,支持国内和国际 IP 查询,提供详细的地理位置信息(如国家、省份、城市)以及经纬度等数据。1. IPTools.ChinaIPTools.China 专注于快速查询中国 IP 地址

IPTools for .NET:快速查询全球IP信息

IPTools 是一个用于快速查询全球 IP 地址信息的库,支持国内和国际 IP 查询,提供详细的地理位置信息(如国家、省份、城市)以及经纬度等数据。

1. IPTools.China

IPTools.China 专注于快速查询中国 IP 地址信息,包括国家、省份、城市和网络运营商。对于非中国 IP,仅支持查询国家信息。

1.1 安装

代码语言:javascript代码运行次数:0运行复制
Install-Package IPTools.China

1.2 下载数据库文件

从 GitHub 下载数据库文件,并将其放置在项目根目录(与 .csproj 文件同级),设置为“复制到输出目录”。

代码语言:javascript代码运行次数:0运行复制
.db

注意:1.2.0 版本开始取消了将数据库文件嵌入程序集,以方便更新并减少程序集大小。

1.3 使用

代码语言:javascript代码运行次数:0运行复制
var ipinfo = IpTool.Search("171.210.12.163");
Console.WriteLine(ipinfo.Country); // 中国
Console.WriteLine(ipinfo.Province); // 四川省
Console.WriteLine(ipinfo.City); // 成都市
Console.WriteLine(ipinfo.NetworkOperator); // 电信

1.4 性能测试

单线程双重 for 循环查询 65,025 个 IP 地址,花费约 170 毫秒。

1.5 自定义 IP 数据库文件

代码语言:javascript代码运行次数:0运行复制
IpToolSettings.ChinaDbPath = "path/to/your/ip2region.db";

2. IPTools.International

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

2.1 安装

代码语言:javascript代码运行次数:0运行复制
Install-Package IPTools.International

2.2 下载数据库文件

从 GitHub 下载数据库文件,并将其放置在项目根目录(与 .csproj 文件同级),设置为“复制到输出目录”。

代码语言:javascript代码运行次数:0运行复制
.mmdb

注意:1.2.0 版本开始取消了将数据库文件嵌入程序集,以方便更新并减少程序集大小。

2.3 使用

代码语言:javascript代码运行次数:0运行复制
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

2.4 国际化

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

代码语言:javascript代码运行次数:0运行复制
IpToolSettings.DefaultLanguage = "en";

示例:

代码语言:javascript代码运行次数:0运行复制
var ipinfo = IpTool.SearchWithI18N("171.210.12.163", "en");
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

2.5 提升查询速度

通过将数据库文件加载到内存中,可以显著提升查询速度(大约提升一倍),但会增加 60-70MB 内存占用。

代码语言:javascript代码运行次数:0运行复制
IpToolSettings.LoadInternationalDbToMemory = true;

版本要求:>= 1.2.0

2.6 性能测试

单线程双重 for 循环查询 65,025 个 IP 地址,花费约 1500 毫秒(内存模式)。

2.7 自定义 IP 数据库文件

代码语言:javascript代码运行次数:0运行复制
IpToolSettings.InternationalDbPath = "path/to/your/GeoLite2-City.mmdb";

3. ASP.NET Core 支持

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

代码语言:javascript代码运行次数:0运行复制
var ipInfo = HttpContext.GetRemoteIpInfo();
// 或者从请求头获取 IP 地址信息(适用于 Nginx、HAProxy 等代理)
var ipInfoFromHeader = HttpContext.GetRemoteIpInfo("X-Forwarded-For");

4. 同时使用 IPTools.China 和 IPTools.International

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

  • DefaultSearcher:默认使用的 IP 搜索器。
  • IpChinaSearcher:对应 IPTools.China 实现的搜索器。
  • IpAllSearcher:对应 IPTools.International 实现的搜索器。

如果你只安装了 IPTools.China,那么 DefaultSearcher 将是 IpChinaSearcherIpAllSearchernull

如果你只安装了 IPTools.International,那么 DefaultSearcher 将是 IpAllSearcherIpChinaSearchernull

如果你同时安装了两个组件,默认情况下 DefaultSearcher 将是 IpChinaSearcherIpChinaSearcherIpAllSearcher 都不会为 null

可以通过以下代码更改默认的搜索器:

代码语言:javascript代码运行次数:0运行复制
IpToolSettings.DefalutSearcherType = IpSearcherType.China;
IpToolSettings.DefalutSearcherType = IpSearcherType.International;
本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。原始发表:2025-03-30,如有侵权请联系 cloudcommunity@tencent 删除ip程序内存数据库console

发布者:admin,转转请注明出处:http://www.yc00.com/web/1748057832a4724824.html

相关推荐

  • IPTools for .NET:快速查询全球IP信息

    IPTools 是一个用于快速查询全球 IP 地址信息的库,支持国内和国际 IP 查询,提供详细的地理位置信息(如国家、省份、城市)以及经纬度等数据。1. IPTools.ChinaIPTools.China 专注于快速查询中国 IP 地址

    2小时前
    10

发表回复

评论列表(0条)

  • 暂无评论

联系我们

400-800-8888

在线咨询: QQ交谈

邮件:admin@example.com

工作时间:周一至周五,9:30-18:30,节假日休息

关注微信