كيفية التعامل مع ارتفاع مفاجئ في "حركة المرور الأخرى" في تحليلات الموقع؟

مرحباً بالجميع،

لاحظت مؤخراً ارتفاعاً هائلاً في “حركة المرور الأخرى” في صفحة صحة المجتمع الخاصة بمنتدىي (لوحة تحكم مسؤولي Discourse → التقارير → صحة المجتمع).

إليكم التفاصيل:

  • الفترة: حوالي أوائل أغسطس 2025
  • حركة المرور اليومية: قفزت إلى أكثر من 100 ألف “حركة مرور أخرى” يومياً
  • مثال: في 16 أغسطس 2025
  • صفحات المشاهدات للمستخدمين المسجلين: 12,531
  • صفحات المشاهدات للمستخدمين المجهولين: 2,753
  • الزواحف المعروفة: 6,865
  • حركة المرور الأخرى: 102,054 (الغالبية العظمى من إجمالي 124 ألفاً)

تبدو “حركة المرور الأخرى” هذه غير طبيعية وهي أعلى بكثير من نشاط المستخدمين الحقيقي. التسجيلات مستقرة، لذا لا يبدو أنها نمو حقيقي.

أسئلتي هي:

  1. ماذا تعني “حركة المرور الأخرى” عادةً في Discourse؟
  2. هل يمكن أن تكون هذه روبوتات، بريد عشوائي، أو وكيل عكسي/شبكة توصيل محتوى (CDN) تم تكوينه بشكل خاطئ؟
  3. كيف يمكنني تقليل أو تصفية حركة المرور هذه؟ (على سبيل المثال، Nginx، جدار الحماية، إعدادات Discourse)
  4. هل من الآمن تجاهلها ببساطة، أم أنها ستؤثر على الأداء/التكلفة؟

ستكون أي اقتراحات أو أفضل الممارسات للتعامل بشكل صحيح مع هذا النوع من حركة المرور من أطراف ثالثة/روبوتات مفيدة للغاية.

شكراً مقدماً!

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

“حركة المرور الأخرى” هي على الأرجح روبوتات أو زواحف، وبعض التفاصيل الإضافية هنا Understanding pageviews and the site traffic report
يمكنك التحقق من تقرير الزواحف على لوحة التحكم الخاصة بك لمعرفة مصدر محتمل، وإذا أردت، يمكنك إبطاؤه أو حظره… بعض التفاصيل الإضافية حول كيفية القيام بذلك في: Controlling Web Crawlers For a Site

إعجابَين (2)

لقد واجهت مشاكل في يوليو مع الكثير من الطلبات من سنغافورة. قمت بحظر نطاق IP، مما نجح لفترة من الوقت، لكن المشكلة عادت بشكل أقوى في أغسطس (من سنغافورة وهونغ كونغ والمكسيك) مع تكلفة CDN عالية وغير متوقعة :face_with_steam_from_nose:

لاحظت ارتفاعًا في عدد مشاهدات الصفحات من Amazonbot و DataForSeoBot و meta-externalagent و SeekportBot، إلخ…

هذه الوثائق Controlling Web Crawlers For a Site تقول:

هذه القائمة لا تحتوي على بعض الزواحف الأكثر زيارة لدي، ولكن لدي سؤال على أي حال.
هل سيكون من المستحسن إضافة هذه القائمة بأكملها إلى إعداد وكلاء الزحف المحظورين؟
هل هناك طريقة لإضافة أسماء الروبوتات بشكل جماعي من ملف .txt؟

إعجاب واحد (1)
  1. تأتي الزواحف بنية فهرسة موقعك في محركات البحث، لذا يجب أن يكون ارتفاع حركة المرور منها ضئيلاً إلا إذا كانت هذه روبوتات تخفي نفسها كزواحف. لا ترغب العديد من المنتديات في فهرستها بواسطة الزواحف وهذا هو الخيار للقيام بذلك: تحمل الزواحف هوية/مرجعًا لمصدرها، لذا هنا يمكنك إضافة أي اسم تريده يسمح فقط لهذا المصدر بالزحف (آه، يا لها من كلمة غريبة :slight_smile: )

  2. المصدر الأكثر احتمالاً المسؤول عن زيادة حركة المرور لديك هو الروبوتات ويجب عليك التحقق من سجلات خادمك لهذا الغرض. إذا كنت تعرف شخصًا يعرف فقط الأساسيات جدًا في لينكس، فسأقترح أداة الإعداد لمدة دقيقتين هذه لحظر البلدان التي تتمتع بسمعة سيئة في الروبوتات (قد تجد هذا بسهولة عبر الإنترنت). بعد إعداده، لا يزال من الجيد إخبار مجتمعك بأنهم قد يحتاجون إلى VPN للوصول إلى موقعك إذا انتهى بهم الأمر في عطلة في تلك البلدان. إليك الأداة، إنها فعالة، وستقطع 80-90٪ من الطلبات غير الضرورية إلى خادمك. لديك وضعان ويجب عليك الاختيار بينهما: البلدان المسموح بها، أو البلدان المحظورة.

    GitHub - friendly-bits/geoip-shell: User-friendly and versatile geoblocker for Linux

  3. يمكنك أيضًا استخدام Geo Blocking plugin ولكنه يحظر فقط عرض الصفحة، ولكنه لا يحظر الطلبات المباشرة إلى خادمك كما تفعل الأداة المذكورة أعلاه.

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

حسنًا، أعتقد أن هذا لن يحل مشكلتي، لأن البوتات ستستهلك عرض النطاق الترددي لشبكة توصيل المحتوى (CDN) على أي حال.

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

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

تعديل

قال الذكاء الاصطناعي هنا نفس الشيء. لذا، سيكون وكيل عكسي.

إجابة الذكاء الاصطناعي

يستخدم المكون الإضافي GeoBlock لـ Discourse قاعدة بيانات MaxMindDB لتحديد بلد المستخدم أو شبكته (ASN) بناءً على عنوان IP الخاص به، ولكن الحظر الفعلي يحدث على مستوى التطبيق (داخل تطبيق Discourse)، وليس على مستوى الخادم أو الشبكة/جدار الحماية.

في الممارسة العملية:

  • إذا تطابق عنوان IP للزائر مع بلد أو شبكة محظورة، فإن تطبيق Discourse يعيد صفحة خطأ إلى الزائر بدلاً من محتوى المنتدى.
  • لا يحدث الحظر إلا بعد وصول طلب HTTP إلى تطبيق Discourse. بعبارة أخرى، لا تزال الطلبات تمر عبر خادم الويب الخاص بك (مثل nginx) وحاوية Docker وتصل إلى برنامج Discourse قبل حظر المستخدم.
  • هذا يعني أنك ستظل ترى هذه الطلبات في سجلات الخادم والوكيل/nginx الخاصة بك، حتى لو تم حظر المستخدم في النهاية بواسطة Discourse.
  • إذا كنت بحاجة إلى حظر “صارم” (منع الوصول حتى قبل وصول الطلب إلى تطبيق Discourse)، فستحتاج إلى حل GeoIP على مستوى الخادم (مثل الحظر على مستوى nginx/iptables أو أداة خارجية).

المصادر والمزيد من المعلومات:

ملخص:
لا يحظر المكون الإضافي Discourse GeoBlock الطلبات على مستوى الشبكة/الخادم، ولكن فقط بعد أن يقوم تطبيق Discourse بمعالجة الطلب. إذا كنت بحاجة إلى منع أي وصول قبل أن يرى تطبيقك الطلب، فيجب عليك استخدام نهج GeoIP على مستوى الخادم.

لم أستخدم مشاركة المحادثة لأنني سألت باللغة الفنلندية وأنتم على الأرجح لا تستطيعون فهمها :winking_face_with_tongue:

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

يعني أن صفحتك يتم الوصول إليها، لذا نعم أنت في طبقة أقرب إلى الخادم من حظر يتم على مستوى جدار الحماية، ومع ذلك لا يعني ذلك أنها مشكلة أمنية تتطلب وكيلًا عكسيًا.
الأداة التي اقترحتها تقلل الطلبات بنسبة 80٪ بالفعل، والـ discourse تطبيق آمن، الآن إذا كان لديك أشياء أخرى مستضافة على خادمك مثل موقع ويب، فقد يكون الوكيل العكسي مفيدًا، وفي غضون ذلك، هناك حلول أخرى لحظر عناوين IP ذات السمعة السيئة مثل Crowdsec، اسأل الذكاء الاصطناعي الخاص بك عن Crowdsec light :wink:

إعجابَين (2)

(مؤلف المكون الإضافي للحظر الجغرافي هنا)
نعم، يوقف المكون الإضافي للحظر الجغرافي الطلبات على مستوى التطبيق، على الرغم من أنه يفعل ذلك في مرحلة مبكرة جدًا. السبب في ذلك هو أنه تم تصميمه لعرض صفحة خطأ سهلة الاستخدام، لذلك يجب أن يكون قادرًا على تحميل أصول Discourse وعرض تلك الصفحة. كما أنه يسجل أي حظر في /logs إذا تم تكوينه للقيام بذلك.

تشمل المزايا الأخرى لهذا النهج القدرة على تكوين البلدان والشبكات المحظورة من داخل Discourse والقدرة ليس فقط على حظر الوصول ولكن أيضًا لفرض الإشراف.

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

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

This topic was automatically closed 30 days after the last reply. New replies are no longer allowed.