从网站访问者处获取国家名称
本文关键字:国家 获取 网站 访问者 | 更新日期: 2023-09-27 18:17:47
我想知道一种方法,我可以得到谁正在访问一个网站(我的网站)的所有游客的国家名称。我已经看到了maxmind.com
,它是如此复杂的设置,因为我是一个初学者。希望能得到一些好的答案。我已经在这个网站上尝试了很多东西,但还是没有找到一个解决方案。
GeoServiceReference.GeocodeServiceClient client = new GeoServiceReference.GeocodeServiceClient();
var countries = new List<string>();
for (double lat = 0; lat < 360; lat+=0.1)
for(double lon = 0; lon < 360; lon+=0.1)
{
var result = client.ReverseGeocode(new GeoServiceReference.ReverseGeocodeRequest
{
Location = new GeoServiceReference.Location
{
Latitude = lat,
Longitude = lon
}
});
if (!countries.Contains(result.Results.First().Address.CountryRegion))
{
Console.WriteLine(result.Results.First().Address.CountryRegion);
countries.Add(result.Results.First().Address.CountryRegion);
}
}
作为Maxmind的替代方案,freegeoip.net提供了一个基于Maxmind遗留数据库的免费REST服务。它非常容易使用——你只需要以以下格式向URL发出一个HTTP GET请求:
http://freegeoip.net/json/{ip_or_hostname}
您可以使用RestSharp之类的库(同样非常易于使用)来发出此请求并解析结果。
下面是一个简单的例子,它可以为你指明正确的方向:
public Geolocation GetGeolocationData(string ipAddress)
{
var client = new RestClient("http://freegeoip.net/");
var request = new RestRequest("json/{ip}");
request.AddUrlSegment("ip", ipAddress);
var response = client.Execute<Geolocation>(request);
return response.Data;
}
在这里,我假设Geolocation
是一个类,它的一些属性与REST服务返回的JSON结果中的名称相匹配,例如:
public class Geolocation
{
public string CountryName { get; set; }
...
}
最方便的工具是API,或者如果您想要托管数据并在服务器上执行查找,那么您可以考虑获取数据库的副本。http://www.ipinfodb.com