استخدام Watch-IP مع Python
تُغلِّف watch-ip-sdk (على PyPI، الإصدار v0.1.1) استدعاء GET /v1/geo ضمن عميل خالٍ من التبعيات مبني على urllib من المكتبة القياسية للغة Python. وهي لا تُغطي البحث عن عنوان IP — إذ يستدعي دليل الدفعات أدناه تلك النقطة مباشرة بدلاً من ذلك.
التثبيت
يتطلب Python 3.9 أو أحدث. بلا أي تبعيات خارجية — تستخدم الحزمة urllib من المكتبة القياسية.
pip
pip install watch-ip-sdkالبدء السريع
صُمِّمت GET /v1/geo لتُستدعى من متصفح الزائر نفسه. واستدعاؤها من Python يعني استدعاءها من خادمك الخاص بدلًا من ذلك، لذا لن يحمل الطلب ترويسة Origin التي يُرسلها المتصفح تلقائيًا — مرِّر origin صراحةً، مضبوطة على أحد النطاقات المسموح بها للمفتاح، وإلا رفضت الواجهة البرمجية الاستدعاء برمز 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"])معالجة الأخطاء والمُهل الزمنية
كل فشل يُطلِق WatchIPError يحمل status ورمزًا ثابتًا. تقبل get_geo() معامل timeout اختياريًا بالثواني (القيمة الافتراضية 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 والبحث المجمّع: استخدم HTTP مباشرة
لا تحتوي هذه الحزمة (SDK) على دالة لـ GET /v1/lookup/{ip} أو POST /v1/lookup — وكلاهما نقطتا نهاية من خادم إلى خادم تُوثَّقان بمفتاح سري بدلًا من المفتاح القابل للنشر الذي تُغلِّفه هذه الحزمة. استدعِهما مباشرة باستخدام urllib؛ ويبني دليل الدفعات بلغة Python مثالاً كاملاً مُقسَّمًا إلى دفعات فوق هذا الأساس.
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)