geolocation - info - maxmind check ip
Identificación del país por dirección IP (10)
¿Hay alguna manera de averiguar el nombre del país simplemente mirando una dirección IP? Quiero decir, ¿los países tienen rangos específicos de direcciones IP? Por ejemplo, Australia puede tener direcciones IP solo en el rango de 123.45.56.89 - 231.54.65.98
(solo un ejemplo)
Creo que lo que estás buscando es una base de datos de geolocalización de IP o un proveedor de servicios. Hay muchos por ahí y algunos son gratuitos (obtenga lo que paga).
Aunque no he usado este servicio anteriormente, dice que es en tiempo real. https://kickfire.com/kf-api
Pero haga una búsqueda en Google en IP Geo y obtendrá más resultados de los que necesita.
Estoy de acuerdo con las respuestas anteriores, la mejor manera de obtener el país de la dirección IP es Maxmind.
Si desea escribir código en java, puede usar, por ejemplo, los archivos geoip-api-1.2.10.jar y geoIP dat (GeoIPCity.dat), que se pueden encontrar a través de google.
El siguiente código puede ser útil para obtener casi toda la información relacionada con la ubicación, también estoy usando el mismo código.
public static String getGeoDetailsUsingMaxmind(String ipAddress, String desiredValue)
{
Location getLocation;
String returnString = "";
try
{
String geoIPCity_datFile = System.getenv("AUTOMATION_HOME").concat("/tpt/GeoIP/GeoIPCity.dat");
LookupService isp = new LookupService(geoIPCity_datFile);
getLocation = isp.getLocation(ipAddress);
isp.close();
//Getting all location details
if(desiredValue.equalsIgnoreCase("latitude") || desiredValue.equalsIgnoreCase("lat"))
{
returnString = String.valueOf(getLocation.latitude);
}
else if(desiredValue.equalsIgnoreCase("longitude") || desiredValue.equalsIgnoreCase("lon"))
{
returnString = String.valueOf(getLocation.longitude);
}
else if(desiredValue.equalsIgnoreCase("countrycode") || desiredValue.equalsIgnoreCase("country"))
{
returnString = getLocation.countryCode;
}
else if(desiredValue.equalsIgnoreCase("countryname"))
{
returnString = getLocation.countryName;
}
else if(desiredValue.equalsIgnoreCase("region"))
{
returnString = getLocation.region;
}
else if(desiredValue.equalsIgnoreCase("metro"))
{
returnString = String.valueOf(getLocation.metro_code);
}
else if(desiredValue.equalsIgnoreCase("city"))
{
returnString = getLocation.city;
}
else if(desiredValue.equalsIgnoreCase("zip") || desiredValue.equalsIgnoreCase("postalcode"))
{
returnString = getLocation.postalCode;
}
else
{
returnString = "";
System.out.println("There is no value found for parameter: "+desiredValue);
}
System.out.println("Value of: "+desiredValue + " is: "+returnString + " for ip address: "+ipAddress);
}
catch (Exception e)
{
System.out.println("Exception occured while getting details from max mind. " + e);
}
finally
{
return returnString;
}
}
La red de distribución de contenido CloudFront de Amazon ahora puede configurarse para pasar esta información como un encabezado. Dado el tamaño de Amazon (son grandes y estables, no van a ningún lado) y esta es la configuración del código (no hay API de terceros para aprender o código para mantener), todos creen que esta es la mejor opción.
Si no usa AWS CloudFront, verificaría si su CDN tiene una opción de encabezado similar que se puede activar. Por lo general, los grandes proveedores presionan rápidamente por la paridad de características. Y si no está utilizando un CDN, puede poner CloudFront frente a su infraestructura y simplemente establecer el origen para resolver lo que está utilizando actualmente.
Además, también tiene sentido resolver esto en el nivel CDN. Su CDN ya tiene que descubrir la ubicación geográfica para enrutar al usuario al nodo de contenido más cercano, también podría pasar esta información y no encontrarla dos veces a través de una API de un tercero (esto se convierte en punto de bloqueo para su aplicación, esperando una geo búsqueda de ubicación para resolver). No es necesario hacer este trabajo dos veces (y la segunda vez, podría decirse que es menos resistente [por ej., Búsqueda geográfica de terceros]).
https://aws.amazon.com/blogs/aws/enhanced-cloudfront-customization/
Geo-Targeting : CloudFront detectará el país de origen del usuario y le transmitirá el código del condado en el encabezado
CloudFront-Viewer-Country
. Puede utilizar esta información para personalizar sus respuestas sin tener que usar URL específicas de cada país.
Las direcciones IP se utilizan con bastante frecuencia para la segmentación geográfica, es decir, la personalización del contenido de un sitio web por ubicación / país del visitante, pero no están asociados permanentemente con un país y, a menudo, se vuelven a asignar.
Para lograr lo que desea, necesita mantener una búsqueda actualizada para asignar una dirección IP a un país, ya sea con una base de datos o una API de geolocalización. Aquí hay un ejemplo:
> https://ipapi.co/8.8.8.8/country
US
> https://ipapi.co/8.8.8.8/country_name
United States
O puede usar la API completa para obtener la ubicación completa de la dirección IP, por ejemplo
https://ipapi.co/8.8.8.8/json
{
"ip": "8.8.8.8",
"city": "Mountain View",
"region": "California",
"region_code": "CA",
"country": "US",
"country_name": "United States",
"continent_code": "NA",
"postal": "94035",
"latitude": 37.386,
"longitude": -122.0838,
"timezone": "America/Los_Angeles",
"utc_offset": "-0800",
"country_calling_code": "+1",
"currency": "USD",
"languages": "en-US,es-US,haw,fr",
"asn": "AS15169",
"org": "Google Inc."
}
No es así de fácil. Las direcciones IP no están asignadas a países como tales, sino a empresas y organizaciones.
Pero tal vez esto te pueda ayudar: http://www.maxmind.com/app/geolitecountry
No, no se puede: las direcciones IP se reasignan y reasignan de vez en cuando, por lo que la asignación de IP a la ubicación también cambiará con el tiempo.
Si desea conocer la ubicación que actualmente le asigna una dirección IP, puede descargar una base de datos de geolocalización, como GeoLite de MaxMind , o utilizar una API como http://ipinfo.io (mi propio servicio) que también brindará usted detalles adicionales:
$ curl ipinfo.io/8.8.8.8
{
"ip": "8.8.8.8",
"hostname": "google-public-dns-a.google.com",
"loc": "37.385999999999996,-122.0838",
"org": "AS15169 Google Inc.",
"city": "Mountain View",
"region": "California",
"country": "US",
"phone": 650
}
Puede intentar usar https://ip-api.io - api de ubicación geográfica que devuelve el país entre otra información de IP.
Por ejemplo, con Node.js
const request = require(''request-promise'')
request(''http://ip-api.io/api/json/1.2.3.4'')
.then(response => console.log(JSON.parse(response)))
.catch(err => console.log(err))
Puede usar ipdata.co para realizar la búsqueda
Esta respuesta utiliza una clave API de "prueba" que es muy limitada y solo para probar algunas llamadas. Regístrese para obtener su propia clave de API gratuita y obtenga hasta 1500 solicitudes diarias para el desarrollo.
curl https://api.ipdata.co/23.221.76.66?api-key=test
Ipdata tiene 10 puntos finales en todo el mundo, cada uno capaz de manejar ¡> 10,000 solicitudes por segundo!
Da
{
"ip": "23.221.76.66",
"city": "Cambridge",
"region": "Massachusetts",
"region_code": "MA",
"country_name": "United States",
"country_code": "US",
"continent_name": "North America",
"continent_code": "NA",
"latitude": 42.3626,
"longitude": -71.0843,
"asn": "AS20940",
"organisation": "Akamai International B.V.",
"postal": "02142",
"calling_code": "1",
"flag": "https://ipdata.co/flags/us.png",
"emoji_flag": "/ud83c/uddfa/ud83c/uddf8",
"emoji_unicode": "U+1F1FA U+1F1F8",
"is_eu": false,
"languages": [
{
"name": "English",
"native": "English"
}
],
"currency": {
"name": "US Dollar",
"code": "USD",
"symbol": "$",
"native": "$",
"plural": "US dollars"
},
"time_zone": {
"name": "America/New_York",
"abbr": "EDT",
"offset": "-0400",
"is_dst": true,
"current_time": "2018-04-19T06:32:30.690963-04:00"
},
"threat": {
"is_tor": false,
"is_proxy": false,
"is_anonymous": false,
"is_known_attacker": false,
"is_known_abuser": false,
"is_threat": false,
"is_bogon": false
}
}⏎
Pueden ser estos dos enlaces lo pueden ayudar a Asociar direcciones IP con los países
Sí, puede descargar los rangos de direcciones IP por país desde https://lite.ip2location.com/ip-address-ranges-by-country
Puede ver que cada país tiene múltiples rangos y cambios con frecuencia.