Domanda Risolto Localizzare un IP con Python

mrcamarium

Utente Silver
7 Gennaio 2022
107
24
6
56
Salve a tutti ho realizato uno script che è ingrado di olocalizare un IP ma ci sono due informazioni che non riesco ad ottenere:
Python:
import requests

ip_address = input("Inserisci un indirizzo IP: ")
response = requests.get(f"http://ip-api.com/json/{ip_address}").json()

if response['status'] == 'success':
    print(f"Ecco i risultati per l'IP: {response['query']}")
    print(f"Stato: {response['country']} ({response['countryCode']})")
    print(f"Regione: {response['regionName']} ({response['region']})")
    print(f"Città: {response['city']} ({response['zip']})")
    print(f"Latitudine: {response['lat']}")
    print(f"Longitudine: {response['lon']}")
    print(f"Fuso Orario: {response['timezone']}")
    print(f"Provider (ISP): {response['isp']} ({response['org']}) {response['as']}")

    # Verifica se la chiave 'mobile' esiste nel dizionario
    if 'mobile' in response:
        print(f"Mobile: {response['mobile']}")
    else:
        print("Informazioni sulla mobilità non disponibile.")

    # Verifica se la chiave 'proxy' esiste nel dizionario
    if 'proxy' in response:
        print(f"Proxy: {response['proxy']}")
    else:
        print("Informazioni sul proxy non disponibile.")
else:
    print("Impossibile ottenere informazioni per l'indirizzo IP specificato.")
con mobile e proxy mi dovrebbe restituire false o true ma mi dice che la key non esiste, eppure nel sito c'è.
 
Leggi bene la documentazione, devi specificare in fields i campi che ti interessano:

response = requests.get(f"http://ip-api.com/json/{ip_address}?fields=66846719").json()

La documentazione interattiva propone i vari campi con le checkbox, puoi specificarli con i nomi per intero separati da virgola oppure con il numero che genera lui (probabilmente una bitmask). Il numero che ho messo io è per tutti i campi supportati.
 
Ultima modifica:
Leggi bene la documentazione, devi specificare in fields i campi che ti interessano:

response = requests.get(f"http://ip-api.com/json/{ip_address}?fields=66846719").json()

La documentazione interattiva propone i vari campi con le checkbox, puoi specificarli con i nomi per intero separati da virgola oppure con il numero che genera lui (probabilmente una bitmask). Il numero che ho messo io è per tutti i campi supportati.
Grazie, sono andato a vedere come hai fatto, adesso posso prelevare anche più informazioni.
Messaggio unito automaticamente:

Ecco il codice funzionante, GRAZIE!
Python:
import requests
from colorama import Fore  # BLACK, RED, GREEN, YELLOW, BLUE, MAGENTA, CYAN, WHITE
from colorama import Style  # DIM, NORMAL, BRIGHT, RESET_ALL
reset = Style.RESET_ALL
blul = Fore.LIGHTBLUE_EX  # Colora Blu e rende il testo brillante
def ipinfo(continua=True):
    print(f"{blul}Dr. Fato è pronto per localizare l'IP{reset}")
    if continua:
        ip_address = input("Inserisci un indirizzo IP: ")
        response = requests.get(f"http://ip-api.com/json/{ip_address}?fields=66846719").json()
        if response['status'] == 'success':
            print(f"Ecco i risultati per l'IP: {response['query']}")
            network_type = 'mobile' if response['mobile'] else 'terrestre'
            print(f"Connesso alla rete {network_type}")
            network_vpn = 'non attendibili perchè connesso ad un proxy o VPN' if response['proxy'] else 'attendibili'
            print(f"Informazioni {network_vpn}")
            print(f"Stato: {response['country']} ({response['countryCode']})")
            print(f"Regione: {response['regionName']} ({response['region']})")
            print(f"Città: {response['city']} ({response['zip']})")
            print(f"Latitudine: {response['lat']}")
            print(f"Longitudine: {response['lon']}")
            print(f"Fuso Orario: {response['timezone']}")
            print(f"Provider (ISP): {response['isp']} ({response['org']}) {response['as']}")
        else:
            print("Impossibile ottenere informazioni per l'indirizzo IP specificato.")
        scelta = input("Vuoi controllare un altro IP? (S/N): ")
        if scelta.upper() == "S":
            ipinfo()
        elif scelta.upper() == "N":
            ipinfo(continua=False)
        else:
            print("Scelta non valida.")
    else:
        print("E' un piacere esserti stato di aiuto!")
 
  • Mi piace
Reazioni: Valance