Watch-IP

Usa Watch-IP con Python

watch-ip-sdk (PyPI, v0.1.1) envuelve GET /v1/geo en un cliente sin dependencias construido sobre urllib de la biblioteca estándar de Python. No cubre IP lookup: la guía de lotes de abajo llama a ese endpoint directamente en su lugar.

Instalación

Requiere Python 3.9 o superior. Sin dependencias de terceros: el paquete usa urllib de la biblioteca estándar.

pip

pip install watch-ip-sdk

Inicio rápido

GET /v1/geo está diseñado para llamarse desde el propio navegador de un visitante. Llamarlo desde Python significa llamarlo desde tu propio servidor en su lugar, así que la solicitud no llevará el encabezado Origin que un navegador envía automáticamente: pasa origin explícitamente, configurado con uno de los orígenes permitidos de la clave, o la API rechaza la llamada 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"])

Manejo de errores y tiempos de espera

Cada falla lanza un WatchIPError con un status y un code estable. get_geo() acepta un timeout opcional en segundos (por defecto 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)

IP lookup y lookup en lote: usa HTTP directo

Este SDK no tiene ningún método para GET /v1/lookup/{ip} ni POST /v1/lookup: ambos son endpoints de servidor a servidor autenticados con una clave secreta en lugar de la clave publicable que envuelve este paquete. Llámalos directamente con urllib; la guía de lotes en Python construye un ejemplo completo fragmentado sobre esta base.

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)

Páginas relacionadas