IPGeo.py: Geolocalización de direcciones IP

Hola amigos de Internet. Mi nombre es Luis, y les doy la bienvenida a Mi Diario Python.
En el articulo de hoy, crearemos un script, el cual servirá para geolocalizar direcciones IP. Interesante ¿No crees?.
Así que sin más preámbulos, comencemos.

IP-API

Para realizar el script de hoy, utilizaremos los servicios web de IP-API. Puedes ingresar a su pagina web: http://ip-api.com.
Al entrar a la pagina web de IP-API, veremos que automáticamente geolocalizar tu IP y te muestra información muy interesante. Desde el país y la región en la que te encuentras, hasta el código postal de tu ciudad y la compañía de Internet que utilizas.
La URL de la API es la siguiente: http://ip-api.com/json/“Dirección a Geolocalizar”.
Ejemplo: http://ip-api.com/json/google.com.
Al ingresar a esta URL, el resultado sera el siguiente:
{
"as":"AS15169 Google LLC",
"city":"Washington D.C.",
"country":"United States",
"countryCode":"US",
"isp":"Google LLC",
"lat":38.9072,
"lon":-77.0369,
"org":"Google LLC",
"query":"172.217.7.238",
"region":"DC",
"regionName":"District of Columbia",
"status":"success",
"timezone":"America/New_York",
"zip":"20068"
}
La API nos devuelve la información en formato JSON. Utilizaremos Python para consumir la API con la librería requests, y utilizaremos la librería json para procesar la respuesta.

IPGeoPy

El script funcionara de la siguiente manera: el programa nos pedirá una dirección (IP o host web). Luego, con los datos de entrada del usuario, el script realizara una petición a http://ip-api.com/json. Recibimos la respuesta en formato json, y procedemos a procesarla utilizando la librería json.
Al ejecutar el script, nos quedaría de la siguiente manera:
py "IPGeoPy.py"

Ingrese la direccion IP: 24.48.0.1

STATUS :
success


COUNTRY :
Canada


COUNTRYCODE :
CA


REGION :
QC


REGIONNAME :
Quebec


CITY :
Vaudreuil-Dorion


ZIP :
H9X


LAT :
45.4


LON :
-73.9333


TIMEZONE :
America/Toronto


ISP :
Le Groupe Videotron Ltee


ORG :
Videotron Ltee


AS :
AS5769 Videotron Telecom Ltee


QUERY :
24.48.0.1
He utilizado un dirección IP de prueba, que como pueden ver pertenece a un dispositivo ubicado en Canadá. Como pueden ver nos muestra mucha información. Esto a debido a que en el script tenemos la posibilidad de determinar todos los parámetros que queremos obtener.
Muy bien, veamos el código del script:
import requests
import json

# URL de la API
api_url = "http://ip-api.com/json/"

# Definimos los parametros de respuesta que queremos obtener
parametros = 'status,country,countryCode,region,regionName,city,zip,lat,lon,timezone,isp,org,as,query'
data = {"fields":parametros}

def ip_scraping(ip=""):
 # Nos conectamos con la API
 res = requests.get(api_url+ip, data=data)
 # Obtenemos y procesamos la respuesta JSON
 api_json_res = json.loads(res.content)
 return api_json_res

if __name__ == '__main__':
 # Solicitamos la entrada
 ip = input("Ingrese la dirección IP: ")
 
 # Llamamos a la función ip_scraping y mostramos los resultados
 par = parametros.split(",")
 for x in par:
  print(x.upper(), ":")
  print(ip_scraping(ip)[x])
  print("n")
 
Puedes ver y descargar el código ingresando al siguiente enlace: https://gist.github.com/LuisAlejandroSalcedo/49e25516f8152a3d626660585b1e2ba6.
¿Alguna duda? ¿Alguna sugerencia? Déjanos tu comentario y con mucho gusto te responderemos.
Sin más nada que decir. Mi nombre es Luis, y fue un placer compartir mis conocimiento con todos ustedes :D.
  1. Janet s.r dice:

    Hola Luis, para un array de ip? como seria

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Subir
White Monkey