يتعرض منتدي Discourse الخاص بي لهجوم من قبل الماسحات الضوئية الآلية باستمرار: يقوم أحد الروبوتات بمسح قائمة كلمات مقابل /u/<name>.json، ويجمع أخطاء 404، ليتعرف على أسماء المستخدمين الموجودة. كل محاولة فحص تستهلك عامل Unicorn وتقدم للروبوت إجابة مجانية.
إليك مقتطفًا بسيطًا لـ Cloudflare Snippet يتعامل مع محاولات الفحص هذه عند الحافة (Edge) عبر تقديم ملف تعريف وهمي ولكن مقنع — 200، ومعرف ثابت مشتق من اسم المستخدم، وتاريخ الانضمام، ومستوى الثقة، وعدد المنشورات، وحتى عنوان بريد إلكتروني وهمي يحتوي على سلسلة كاناري (canary string). الزوار الحقيقيون يمررون مباشرة دون أي تدخل: وجود ملف تعريف ارتباط للجلسة، أو مرجع من نفس الموقع (same-site referer)، أو ترويسة Accept: text/html، أو مفتاح API كلها تعني “اترك هذا كما هو”. الخادم الأصلي (Origin) لا يرى أي محاولة فحص، لذا فإن التغيير يقلل الحمل ولا يزيده.
تُسجل عمليات الوصول في New Relic متضمنةً عنوان IP، ورقم النظام المستقل (ASN)، واسم الشبكة، والدولة، والمدينة، وموقع الحافة (Edge colo)، وإصدارات HTTP/TLS، وعميل المستخدم (User agent)، واسم المستخدم الذي تم فحصه. هناك لوحة تحكم مكوّنة من إحدى عشرة أداة يمكنك استيرادها، بالإضافة إلى استعلامات NRQL لمعرفة “من يواصل العودة”.
فتحة Snippet واحدة. لا حاجة لـ KV، ولا Worker، ولا تغييرات على الخادم الأصلي، ولا حجب.
لا يزال لديك 4 فتحات متاحة ويمكن استخدامها مع مواقع أخرى في حسابك.
تغطي الوثائق قاعدة Cloudflare (ملاحظة: عامل التشغيل matches يتطلب خطة Business — استخدم wildcard بدلاً منه)، وعملية الاستيراد في New Relic (يجب استبدال عنصرين نائبيين وإلا ستفشل العملية)، والمحاذير الخاصة بـ Discourse — بما في ذلك الحالة التي يكون فيها الإعداد المدمج hide user profiles from public هو الحل الأفضل ببساطة. لكن هذا لم يكن خيارًا متاحًا بالنسبة لي.
آمل أن يساعد هذا أحدهم. انخفض حمل خادمنا خلال ساعة واحدة من النشر.

