Usaría un servicio web que puede devolver JSON (junto con jQuery para simplificar las cosas). A continuación se encuentran todos los servicios de búsqueda de IP activos gratuitos que pude encontrar y la información que devuelven. Si conoce más, agregue un comentario y actualizaré esta respuesta.
db-ip.com
//api.db-ip.com/addrinfo?api_key= < su clave de API > & addr = < dirección IP >
- ¿Es posible configurar la dirección IP de un país específico en Tails OS? Si es así, ¿cómo?
- ¿Cómo afecta el esquema de direccionamiento IP a la selección de protocolos de enrutamiento?
- Cómo cambiar la dirección IP en cPanel para enviar correos electrónicos
- ¿Quién posee las direcciones IPv4 y por qué?
- ¿Cuál es la mayor cantidad de información que se puede obtener de los correos electrónicos? (Dirección IP, ubicación, etc.)
Devoluciones:
{
“dirección”: “116.12.250.1”,
“país”: “SG”,
“stateprov”: “Singapur central”,
“ciudad”: “Singapur”
}
Limitaciones:
- 2.500 solicitudes por hora
- No admite devoluciones de llamada JSONP
- Requiere parámetro de dirección IP
- Requiere una dirección de correo electrónico para obtener su clave API
freegeoip.net
$ .getJSON (‘// freegeoip.net/json/?callback=?’, function (data) {
console.log (JSON.stringify (datos, nulo, 2));
});
Devoluciones:
{
“ip”: “116.12.250.1”,
“country_code”: “SG”,
“country_name”: “Singapur”,
“region_code”: “01”,
“region_name”: “Consejo Central de Desarrollo Comunitario de Singapur”,
“ciudad”: “Singapur”,
“código postal”: “”,
“time_zone”: “Asia / Singapur”,
“latitud”: 1.2931,
“longitud”: 103.8558,
“metro_code”: 0
}
Limitaciones:
- 10,000 solicitudes por hora
geobytes.com
$ .getJSON (‘// gd.geobytes.com/GetCityDetails?callback=?’, function (data) {
console.log (JSON.stringify (datos, nulo, 2));
});
Devoluciones:
{
“geobytesforwarderfor”: “”,
“geobytesremoteip”: “116.12.250.1”,
“geobytesipaddress”: “116.12.250.1”,
“geobytescertainty”: “99”,
“geobytesinternet”: “SA”,
“geobytescountry”: “Arabia Saudita”,
“geobytesregionlocationcode”: “SASH”,
“geobytesregion”: “Ash Sharqiyah”,
“geobytescode”: “SH”,
“geobyteslocationcode”: “SASHJUBA”,
“geobytescity”: “Jubail”,
“geobytescityid”: “13793”,
“geobytesfqcn”: “Jubail, SH, Arabia Saudita”,
“geobyteslatitude”: “27.004999”,
“geobyteslongitude”: “49.660999”,
“geobytescapital”: “Riad”,
“geobytestimezone”: “+03: 00”,
“geobytesnationalitysingular”: “Arabia Saudita”,
“geobytespopulation”: “22757092”,
“geobytesnationalityplural”: “sauditas”,
“geobytesmapreference”: “Oriente Medio”,
“geobytescurrency”: “Saudi Riyal”,
“geobytescurrencycode”: “SAR”,
“geobytestitle”: “Arabia Saudita”
}
Limitaciones:
- 16,384 solicitudes por hora
- Puede devolver la ubicación incorrecta (estoy en Singapur, no en Arabia Saudita)
geoip.nekudo.com
$ .getJSON (‘// geoip.nekudo.com/api/’, function (data) {
console.log (JSON.stringify (datos, nulo, 2));
});
Devoluciones:
{
“ciudad”: “Singapur”,
“país”: {
“nombre”: “Singapur”,
“código”: “SG”
},
“ubicación”: {
“precision_radius”: 50,
“latitud”: 1.2855,
“longitud”: 103.8565,
“time_zone”: “Asia / Singapur”
},
“ip”: “116.12.250.1”
}
Limitaciones:
- Requiere parámetro de dirección IP
geoplugin.com
$ .getJSON (‘// www.geoplugin.net/json.gp?jsoncallback=?’, function (data) {
console.log (JSON.stringify (datos, nulo, 2));
});
Devoluciones:
{
“geoplugin_request”: “116.12.250.1”,
“geoplugin_status”: 200,
“geoplugin_credit”: “Algunos de los datos devueltos incluyen datos de GeoLite creados por MaxMind, disponibles en http://www.maxmind.com . “,
“geoplugin_city”: “Singapur”,
“geoplugin_region”: “Singapur (general)”,
“geoplugin_areaCode”: “0”,
“geoplugin_dmaCode”: “0”,
“geoplugin_countryCode”: “SG”,
“geoplugin_countryName”: “Singapur”,
“geoplugin_continentCode”: “AS”,
“geoplugin_latitude”: “1.2931”,
“geoplugin_longitude”: “103.855797”,
“geoplugin_regionCode”: “00”,
“geoplugin_regionName”: “Singapur (general)”,
“geoplugin_currencyCode”: “SGD”,
“geoplugin_currencySymbol”: “$”,
“geoplugin_currencySymbol_UTF8”: “$”,
“geoplugin_currencyConverter”: 1.4239
}
Limitaciones:
- 120 solicitudes por minuto
ip-api.com
$ .getJSON (‘// ip-api.com/json?callback=?’, function (data) {
console.log (JSON.stringify (datos, nulo, 2));
});
Devoluciones:
{
“as”: “AS3758 SingNet”,
“ciudad”: “Singapur”,
“país”: “Singapur”,
“countryCode”: “SG”,
“isp”: “SingNet Pte Ltd”,
“lat”: 1.2931,
“lon”: 103.8558,
“org”: “Telecomunicaciones de Singapur”,
“query”: “116.12.250.1”,
“region”: “01”,
“regionName”: “Consejo Central de Desarrollo Comunitario de Singapur”,
“status”: “éxito”,
“zona horaria”: “Asia / Singapur”,
“cremallera”: “”
}
Limitaciones:
- 150 solicitudes por minuto
ipify.org
$ .getJSON (‘// api.ipify.org?format=jsonp&callback=?’, function (data) {
console.log (JSON.stringify (datos, nulo, 2));
});
Devoluciones:
{
“ip”: “116.12.250.1”
}
Limitaciones:
- Ninguno (ancho de banda ilimitado)
ipinfo.io
$ .getJSON (‘// ipinfo.io/json’, función (datos) {
console.log (JSON.stringify (datos, nulo, 2));
});
Devoluciones:
{
“ip”: “116.12.250.1”,
“hostname”: “Sin nombre de host”,
“ciudad”: “Singapur”,
“region”: “Central Singapore Community Development Council”,
“país”: “SG”,
“loc”: “1.2931,103.8558”,
“org”: “AS3758 SingNet”
}
Limitaciones:
- 1,000 solicitudes por día
ipinfodb.com
$ .getJSON (‘// api.ipinfodb.com/v3/ip-city/?key= & format = json & callback =?’, function (data) {
console.log (JSON.stringify (datos, nulo, 2));
});
Devoluciones:
{
“statusCode”: “OK”,
“mensaje de estado”: “”,
“ipAddress”: “116.12.250.1”,
“countryCode”: “SG”,
“countryName”: “Singapur”,
“regionName”: “Singapur”,
“cityName”: “Singapur”,
“zipCode”: “048941”,
“latitud”: “1.28967”,
“longitud”: “103.85”,
“timeZone”: “+08: 00”
}
Limitaciones:
- Dos solicitudes por segundo
- Requiere registro para obtener su clave API
jsonip.com
$ .getJSON (‘// jsonip.com/?callback=?’, function (data) {
console.log (JSON.stringify (datos, nulo, 2));
});
Devoluciones:
{
“ip”: “116.12.250.1”,
“acerca de”: “/ acerca de”,
“Pro!”: “Http://getjsonip.com”
}
Limitaciones:
- Ninguno (ancho de banda ilimitado)
jsontest.com
$ .getJSON (‘// ip.jsontest.com/?callback=?’, function (data) {
console.log (JSON.stringify (datos, nulo, 2));
});
Devoluciones:
{
“ip”: “116.12.250.1”
}
Limitaciones:
- Baja mucho (sobre la cuota), por lo que no lo usaría para la producción
snoopi.io
//api.snoopi.io/v1/?apikey= < su clave de API > & user_ip_address = < dirección IP >
Devoluciones:
{
“remote_address”: “116.12.250.1”,
“request_address”: “116.12.250.1”,
“request_time”: “11:25:35 pm”,
“request_date”: “31 de enero de 2016”,
“CountryCode”: “SG”,
“Región”: nulo,
“Region_Full”: “Singapur”,
“Ciudad”: “Ubi”,
“PostalZip”: “96940”,
“TimeZone_Name”: “Asia \ / Singapur”,
“Latitud”: “1.31865”,
“Longitud”: “103.894”
}
Limitaciones:
- 2,500 solicitudes por día
- No admite devoluciones de llamada JSONP
- Requiere parámetro de dirección IP
- Requiere registro para obtener su clave API
Tenga en cuenta que, dado que todos estos servicios son gratuitos, su millaje puede variar en términos de exceder la cuota y el tiempo de actividad, y quién sabe cuándo / si se desconectarán en el futuro (Anexo A: Telize). La mayoría de estos servicios también ofrecen un nivel de pago en caso de que desee algo más robusto.
Además, como skobaljic señaló en los comentarios a continuación, las cuotas de solicitud son principalmente académicas, ya que esto está sucediendo en el lado del cliente y la mayoría de los usuarios finales nunca excederán la cuota.
ACTUALIZACIONES
- Se eliminó telize.com (ya no ofrece nivel gratuito)
- Se eliminó ip-json.rhcloud.com (parece estar fuera de línea)
- Hackertarget.com eliminado (parece estar fuera de línea)
- Geoip.nekudo.com agregado