Podemos hacer escaneos de direcciones IP desde AbuseIP con este código, donde analizamos una dirección y obtener la respuesta en formato JSON:
import requests # Definir la URL de la API y la clave de la API url = "https://api.abuseipdb.com/api/v2/check" api_key = "API" # Definir los parámetros de la solicitud informacion = { "ipAddress": "124.235.251.192", "maxAgeInDays": "90" } # Definir las cabeceras de la solicitud con la clave de la API api = { "Key": api_key, "Accept": "application/json" } # Realizar la solicitud a la API response = requests.get(url, headers=api, params=informacion) # Mostrar la respuesta de la API respuesta = response.json() print(respuesta)
Podemos filtrar únicamente la parte donde se muestran los reportes de una IP filtrando la información, ya que se trata de un diccionario:
import requests url = "https://api.abuseipdb.com/api/v2/check" api_key = "API" informacion = { "ipAddress": "124.235.251.192", "maxAgeInDays": "90" } api = { "Key": api_key, "Accept": "application/json" } response = requests.get(url, headers=api, params=informacion) respuesta = response.json() # Filtramos sólo la parte de los reportes: print(respuesta['data']['totalReports'])
Si quiero escanear varias direcciones a la vez, podría hacer un bucle:
import requests url = "https://api.abuseipdb.com/api/v2/check" api_key = "API" listado_ip = ['124.235.251.192', '177.36.187.95', '64.62.197.232', '118.201.79.222'] for cada_ip in listado_ip: informacion = { "ipAddress": cada_ip, "maxAgeInDays": "90" } api = { "Key": api_key, "Accept": "application/json" } response = requests.get(url, headers=api, params=informacion) respuesta = response.json() # Filtramos sólo la parte de los reportes: ip = respuesta['data']['ipAddress'] reportes = respuesta['data']['totalReports'] print(f"Para la IP {ip}, tiene estos reportes {reportes}")
Si quiero ver sólo aquellas direcciones con un número determinado de reportes, lo haría de esta forma:
import requests url = "https://api.abuseipdb.com/api/v2/check" api_key = "API" listado_ip = ['124.235.251.192', '177.36.187.95', '64.62.197.232', '118.201.79.222'] for cada_ip in listado_ip: informacion = { "ipAddress": cada_ip, "maxAgeInDays": "90" } api = { "Key": api_key, "Accept": "application/json" } response = requests.get(url, headers=api, params=informacion) respuesta = response.json() # Filtramos sólo la parte de los reportes: ip = respuesta['data']['ipAddress'] reportes = respuesta['data']['totalReports'] # Aquí solo nos dice aquellas IP que tienen más de un determinado número de reportes: if reportes >= 400: print(f"La IP {ip}, tiene más de 400 reportes, con un número de {reportes}")