NorfiPC
NorfiPC » Códigos » Datos de una IP

Obtener los datos asociados a una dirección IP de internet



Usar los Servicios de búsqueda de datos mediante la dirección IP (IP lookup services), para extraer la IP, la ciudad, país, localización y empresa proveedora y otros datos, mostrarlos en el navegador o escribirlos con JavaScript o PHP en las páginas.
Obtener los datos asociados a una dirección IP de internet
El rango de direcciones IP asignadas a las empresas proveedoras de internet, son públicos y están almacenadas en bases de datos de internet.
Actualmente varios servicios comerciales pueden acceder a ellas y extraer toda la información asociada, como el país, la ciudad, localización y muchos otros datos, brindando la posibilidad de pasar dicha información a desarrolladores, mediante una API.
Son llamados "IP lookup services", en español algo como servicios de búsqueda de datos mediante la dirección IP.
Todos ofrecen opciones gratis aunque limitadas.
Esta API consiste en scripts en distintos lenguajes, que pasan los datos al navegador u otro software, usando como base la dirección IP del usuario u otra que se solicite.
En este artículo mencionamos algunos de esos servicios y mostramos ejemplos prácticos de cómo obtener estos datos directamente en el navegador y como escribirlos en una página.



Información y datos que se extraen de una IP


Usando los servicios que mencionamos, podemos extraer los datos asociados a nuestra dirección IP o los datos de la IP de los lectores que cargan una página en nuestra web.
Generalmente la información disponible, es la dirección IP, la ciudad, la región, el país, la localización y el nombre del proveedor de internet y otros datos secundarios.
Muchos de ellos ofrecen el resultado en varios formatos, entre ellos JSON, XML o CSV.
Algunos permiten realizar las peticiones en HTTPS en el plan gratis (recomendado).
Los desarrolladores podemos extraer los datos para mostrarlos en las páginas, usando PHP para renderizar la respuesta o mediante JavaScript.
Se recomienda usar el nuevo formato JSONP, por los riesgos a la seguridad que conlleva AJAX.
A continuación listamos varios de estos servicios, que permiten usarlos gratis, que usan HTTPS y que no requieren registrarse previamente para usar la API.



Servicios para extraer la IP y los datos asociados


Ipinfo.io


Ipinfo.io es uno de los servicios que se pueden emplear para renderizar una dirección.
La opción gratuita no exige registro para obtener la API, funciona mediante HTTPS, con la limitación de 1000 peticiones diarias, que es suficiente para una web de aficionados.
Usamos en otra página de nuestro sitio un script en PHP que emplea este servicio, para mostrar en los móviles la Dirección IP de los usuarios con los datos asociados.
El objetivo es que nuestros lectores puedan comprobar si navegan a través de un proxy.
Los datos que devuelve Ipinfo.io son los siguientes, por supuesto difieren de acuerdo al usuario
Dirección IP: 3.80.85.76
Ciudad: Beaumont
Región: Texas
País: US
Localización: 30.0866,-94.1274
Proveedor de internet: AS14618 Amazon.com, Inc.

<?php
$dip = $_SERVER['REMOTE_ADDR'];
$json = file_get_contents("https://ipinfo.io/".$dip);
$details = json_decode($json,true);
if(array_key_exists("ip",$details)) $ip.=$details["ip"];  
if(array_key_exists("city",$details)) $city.=$details["city"];
if(array_key_exists("region",$details)) $region.=$details["region"];
if(array_key_exists("country",$details)) $country.=$details["country"];
if(array_key_exists("loc",$details)) $loc.=$details["loc"];
if(array_key_exists("org",$details)) $org.=$details["org"];
echo "Direcci&#243;n IP: " .$ip."<br>";
echo "Ciudad: " .$city."<br>";
echo "Regi&#243;n: " .$region."<br>";
echo "Pa&#237;s: " .$country."<br>";
echo "Localizaci&#243;n: ".$loc."<br>";
echo "Proveedor de internet: ".$org."<br>";
?>



Cargar los datos de la IP en el navegador

Usando el navegador web se puede acceder a la misma información anterior, simplemente introduciendo la siguiente dirección URL: "https://ipinfo.io/json"
Pruébalo en el siguiente enlace: https://ipinfo.io/json
Para obtener los datos de una dirección especifica usa: "https://ipinfo.io/8.8.8.8/json", sustituyendo 8.8.8.8 por la dirección IP necesaria.
Este método se aplica a todos los servicios que indicamos más abajo.



Escribir los datos de la IP con JavaScript

Los que no disponen de acceso al servidor para implementar PHP, pueden con JavaScript y JQuery escribir los datos anteriores.
En un servicio como este que admite el formato JSONP, se recomienda hacerlo de la siguiente forma:
Respuesta completa (en bruto):


Código en HTML/JavaScript/JQuery para hacer las peticiones anteriores:
<div id="ip"></div>
<div id="address"></div>
Respuesta completa: 
<pre id="details"></pre>
<script>
$.get("https://ipinfo.io", function (response) {
    $("#ip").html("IP: " + response.ip);
    $("#address").html("Ubicaci&#243;n: " + response.city + ", " + response.region);
    $("#details").html(JSON.stringify(response, null, 4));
}, "jsonp");
</script>



Otros servicios gratis para obtener información


Ipify.org

Servicio de código abierto y sin limitaciones, con amplia información de su uso en todas las plataformas, pero solo devuelve la dirección IP.
Devuelve las peticiones en formato de texto, json o jsonp.
Usa la siguiente dirección URL en el navegador o prueba el enlace para obtener información sobre la IP asignada: https://api.ipify.org/?format=json
Código en Javascript/JQuery para hacer la petición:
$.getJSON('https://api.ipify.org?format=jsonp&callback=?', function(data) {
  $("#response").html(JSON.stringify(data, null, 2));
});
Respuesta:

Freegeoip.net

Limitaciones 15 000 peticiones por hora.
Usa la siguiente dirección en el navegador para obtener información: https://freegeoip.net/json/
Código en JavaScript/JQuery para hacer la petición (requiere de un contenedor DIV en la página con el identificador ID "response"):
$.getJSON('https://freegeoip.net/json/?callback=?', function(data) {
    $("#response").html(JSON.stringify(data, null, 2));
});
Ejemplo de respuesta (en bruto):
{ 
 "ip": "152.206.59.138", 
 "country_code": "CU", 
 "country_name": "Cuba", 
 "region_code": "09", 
 "region_name": "Provincia de Camagueey", 
 "city": "La Habana", 
 "time_zone": "America/Havana", 
 "latitude": 21.3614, 
 "longitude": -78.3361 
}



Ipapi.co

Limitaciones 1000 peticiones por día.
Usa la siguiente dirección: https://ipapi.co/json/
Código en Javascript/JQuery para hacer la petición:
$.getJSON('https://ipapi.co/json/', function(data) {
  $("#response").html(JSON.stringify(data, null, 2));
});
Ejemplo de respuesta (en bruto):
{ 
 "ip": "152.206.59.138", 
 "city": "La Habana", 
 "region": "Provincia de Camagueey", 
 "region_code": "09", 
 "country": "CU", 
 "country_name": "Cuba", 
 "continent_code": "NA", 
 "latitude": 21.3614, 
 "longitude": -78.3361, 
 "timezone": "America/Havana", 
 "utc_offset": "-0400", 
 "country_calling_code": "+53", 
 "currency": "CUP", 
 "languages": "es-CU", 
 "asn": "AS27725", 
 "org": "Empresa de Telecomunicaciones de Cuba, S.A." 
 }

Ipdata.co

Limitaciones 1 000 peticiones por día.
Usa la siguiente dirección: https://api.ipdata.co/
Código en Javascript/JQuery para hacer la petición:
$.getJSON('https://api.ipdata.co', function(data) {
  $("#response").html(JSON.stringify(data, null, 2));
});
Ejemplo de respuesta (en bruto):
{ 
 "ip": "152.206.59.138", 
 "city": "La Habana", 
 "region": "Provincia de Camagueey", 
 "region_code": "09", 
 "country_name": "Cuba", 
 "country_code": "CU", 
 "continent_name": "North America", 
 "continent_code": "NA", 
 "latitude": 21.3614, 
 "longitude": -78.3361, 
 "asn": "AS27725", 
 "organisation": "Empresa de Telecomunicaciones de Cuba, S.A.", 
 "currency": "CUP", 
 "currency_symbol": "₱", 
 "calling_code": "53", 
 "flag": "https://ipdata.co/flags/cu.png", 
 "emoji_flag": "🇨🇺", 
 "time_zone": "America/Havana", 
 "utc_offset": "-0400", 
 "suspicious_factors": { "is_tor": false } 
 }

Páginas relacionadas



Buscar en este sitio


Comparte esta página




Sígueme en las redes sociales








Comenta o lee lo que otros opinan
 
Inicio | Mapa del sitio | Sobre mí | Notificaciones | RSS