.NET Core 开源工具 IPTools - 快速查询 IP 地理位置、经纬度信息

在线体验各类最新模型,更有模型 免费Token 额度领取!
立即体验
简介:

快速查询IP信息,支持国内和国外IP信息查询,支持查询经纬度,地理位置最高支持到城市。

1. IPTools.China

快速查询中国IP地址信息,包含国家、省份、城市、和网络运营商。非中国IP只支持查询国家。

(1) 安装

Install-Package IPTools.China

(2) 下载数据库文件

https://github.com/stulzq/IPTools/raw/master/db/ip2region.db

将数据库文件下载完成以后,放到你的项目根目录(与*.csprj文件同级),并设置复制到输出目录

image

1.2.0版本开始就取消了将数据库文件嵌入到程序集,方便更新,且减少程序集大小。

(3) 使用

IpTool.Search("你的ip地址");

示例.

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

(4) 国际化

不支持国际化,所以不能使用IpTool.SearchWithI18NAsync()

(5) 性能测试

单线程,双重for循环,查询65025个IP,花费170毫秒。

2. IPTools.International

快速查询全球IP信息,支持多语言,地理信息包括国家、省份、城市、邮政编码、纬度和精度。

(1) 安装

Install-Package IPTools.International

(2) 下载数据库文件

https://github.com/stulzq/IPTools/raw/master/db/GeoLite2-City.mmdb

将数据库文件下载完成以后,放到你的项目根目录(与*.csprj文件同级),并设置复制到输出目录

image

1.2.0版本开始就取消了将数据库文件嵌入到程序集,方便更新,且减少程序集大小。

(3) 使用

IpTool.Search("你的ip地址");

示例.

var ipinfo = IpTool.SearchWithI18N("171.210.12.163");
Console.WriteLine(ipinfo.Country); // 中国
Console.WriteLine(ipinfo.CountryCode); // CN
Console.WriteLine(ipinfo.Province); // 四川省
Console.WriteLine(ipinfo.ProvinceCode); // SC
Console.WriteLine(ipinfo.City); // 成都
Console.WriteLine(ipinfo.Latitude); // 30.6667
Console.WriteLine(ipinfo.Longitude); // 104.6667
Console.WriteLine(ipinfo.AccuracyRadius);// 50

(4) 国际化

IpTool.SearchWithI18N("你的ip地址");

示例.

var ipinfo = IpTool.SearchWithI18N("171.210.12.163","en");//如果不设置 language code, 默认将会使用中文
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

默认语言为中文,如何改变?使用下面的代码进行设置。中文为 zh-CN,英文为en

IpToolSettings.DefaultLanguage = "en";

(5) 提升查询速度

通过以下设置,将会提升一倍的查询速度,其原理是将数据库文件完全加载到内存,付出的代价是内存将会增加60-70M,以空间换时间,这点需要注意。

IpToolSettings.LoadInternationalDbToMemory = true;

版本要求 >= 1.2.0

(6) 性能测试

单线程,双重for循环,查询65025个IP,花费1500毫秒(Memory)。

3. ASP.NET Core 支持

IPTools 提供了 HttpContext对象的扩展方法。

使用:

HttpContext.GetRemoteIpInfo();
HttpContext.GetRemoteIpInfo(headerKey); // 从请求头获取ip地址信息,如果你使用了nginx、haproxy等代理

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

IPTools.China 和 IPTools.International 都实现了 IIpSearcherIpTool类在加载时会检测你所安装的程序包进行初始化,且仅仅初始化一次。IpTool具有三个静态只读属性,分别是 DefaultSearcherIpChinaSearcherIpAllSearcher

  • DefaultSearcherIpTool.Search()IpTool.SearchWithI18N() 将会使用的默认Ip搜索器。
  • IpChinaSearcher。对应 IPTools.China 实现的搜索器。
  • IpAllSearcher。对应 IPTools.International 实现的搜索器。

如果你只是安装了 IPTools.China 那么,DefaultSearcher 将会是 IpChinaSearcherIpAllSearcher将会为 null。

如果你只是安装了 IPTools.International 那么,DefaultSearcher 将会是 IpAllSearcherIpChinaSearcher将会为 null。

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

改变DefaultSearcher 所使用的默认 Searcher 请使用下面的代码,如果你同时安装了两个组件才会生效。

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

5. 开源地址

https://github.com/stulzq/IPTools

相关文章
|
Shell 网络安全 C#
一款 .NET 开源、功能强大的远程连接管理工具,支持 RDP、VNC、SSH 等多种主流协议!
一款 .NET 开源、功能强大的远程连接管理工具,支持 RDP、VNC、SSH 等多种主流协议!
543 4
|
9月前
|
开发框架 .NET C#
ASP.NET Core Blazor 路由配置和导航
大家好,我是码农刚子。本文系统介绍Blazor单页应用的路由机制,涵盖基础配置、路由参数、编程式导航及高级功能。通过@page指令定义路由,支持参数约束、可选参数与通配符捕获,结合NavigationManager实现页面跳转与参数传递,并演示用户管理、产品展示等典型场景,全面掌握Blazor路由从入门到实战的完整方案。
669 6
|
缓存 开发框架 .NET
一个功能丰富的 .NET 工具库 XiHan.Framework.Utils
XiHan.Framework.Utils 是一个功能全面的 .NET 工具库,包含字符串处理、集合扩展、加密解密、分布式 ID、文件操作、缓存、线程、国际化等模块。设计上注重高内聚、低耦合,适用于各类 .NET 应用开发。支持 AES 加密、树形结构转换、分页过滤、日志输出等功能,提供简单易用的 API。可通过 NuGet 快速安装,源码开放,采用 MIT 协议。
452 56
|
开发框架 前端开发 .NET
一个适用于 .NET 的开源整洁架构项目模板
一个适用于 .NET 的开源整洁架构项目模板
383 26
|
人工智能 自然语言处理 数据中心
D1net阅闻|DeepSeek开源放大招:FlashMLA让H800算力狂飙!曝光低成本秘笈
D1net阅闻|DeepSeek开源放大招:FlashMLA让H800算力狂飙!曝光低成本秘笈
|
网络协议 定位技术 网络安全
IPIP.NET-IP地理位置数据
IPIP.NET 是一家专注于 IP 地理位置数据的提供商,基于 BGP/ASN 数据与全球 800+ 网络监测点技术,提供高精度的 IPv4 和 IPv6 定位服务。其核心服务包括地理位置查询、详细地理信息和网络工具等,广泛应用于网络安全、广告营销、CDN 优化等领域。数据覆盖全球,支持多语言,每日更新确保实时性。IPIP.NET 提供 API 接口、离线数据库及多种语言 SDK,方便开发者集成使用。
3015 0
|
区块链 C# Windows
PasteEx:一款.NET开源的Windows快捷粘贴神器
PasteEx:一款.NET开源的Windows快捷粘贴神器
366 17
|
Web App开发 C# Windows
一款.NET开源的Windows资源管理器标签页工具
一款.NET开源的Windows资源管理器标签页工具
351 5
|
监控 前端开发 API
一款基于 .NET MVC 框架开发、功能全面的MES系统
一款基于 .NET MVC 框架开发、功能全面的MES系统
775 5
|
开发框架 前端开发 JavaScript
ASP.NET MVC 教程
ASP.NET 是一个使用 HTML、CSS、JavaScript 和服务器脚本创建网页和网站的开发框架。
482 7