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); // CNConsole.WriteLine(ipinfo.Province); // 四川省Console.WriteLine(ipinfo.ProvinceCode); // SCConsole.WriteLine(ipinfo.City); // 成都Console.WriteLine(ipinfo.Latitude); // 30.6667Console.WriteLine(ipinfo.Longitude); // 104.6667Console.WriteLine(ipinfo.AccuracyRadius);// 50
(3) 国际化
IpTool.SearchWithI18N("你的ip地址");
示例.
var ipinfo = IpTool.SearchWithI18N("171.210.12.163","en");//如果不设置 language code, 默认将会使用中文Console.WriteLine(ipinfo.Country); // ChinaConsole.WriteLine(ipinfo.CountryCode); // CNConsole.WriteLine(ipinfo.Province); // SichuanConsole.WriteLine(ipinfo.ProvinceCode); // SCConsole.WriteLine(ipinfo.City); // ChengduConsole.WriteLine(ipinfo.Latitude); // 30.6667Console.WriteLine(ipinfo.Longitude); // 104.6667Console.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 都实现了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 如果你觉得有用,欢迎来个 star 支持一下。
原文出处:https://www.cnblogs.com/stulzq/p/9502936.html