首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >.NET Core 开源工具 IPTools - 快速查询 IP 地理位置、经纬度信息

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

作者头像
晓晨
发布2018-09-20 16:12:15
8760
发布2018-09-20 16:12:15
举报
文章被收录于专栏:晓晨的专栏晓晨的专栏

1. IPTools.China

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

(1) 安装

Install-Package IPTools.China

(2) 使用

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);// 电信

(3) 国际化

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

(4) 性能测试

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

2. IPTools.International

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

(1) 安装

Install-Package IPTools.International

(2) 使用

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

(3) 国际化

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";

(4) 性能测试

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

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 如果你觉得有用,欢迎来个 star 支持一下。

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2018-08-21 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1. IPTools.China
    • (1) 安装
      • (2) 使用
        • (3) 国际化
          • (4) 性能测试
          • 2. IPTools.International
            • (1) 安装
              • (2) 使用
                • (3) 国际化
                  • (4) 性能测试
                  • 3. ASP.NET Core 支持
                  • 4. 同时使用 IPTools.China 和 IPTools.International
                  • 5. 开源地址
                  领券
                  问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档