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

1. IPTools.China

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

(1) 安装

Install-Package IPTools.China

(2) 下载数据库文件

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

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

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文件同级),并设置复制到输出目录

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

.NET Core 开源工具 IPTools - 快速查询 IP 地理位置、经纬度信息的更多相关文章

  1. vulcanjs 开源工具方便快速开发react graphql meteor 应用

    vulcan 开源工具方便快速开发react graphql meteor 应用 操作环境mac os 安装 meteor 安装(此安装有点慢,可以通过正确上网解决) curl https://ins ...

  2. 【VB.NET】利用纯真IP数据库查询IP地址及信息

    几年前从某个博客抄来的,已经忘记原地址了,如果需要C#版的,可以在博客园搜到吧.我因为自己用,所以转换为了VBNET代码,而且也放置了很久,今天无意间翻出来,就分享给大家吧. 首先,先下载 纯真数据库 ...

  3. 一些可以查询IP地理位置、身份证所在地、手机归属地的接口

    查询IP http://ip.dnsexit.com/ 新浪的IP查询接口: 新浪的:http://counter.sina.com.cn/ip?ip=IP地址 返回Js数据,感觉不是很精确,可以把问 ...

  4. php根据IP获取经纬度信息--百度地图篇

    一.前言 之前一篇写过 php根据IP获取IP所在城市  ,但是还想再精确一点,获取这个IP所在的经纬度信息,该怎么办呢? 百度地图为我提供了一种解决方案(当然还有其他的解决方案). 先总的来数一下, ...

  5. 开源工具 DotnetRSA 快速生成和转换RSA秘钥

    一.简介 DotnetRSA 是一个利用 .NET Core 2.1 开发的 .NET Global Tool,是可以想npm全局安装一样,安装在你的系统中,只需敲一行命令便可以快速生成RSA加密算法 ...

  6. 任何快速查询IP归属地

    最近公司项目需要做一个IP归属地查询的功能,想着如果用现成的API就可以大大提高开发效率,所以在网上的API商店搜索了一番,发现了 APISpace,它里面的IP归属地API非常符合我的开发需求.   ...

  7. python3通过纯真IP数据库查询IP归属地信息

    在网上看到的别人写的python2的代码,修改成了python3. 把纯真IP数据库文件qqwry.dat放到czip.py同一目录下. #! /usr/bin/env python # -*- co ...

  8. Linux shell查询ip归属地

    起因 有的时候写脚本需要能够在脚本中获取到ip的归属地,比如分析登录日志列出攻击者的相关信息等. 可以使用whois来查询ip的详细信息,但是whois并不是每台机器预装的,而且我想看中文的结果,所以 ...

  9. 【VB.NET】通过 IPIP.NET 数据库来查询IP地址

    上一次介绍了利用纯真数据库查询IP地址详细信息的方法.然而纯真数据库是由网友反馈所提供的,很多数据描述并不准确,所以我上网找了一些其他的IP数据库,最后就找到了 ipip.net 这个网站所提供的IP ...

随机推荐

  1. 痞子衡嵌入式:串口调试工具Jays-PyCOM诞生记(2)- 界面构建(wxFormBuilder3.8.0)

    大家好,我是痞子衡,是正经搞技术的痞子.今天痞子衡给大家介绍的是串口调试工具Jays-PyCOM诞生之界面构建. 一个软件的UI界面是非常重要的,这是软件与用户交互的接口,软件功能即使再强大,但如果没 ...

  2. C指针和数组的关系详解

    1.C中数组和指针的关系 对于任意类型的数组arr,对于同类型的指针类型parr(确切一点,可以假设类型为int,即int arr[], *parr).它们之间有如下"内幕": 1 ...

  3. Android项目刮刮奖详解(二)

    Android项目刮刮奖详解(一) 前言 上期我们简单地实现了一个画板的功能,用户可以在上面乱写乱画,其实,刮刮奖也是如此,用户刮奖的时候也是乱写乱画的. 刮刮奖原理 一共有两层画布,底层画布存放中奖 ...

  4. 微信公众平台设置URL和Token接收接口事件推送

    最近做对接微信闪开发票-微信发票名片,里面有个接收用户提交抬头接口是微信推送事件到公众号后台,该事件将发送至开发者填写的URL(登录公众平台进入[开发者中心设置]). 开发者可通过事件推送完成数据统计 ...

  5. js cookie存取

    if(getCookie('guide') == 'true'){ window.location.href='' } else { setCookie('guide','true'); } func ...

  6. 程序员奇谈之我写的程序不可能有bug篇

    程序员在普通人的印象里是一份严(ku)谨(bi)的职业,也是一个被搞怪吐槽乐此不疲的职业,程序员们面对复杂的代码敲打电脑时连眉头都不会皱一下,但是有一个词却是他们痛苦的根源,它就是Bug. 有不少的新 ...

  7. spring----bean的使用

    这篇文章不介绍spring的相关概念,只记录一下springbean的创建方式和使用方式. 一.bean的创建和调用 1.创建演示需要用到的类:Student.Teacher.Person packa ...

  8. arcgis api 3.x for js 入门开发系列七图层控制(附源码下载)

    前言 关于本篇功能实现用到的 api 涉及类看不懂的,请参照 esri 官网的 arcgis api 3.x for js:esri 官网 api,里面详细的介绍 arcgis api 3.x 各个类 ...

  9. 为你揭秘知乎是如何搞AI的——窥大厂 | 数智方法论第1期

    文章发布于公号[数智物语] (ID:decision_engine),关注公号不错过每一篇干货. 数智物语(公众号ID:decision_engine)出品 策划.编写:卷毛雅各布 「我们相信,在垃圾 ...

  10. WPF:在DataTemplate中使用DataType

    DataTemplate中的DataType的功能实际上和Style中的TargetType很类似. 在Style中,使用了TargetType之后,如果不定义Style的Key,那么这个Style将 ...