ملحق حجب الجغرافيا

ملخص: إضافة حظر جغرافي لـ Discourse

:link: GitHub: GitHub - communiteq/discourse-geo-blocking
:arrow_right: التثبيت: اتبع دليل تثبيت الإضافات.
:moneybag: العميل: تم تمويل هذه الإضافة بواسطة Sketchfab.

الميزات

يمكن استخدام هذا لحظر الوصول إلى منتداك بالكامل من بلدان أو شبكات معينة، على سبيل المثال لمنع الاحتيال أو للامتثال للعقوبات.

تستفيد الإضافة من قاعدة بيانات MaxMindDB المتوفرة بالفعل في Discourse.

الإعداد

  • تفعيل الإضافة
  • أضف جميع الشبكات التي تريد حظرها إلى geo_blocking_asn_blocklist. قم ببادئة الأرقام بـ AS، على سبيل المثال AS12345.
  • أضف جميع البلدان والمناطق التي تريد حظرها إلى geo_blocking_country_region_blocklist. الصيغ التالية مقبولة:
    • اسم البلد الكامل (على سبيل المثال: Belgium)
    • رمز ISO للبلد (على سبيل المثال: JP لليابان)
    • اسم البلد الكامل متبوعًا بنقطة ثم اسم المنطقة (على سبيل المثال: Switzerland.Jura).

  • إذا قمت بتفعيل geo blocking detailed reason، فستحتوي رسالة الخطأ على البلد/المنطقة أو الشبكة التي تسببت في حظر المستخدم.

مقابل

  • لاختبار الإضافة، يمكنك التحقق من geo blocking log blocked و/أو geo blocking log allowed وفحص /logs في منتداك.

للحصول على قائمة كاملة بالبلدان والمناطق المدعومة، راجع list_of_countries_and_regions.txt.

تنبيهات وملاحظات

إذا تم حظر الزوار المجهولين، فقد يظلون قادرين على الحصول على نسخة مخبأة مؤقتًا من الصفحة الرئيسية لمدة دقيقة تقريبًا.

لا تحتوي صفحة الخطأ على مواضيع “شائعة” و “حديثة” لأن ذلك قد يؤدي إلى تسريب المحتوى لمستخدم محظور.

25 إعجابًا

شكراً على سرعة إنجاز هذا المشروع يا ريتشارد!

4 إعجابات

شكرا لك. مفيد جدا

إعجاب واحد (1)

سأجرب هذا على الفور. كيف يمكنني أن أغفل هذا :woozy_face:

أحتاج إلى حظر جغرافي لعدد قليل من البلدان وأنظمة الحكم الذاتي (ASes)، ولكن لأسباب واضحة لا يمكنني استخدام Varnish لهذه المهمة كما هو الحال مع مواقعي الأخرى. هذا يحل تلك المشكلة، إذا كانت لا تزال تعمل.

نعم، لا تزال الإضافة قيد الصيانة وتعمل.

إعجابَين (2)

شكراً على تطوير هذه الإضافة المفيدة يا ريتشارد.

لقد أجريت بعض التعديلات الطفيفة للتكيف مع حالة الاستخدام الخاصة بي: حظر عناوين URL معينة للمستخدمين في مناطق معينة. ما قمت به هو، في add_model_callback(:application_controller, :before_action)، إضافة بعض قواعد المطابقة الإضافية مع request.fullpath، على سبيل المثال:

return unless request.fullpath.start_with?(*SiteSetting.topic_geo_blocking_exact_paths.split('|'))

أجد أن هذا الحظر الجغرافي على مستوى عنوان URL يعمل إذا قمت بالوصول إلى عنوان URL عن طريق كتابته مباشرة في شريط التنقل في المتصفح. ومع ذلك، إذا انتقلت إلى عنوان URL عن طريق النقر عليه من الصفحة الرئيسية لـ Discourse، فإن هذا لا يعمل. (ولكن بعد الضغط على F5 لتحديث الصفحة، يتم حظره.)

هل يمكنك تقديم أي نصيحة لإصلاح هذه المشكلة؟ شكراً.

إعجاب واحد (1)

ستحتاج إلى إضافة بعض أكواد Ember لاعتراض الموجه أيضًا.

ومع ذلك، أعتقد أنك ستحتاج إلى اتباع نهج مختلف هنا. لم يتم إنشاء هذا المكون الإضافي لهذا النوع من التصفية المحددة.

من المحتمل أن يعمل بشكل أفضل لإنشاء مكون إضافي منفصل يحتوي على آلية لإضافة/إزالة المستخدمين إلى المجموعات بناءً على موقعهم الجغرافي، وبعد ذلك يمكنك الاستفادة من أمان المجموعة الحالي لتقييد أو السماح بالوصول إلى أجزاء معينة من المنتدى.

3 إعجابات

هذه إضافة مفيدة ولكن ما الذي قد يمنعها من العمل كما هو متوقع، أولاً، تم تثبيت الإضافة بشكل جيد وهذه ليست المشكلة.

لقد قمت بإعداد عدد قليل من البلدان المحظورة ثم اختبرت باستخدام VPN للوصول إليها عبر تلك البلدان ولكن لم أواجه أي تحذيرات حظر.

ربما تكون VPN هي المشكلة. ليست كل شبكات VPN متماثلة؟

من المتوقع ألا يقوم هذا المكون الإضافي بحظر شبكات VPN.

باستثناء ذلك، من الواضح أنه سيقوم بحظر عقد خروج شبكات VPN في المناطق الجغرافية المحظورة.

إعجاب واحد (1)

حسناً شكراً على هذه الإشارة. لم أكن أضع في اعتباري عقد الخروج وليس لدي أي فكرة عن مكان عقد الخروج في الاتصالات، وكان قراءة “ما هو عنوان IP الخاص بي” كافية بالنسبة لي، فقد تطابقت مع المنطقة/البلد الذي تم اختباره للحظر الجغرافي.\n\nلذا، قم بعكس الأمر، لقد قمت بحظر المنطقة التي أقع فيها ولم أستخدم شبكة افتراضية خاصة (VPN)، واستخدم جهازًا مختلفًا يمكنني من خلاله اختبار كل من الشبكة الثابتة والشبكة الخلوية، ولا يزال لا شيء يحدث، ولا يتم تفعيل الحظر الجغرافي كما هو متوقع عند الاتصال.

يرجى تفهم أن الوكيل أو VPN أو Tor سيكون دائمًا قادرًا على التحايل على هذه الأنواع من الآليات. لا يُفترض أن يقوم المكون الإضافي بحظرها. يتم حظر الموقع الجغرافي إما لأسباب قانونية، أو لحظر الوصول للزائر العادي.

هل قمت بذلك؟

إعجاب واحد (1)

تم تقسيم 5 مشاركات إلى موضوع جديد: مشاكل MaxMindDB

يبدو أن هذا يستخدم أيقونة fa-user القديمة بدلاً من user. هذا يسبب الكثير من الأخطاء.

إعجابَين (2)

تم الإصلاح، شكراً للإبلاغ!

4 إعجابات

شكراً لك على هذا المكون الرائع.
إذا كان الغرض منه منع البريد العشوائي أو البلدان غير المرغوب فيها من الوصول إلى الصفحات العامة، فهل يمكنه، بالنسبة لنسخة خاصة من Discourse، منع عمليات فحص الروبوتات السيئة أيضاً؟

إعجاب واحد (1)

كلاهما إلى حد ما، ولكنه يعتمد. رسميًا يحظر البلدان غير المرغوب فيها، ولكنه لا يحدث أي فرق بين البشر والروبوتات المحتملين.

إذا كان مثيلك خاصًا (أي يتطلب تسجيل الدخول) فلن تتمكن الروبوتات من الوصول إليه على أي حال (ما لم يتم تصميمها خصيصًا لإنشاء حساب وتسجيل الدخول).

ولدينا بالفعل روبوتات تنشئ حسابات :man_shrugging:

أدوات الكشط (Scrapers) شيء مختلف، لأنها تسرق المحتوى. روبوتات البريد العشوائي (Spam bots) التي تمثل مشكلة في المثيلات العامة هي مشكلة مماثلة تمامًا للمنتديات الخاصة. لهذا السبب لدينا ذكاء اصطناعي يقوم بمسح المحتوى.

بالنسبة لي، الحظر الجغرافي يقلل قدرًا لا بأس به من المكالمات وتسجيلات الدخول غير المرغوب فيها. يمكنني استخدامه لأن لدي منتدى فنلندي بالكامل [1] ولكن لا يمكن للمنتدى العالمي استخدامه بالطبع.

كل نقرة (knocker) تزيد العبء على خادم الويب، لكن Discourse يختلف عن عالم PHP. يمكن لروبوت بسهولة أن يسبب تأثيرًا من نوع DDoS على WordPress، وعندئذ قد يكون الحظر الجغرافي جزءًا من استراتيجية الدفاع. لكن Discourse أكثر مناعة ضد ذلك، على ما أعتقد.

لكن ضد روبوتات البريد العشوائي، لا يساعد الحظر الجغرافي إذا كان يجب السماح لجميع البلدان.


  1. قد يغير المترجم هذا الوضع، إذا أصبح جاهزًا للإنتاج يومًا ما ↩︎

شكراً على ردك، نعم بالفعل لن يحصلوا على أي بيانات ولكني ما زلت أراهم في سجلات nginx وما زالوا يولدون اتصالات غير مرغوب فيها لذلك قمت بتثبيت هذه الأداة السهلة لحظر الاتصالات إلى vps من بلدان معينة قبل أن تصل حتى إلى مثيل ديسكورس دوكر GitHub - friendly-bits/geoip-shell: User-friendly and versatile geoblocker for Linux

إعجاب واحد (1)

نعم، هذه أداة رائعة. لاحظ أن هذا يسبب حظرًا “صعبًا”، بينما يمنحك المكون الإضافي رسالة لطيفة وقابلة للتكوين يمكنك عرضها للمستخدمين المحظورين.

إعجابَين (2)