Usa Watch-IP con Python
watch-ip-sdk (PyPI, v0.1.1) incapsula GET /v1/geo in un client privo di dipendenze, costruito su urllib della libreria standard di Python. Non copre la ricerca IP — la guida al batch qui sotto chiama invece direttamente quell'endpoint.
Installazione
Richiede Python 3.9+. Nessuna dipendenza di terze parti — il pacchetto usa urllib dalla libreria standard.
pip
pip install watch-ip-sdkAvvio rapido
GET /v1/geo è pensato per essere chiamato dal browser stesso del visitatore. Chiamarlo da Python significa invece chiamarlo dal tuo server, quindi la richiesta non porterà con sé l'header Origin che un browser invia automaticamente — passa esplicitamente origin, impostato su una delle origini consentite della chiave, altrimenti l'API rifiuta la chiamata con origin_not_allowed.
Python
from watch_ip import WatchIP
client = WatchIP("wip_pub_xxxxxxxx", origin="https://example.com")
geo = client.get_geo()
print(geo["country"], geo["city"], geo["timezone"])Gestione degli errori e timeout
Ogni fallimento genera un WatchIPError con uno status e un code stabile. get_geo() accetta un timeout opzionale in secondi (predefinito 10.0).
Python
from watch_ip import WatchIP, WatchIPError
client = WatchIP("wip_pub_xxxxxxxx", origin="https://example.com")
try:
geo = client.get_geo(timeout=5.0)
except WatchIPError as err:
print(err.code, err.status, err)Ricerca IP e ricerca in blocco: usa l'HTTP diretto
Questo SDK non ha alcun metodo per GET /v1/lookup/{ip} o POST /v1/lookup — entrambi endpoint da server a server autenticati con una chiave segreta anziché con la chiave pubblicabile che questo pacchetto incapsula. Chiamali direttamente con urllib; la guida al batch Python costruisce sopra a questo un esempio completo suddiviso in blocchi.
Python
import json
import urllib.request
request = urllib.request.Request(
"https://api.watch-ip.com/v1/lookup",
data=json.dumps({"ips": ["203.0.113.1", "2001:db8::1"]}).encode(),
headers={
"Authorization": "Bearer YOUR_SECRET_KEY",
"Content-Type": "application/json",
},
)
with urllib.request.urlopen(request) as response:
result = json.load(response)Pagine correlate
- Guida al batch PythonArricchisci un elenco di IP in batch da 100.
- Riferimento GET /v1/lookup/:ipRiferimento completo dei campi per l'endpoint di ricerca di un IP arbitrario.
- Riferimento POST /v1/lookupRiferimento completo dei campi per l'endpoint di ricerca IP in blocco.
- AutenticazioneChiavi pubblicabili e chiavi segrete, restrizione di origine e limiti di frequenza.