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); // 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
(3) 國際化
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";
(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 支持一下。