تحديد الموقع عبر IP مقابل موقع جهاز المتصفح
تطلب واجهة Geolocation الخاصة بجهاز المتصفح (navigator.geolocation) إذن المستخدم، ويمكنها إعادة موقع دقيق يقيسه الجهاز؛ أما تحديد الموقع عبر IP فلا يحتاج إلى إذن ويعمل مع كل طلب، لكنه لا يُقدِّر الموقع إلا انطلاقًا من عنوان شبكة الاتصال. تحل الطريقتان مشكلتين مختلفتين وليستا قابلتين للتبادل.
الإذن والمصدر
تتطلب navigator.geolocation.getCurrentPosition() (واجهة Geolocation الخاصة بـ W3C، المُنفَّذة في كل متصفح رئيسي) طلب إذن صريحًا لكل نطاق مصدر، وعلى المتصفحات الحديثة سياقًا آمنًا (HTTPS). وعند مَنح الإذن، يمكنها استخدام GPS أو تحديد الموقع عبر Wi-Fi أو التثليث عبر أبراج الجوال، أو IP كخيار احتياطي، بحسب ما هو متاح للجهاز. لا يحتاج تحديد الموقع عبر IP إلى طلب إذن ولا إلى أي تعاون من الجهاز — إذ تقرؤه واجهة مثل GET /v1/geo مباشرةً من الطلب المتصل — لكنه لا يملك سوى عنوان الشبكة ليعمل انطلاقًا منه.
الدقة
يتضمن موقع الجهاز المُمنوح عادةً نطاق دقة صريحًا بالأمتار، وعلى هاتف مزوَّد بـ GPS وسماء صافية يمكن أن تصل الدقة إلى بضعة أمتار. أما تحديد الموقع عبر IP فيُحلِّل إلى نطاق شبكة، لا جهاز — النتائج على مستوى الدولة عادةً موثوقة، والنتائج على مستوى المدينة تقدير حقيقي، ولا تُعيد Watch-IP ولا أي مزوِّد رقم دقة بمستوى الأمتار، لأن البيانات الأساسية ليست بتلك الدقة. طالع صفحة الدقة لتفصيل أوفى لعدم اليقين على مستوى المدينة.
حالات الإخفاق
يمكن أن يُخفق تحديد الموقع عبر الجهاز أو أن يُرفَض: قد يرفض المستخدم طلب الإذن، أو يُضبَط المتصفح لحجبه، أو قد لا تملك آلة مكتبية عتادًا فعليًا لتحديد الموقع، أو قد تنتهي مهلة الطلب. عامل PERMISSION_DENIED وPOSITION_UNAVAILABLE وTIMEOUT (رموز الأخطاء الخاصة بالواجهة نفسها) كنتائج متمايزة ومتوقعة، لا استثناءات. أما تحديد الموقع عبر IP فيُخفق بطريقة مختلفة — إذ يمكن لحقل قابل للتحليل أن يكون ببساطة null، أو found: false في حالة البحث بعنوان IP مُقدَّم — ولا يُظهر للمستخدم أي طلب إذن على الإطلاق.
الاختيار بينهما
استخدم تحديد الموقع عبر الجهاز عندما تحتاج إلى الموقع الفعلي للمستخدم ويمكنك تبرير طلب الإذن لأجله — كخريطة، أو مُحدِّد مواقع متاجر، أو ملاحة خطوة بخطوة. واستخدم تحديد الموقع عبر IP كقيمة افتراضية منخفضة الاحتكاك: تعبئة مسبقة لدولة أو عملة، أو توجيه التحليلات، أو اقتراح (لا فرض) إعداد محلي (locale) قبل طلب الإذن أو بدلًا منه. من الأنماط الشائعة استخدام تحديد الموقع عبر IP كقيمة افتراضية بلا إذن، وتقديم تحديد الموقع عبر الجهاز كترقية صريحة يبدؤها المستخدم للمهام التي تحتاج فعلًا إلى دقة.
ما لا يدَّعيه هذا المقال
هذه مقارنة عامة بين آليتين مختلفتين في المتصفح، لا ادعاء بأن Watch-IP تُنفِّذ واجهة Geolocation الخاصة بالجهاز أو تُغلِّفها — فهي لا تفعل ذلك. تعتمد GET /v1/geo على IP فقط؛ فإذا احتاج تطبيقك أيضًا إلى تحديد الموقع عبر الجهاز، استدعِ واجهة المتصفح مباشرةً وعامل النتيجتين بشكل مستقل بدلًا من محاولة التوفيق بينهما.
المصادر
بقلم فريق التحرير في Watch-IP، بتاريخ 6 سبتمبر 2026. رُوجعت مقابل apps/web/lib/cf.ts وapps/api/src/routes/geo.ts.