.NET Core 開源工具 IPTools - 快速查詢 IP 地理位置、經緯度信息

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 都實現了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 如果你覺得有用,歡迎來個 star 支持一下。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章