Watch-IP

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-sdk

Avvio 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