.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 地理位置、经纬度信息相关推荐
- 全国计算机系统导出名单,墨涩网 - 快速查询导出电脑常用信息——墨涩网
我们的查询电脑硬件信息或者软件版本信息的时候,一般都是在电脑的"设备管理器"和电脑系统属性里面查看,或者直接用下载安装鲁大师查看,今天介绍一个利用bat文件快速查询导出电脑常用信息 ...
- 使用Python批量查询ip地址的信息
使用Python批量查询ip地址的信息 import requests from openpyxl import load_workbook from bs4 import BeautifulSoup ...
- 使用百度地图Web服务API查询地点的经纬度信息
使用百度地图Web服务API查询地点的经纬度信息 API地理编码服务 数据 结果 API地理编码服务 地理编码服务(又名Geocoder)是一类Web API接口服务: 地理编码服务提供将结构化地址数 ...
- 工具及方法 - 查询IP信息
IP信息查询网站: Comprehensive IP address data, IP geolocation API and database - IPinfo.io 这个网站提供最稳定.准确和深入 ...
- oppo手机工程模式清除数据需要密码_「MIUI玩机技巧27」如何快速查询和清除电池信息...
作为安卓手机的用户,不知道你现在的手机的电量使用如何?是不是感觉到手机电量掉的很快?现在智能手机耗电量确实很大,在正常时间的情况下,好像都是不到一天就没电了?好一点的情况一天一充,我基本上都是一天充电 ...
- 【实战篇】| 模拟 20 万数据快速查询 IP 归属地
点击"小詹学Python",选择"置顶"公众号 重磅干货,第一时间送达 本文转载自一个不甘平凡的码农 这篇文章主要深入数据结构与算法在解决实际问题怎么运用和分析 ...
- 华为开源构建工具_5个开源工具可快速构建地图应用
华为开源构建工具 近年来,地理信息系统(GIS)引起的所有关注都可能使您认为它们是新事物. 实际上,超过160年前,地理空间数据在确定1854年伦敦霍乱致命爆发的来源方面发挥了重要作用. 当地医生约翰 ...
- 任何快速查询IP归属地
最近公司项目需要做一个IP归属地查询的功能,想着如果用现成的API就可以大大提高开发效率,所以在网上的API商店搜索了一番,发现了 APISpace,它里面的IP归属地API非常符合我的开发需求. I ...
- 如何快速查询ip地址?
1.打开Excel软件 2.然后在任意单元格录入ip地址 3.接着鼠标点击[DIY工具箱] 4.点击[更多],然后选择[查ip归属地] 5.接着我们点击[确定] 6.最后选择合适的保存位置即可 ...
最新文章
- 机器学习的12大经验总结
- java高效遍历匹配,使用cypher或遍历api仅匹配路径极端的单个节点
- vue不是内部或外部命令
- datatable 导入mysql 解决_将DataTable中的数据导入到数据库中
- java.net.UnknownHostException: dbmtimehadoop
- 重邮2021计算机复试,2021复试调剂信息七
- c语言小数加分,求救:c语言课程设计 员工工资管理程序 有加分的。谢谢
- 使用poi统计工作职责
- 为什么要使用工业以太网交换机?
- scrapy startproject【学习笔记02】
- element表格实现树形全选_很实用!word中全选的快捷键介绍及使用方法
- C++中枚举的用法(比较全面)(转)
- c/c++教程 - 1.6 程序流程结构 if switch do while for break continue goto ?:三目运算符
- JavaScript alert延迟弹出
- 擦地机器人毕业设计_救援机器人毕业设计
- tcp网络示例客户端端以及代码,演示
- matlab中单位格式,[转载]matlab中的数据显示格式-format
- C#把excel数据转换成DataTable
- python选取tensor某一维_超简单!pytorch入门教程(一):Tensor
- java.lang.UnsatisfiedLinkError: /usr/local/java/jdk1.8.0_91/jre/lib/amd64/libawt_xawt.so: libXtst.so