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

Te has suscrito correctamente al boletín

Se produjo un error al intentar enviar tu solicitud. Inténtalo de nuevo.

Mi Diario Python will use the information you provide on this form to be in touch with you and to provide updates and marketing.