Watch-IP

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

Dé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