Utilize o Watch-IP com Python
watch-ip-sdk (PyPI, v0.1.1) envolve GET /v1/geo num cliente sem dependências, construído sobre o urllib da biblioteca padrão do Python. Não cobre a pesquisa de IP — o guia de lote abaixo chama antes esse endpoint diretamente.
Instalação
Requer Python 3.9+. Sem dependências de terceiros — o pacote utiliza o urllib da biblioteca padrão.
pip
pip install watch-ip-sdkInício rápido
GET /v1/geo foi concebido para ser chamado a partir do próprio navegador de um visitante. Chamá-lo a partir de Python significa chamá-lo antes a partir do seu próprio servidor, pelo que o pedido não transportará o cabeçalho Origin que um navegador envia automaticamente — passe origin explicitamente, definido para uma das origens permitidas da chave, ou a API rejeita a chamada com 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"])Tratamento de erros e tempos limite
Toda a falha lança um WatchIPError com um status e um código estável. get_geo() aceita um timeout opcional em segundos (predefinição 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)Pesquisa de IP e pesquisa em lote: utilize HTTP direto
Este SDK não tem qualquer método para GET /v1/lookup/{ip} ou POST /v1/lookup — ambos endpoints servidor-a-servidor autenticados com uma chave secreta, e não com a chave publicável que este pacote envolve. Chame-os diretamente com urllib; o guia de lote em Python constrói um exemplo completo dividido em lotes a partir daqui.
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
- Guia de lote em PythonEnriqueça uma lista de IPs em lotes de 100.
- Referência de GET /v1/lookup/:ipReferência completa de campos para o endpoint de pesquisa de IP arbitrário.
- Referência de POST /v1/lookupReferência completa de campos para o endpoint de pesquisa de IP em lote.
- AutenticaçãoChaves publicáveis vs. secretas, bloqueio por origem, e limites de taxa.