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:
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.
Deja una respuesta
Hola Luis, para un array de ip? como seria