快速查询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. Docker 网络之进阶篇

    笔者在<Docker 基础 : 网络配置>一文中简单介绍了容器网络的基本用法,当时网络的基本使用方式还处于 --link 阶段.时过境迁,随着 docker 的快速发展,其网络架构也在不断 ...

  2. Thread类详解 多线程中篇(二)

    Java.lang.Thread是Java应用程序员对Java多线程的第一站,Thread就是对Java线程本身的抽象 所以在Java中的线程编程概念中,一个Thread实例 == 一个线程 线程有哪 ...

  3. pycharm安装破解go插件

    pycharm 2018以前版本安装go插件可以直接在plugins中搜索 go 插件,然后安装.若是2018以后的版本,go 变成了收费插件,plugins 搜不到.然后Google了一下,有人提供 ...

  4. AppBoxFuture(一): Hello Future!

      AppBoxFuture是一个快速应用框架(Rapid Application Framework),是作者十几年从事信息化建设的经验结晶.框架具备以下一些特色: 极简的分布式系统架构 根据需要可 ...

  5. SpringBoot整合系列-整合SpringMVC

    原创作品,可以转载,但是请标注出处地址:https://www.cnblogs.com/V1haoge/p/9984607.html SpringBoot整合Spring MVC 步骤 第一步:添加必 ...

  6. 基于SpringMVC+Spring+MyBatis实现秒杀系统【业务逻辑】

    前言 该篇主要实现秒杀业务层,秒杀业务逻辑里主要包括暴露秒杀接口地址.实现秒杀业务逻辑.同时声明了三个业务类:Exposer.SeckillExecution.SeckillResult. Expos ...

  7. [android]android下apk的安装过程

    /********************2016年4月23日更新********************************/ 知乎:有什么apk分析工具? 拿到了一个apk文件,怀疑不安全,在 ...

  8. 2018/12/21:Date类

    1.Date类 getDate()返回一个月的某一天 1-31 getDay()返回一周的某一天 getFullyear()返回四位数的年份 getMonth()返回月份 比实际情况小 1 0代表1月 ...

  9. GC垃圾回收

    我们在开发需求的时候,可能很少关注到垃圾回收,因为我们绝大多数的时候都是使用的托管资源,托管资源的内存回收.net已经帮我们做了,但是.net的内存回收不是实时的,所以我们还是要关注下.net的垃圾回 ...

  10. [JS设计模式]:构造函数模式(2)

    基本用法 function Car(model, year, miles) { this.model = model; this.year = year; this.miles = miles; th ...