.NET Core 开源工具 IPTools - 快速查询 IP 地理位置、经纬度信息
快速查询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 都实现了 IIpSearcher,IpTool类在加载时会检测你所安装的程序包进行初始化,且仅仅初始化一次。IpTool具有三个静态只读属性,分别是 DefaultSearcher、IpChinaSearcher、IpAllSearcher。
DefaultSearcher。IpTool.Search()和IpTool.SearchWithI18N()将会使用的默认Ip搜索器。IpChinaSearcher。对应 IPTools.China 实现的搜索器。IpAllSearcher。对应 IPTools.International 实现的搜索器。
如果你只是安装了 IPTools.China 那么,DefaultSearcher 将会是 IpChinaSearcher,IpAllSearcher将会为 null。
如果你只是安装了 IPTools.International 那么,DefaultSearcher 将会是 IpAllSearcher,IpChinaSearcher将会为 null。
如果你同时安装了以上两个组件,那么默认情况下 DefaultSearcher 将会是 IpChinaSearcher,IpChinaSearcher 和 IpAllSearcher 都不会为null。
改变DefaultSearcher 所使用的默认 Searcher 请使用下面的代码,如果你同时安装了两个组件才会生效。
IpToolSettings.DefalutSearcherType = IpSearcherType.China;
IpToolSettings.DefalutSearcherType = IpSearcherType.International;
5. 开源地址
https://github.com/stulzq/IPTools
.NET Core 开源工具 IPTools - 快速查询 IP 地理位置、经纬度信息的更多相关文章
- vulcanjs 开源工具方便快速开发react graphql meteor 应用
vulcan 开源工具方便快速开发react graphql meteor 应用 操作环境mac os 安装 meteor 安装(此安装有点慢,可以通过正确上网解决) curl https://ins ...
- 【VB.NET】利用纯真IP数据库查询IP地址及信息
几年前从某个博客抄来的,已经忘记原地址了,如果需要C#版的,可以在博客园搜到吧.我因为自己用,所以转换为了VBNET代码,而且也放置了很久,今天无意间翻出来,就分享给大家吧. 首先,先下载 纯真数据库 ...
- 一些可以查询IP地理位置、身份证所在地、手机归属地的接口
查询IP http://ip.dnsexit.com/ 新浪的IP查询接口: 新浪的:http://counter.sina.com.cn/ip?ip=IP地址 返回Js数据,感觉不是很精确,可以把问 ...
- php根据IP获取经纬度信息--百度地图篇
一.前言 之前一篇写过 php根据IP获取IP所在城市 ,但是还想再精确一点,获取这个IP所在的经纬度信息,该怎么办呢? 百度地图为我提供了一种解决方案(当然还有其他的解决方案). 先总的来数一下, ...
- 开源工具 DotnetRSA 快速生成和转换RSA秘钥
一.简介 DotnetRSA 是一个利用 .NET Core 2.1 开发的 .NET Global Tool,是可以想npm全局安装一样,安装在你的系统中,只需敲一行命令便可以快速生成RSA加密算法 ...
- 任何快速查询IP归属地
最近公司项目需要做一个IP归属地查询的功能,想着如果用现成的API就可以大大提高开发效率,所以在网上的API商店搜索了一番,发现了 APISpace,它里面的IP归属地API非常符合我的开发需求. ...
- python3通过纯真IP数据库查询IP归属地信息
在网上看到的别人写的python2的代码,修改成了python3. 把纯真IP数据库文件qqwry.dat放到czip.py同一目录下. #! /usr/bin/env python # -*- co ...
- Linux shell查询ip归属地
起因 有的时候写脚本需要能够在脚本中获取到ip的归属地,比如分析登录日志列出攻击者的相关信息等. 可以使用whois来查询ip的详细信息,但是whois并不是每台机器预装的,而且我想看中文的结果,所以 ...
- 【VB.NET】通过 IPIP.NET 数据库来查询IP地址
上一次介绍了利用纯真数据库查询IP地址详细信息的方法.然而纯真数据库是由网友反馈所提供的,很多数据描述并不准确,所以我上网找了一些其他的IP数据库,最后就找到了 ipip.net 这个网站所提供的IP ...
随机推荐
- 痞子衡嵌入式:串口调试工具Jays-PyCOM诞生记(2)- 界面构建(wxFormBuilder3.8.0)
大家好,我是痞子衡,是正经搞技术的痞子.今天痞子衡给大家介绍的是串口调试工具Jays-PyCOM诞生之界面构建. 一个软件的UI界面是非常重要的,这是软件与用户交互的接口,软件功能即使再强大,但如果没 ...
- C指针和数组的关系详解
1.C中数组和指针的关系 对于任意类型的数组arr,对于同类型的指针类型parr(确切一点,可以假设类型为int,即int arr[], *parr).它们之间有如下"内幕": 1 ...
- Android项目刮刮奖详解(二)
Android项目刮刮奖详解(一) 前言 上期我们简单地实现了一个画板的功能,用户可以在上面乱写乱画,其实,刮刮奖也是如此,用户刮奖的时候也是乱写乱画的. 刮刮奖原理 一共有两层画布,底层画布存放中奖 ...
- 微信公众平台设置URL和Token接收接口事件推送
最近做对接微信闪开发票-微信发票名片,里面有个接收用户提交抬头接口是微信推送事件到公众号后台,该事件将发送至开发者填写的URL(登录公众平台进入[开发者中心设置]). 开发者可通过事件推送完成数据统计 ...
- js cookie存取
if(getCookie('guide') == 'true'){ window.location.href='' } else { setCookie('guide','true'); } func ...
- 程序员奇谈之我写的程序不可能有bug篇
程序员在普通人的印象里是一份严(ku)谨(bi)的职业,也是一个被搞怪吐槽乐此不疲的职业,程序员们面对复杂的代码敲打电脑时连眉头都不会皱一下,但是有一个词却是他们痛苦的根源,它就是Bug. 有不少的新 ...
- spring----bean的使用
这篇文章不介绍spring的相关概念,只记录一下springbean的创建方式和使用方式. 一.bean的创建和调用 1.创建演示需要用到的类:Student.Teacher.Person packa ...
- arcgis api 3.x for js 入门开发系列七图层控制(附源码下载)
前言 关于本篇功能实现用到的 api 涉及类看不懂的,请参照 esri 官网的 arcgis api 3.x for js:esri 官网 api,里面详细的介绍 arcgis api 3.x 各个类 ...
- 为你揭秘知乎是如何搞AI的——窥大厂 | 数智方法论第1期
文章发布于公号[数智物语] (ID:decision_engine),关注公号不错过每一篇干货. 数智物语(公众号ID:decision_engine)出品 策划.编写:卷毛雅各布 「我们相信,在垃圾 ...
- WPF:在DataTemplate中使用DataType
DataTemplate中的DataType的功能实际上和Style中的TargetType很类似. 在Style中,使用了TargetType之后,如果不定义Style的Key,那么这个Style将 ...