Utiliser Watch-IP avec Python
watch-ip-sdk (PyPI, v0.1.1) encapsule GET /v1/geo dans un client sans dépendance construit sur le module urllib de la bibliothèque standard de Python. Il ne couvre pas la recherche d'IP — le guide par lots ci-dessous appelle ce point de terminaison directement à la place.
Installation
Nécessite Python 3.9 ou supérieur. Aucune dépendance tierce — le paquet utilise urllib de la bibliothèque standard.
pip
pip install watch-ip-sdkDémarrage rapide
GET /v1/geo est conçu pour être appelé depuis le navigateur d'un visiteur. L'appeler depuis Python revient à l'appeler depuis votre propre serveur, si bien que la requête ne portera pas l'en-tête Origin qu'un navigateur envoie automatiquement — passez origin explicitement, réglé sur l'une des origines autorisées de la clé, sinon l'API rejette l'appel avec 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"])Gestion des erreurs et délais d'expiration
Chaque échec lève une WatchIPError avec un status et un code stable. get_geo() accepte un délai d'expiration optionnel en secondes (10.0 par défaut).
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)Recherche d'IP et recherche groupée : utiliser le HTTP direct
Ce SDK n'a aucune méthode pour GET /v1/lookup/{ip} ou POST /v1/lookup — deux points de terminaison serveur à serveur authentifiés avec une clé secrète plutôt qu'avec la clé publiable que ce paquet encapsule. Appelez-les directement avec urllib ; le guide Python par lots construit un exemple complet et découpé en lots à partir de ceci.
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)Pages associées
- Guide Python par lotsEnrichir une liste d'IP par lots de 100.
- Référence de GET /v1/lookup/:ipRéférence complète des champs pour le point de terminaison de recherche d'IP arbitraire.
- Référence de POST /v1/lookupRéférence complète des champs pour le point de terminaison de recherche d'IP groupée.
- AuthentificationClés publiables ou secrètes, restriction par origine et limites de débit.