حماية PHP من البوتات: درس خطوة-بخطوة

احمِ أي موقع PHP من البوتات: ثبّت حزمة XAntiBot لـ PHP، اضبط مفتاح API، واحصل على قرارات allow/challenge/block من الخادم.

PHP يشغّل أغلب الويب — ومواقع PHP تتلقى أغلب الإساءة: سبام نماذج WordPress، تخمين كلمات مرور صفحات الدخول، سارقو الأسعار. هذا الدليل يمشي معك في حماية PHP حقيقية من التثبيت إلى مسار التحدي، بحزمة قابلة للتثبيت بدل مقتطفات مرتجفة.

لماذا include-first أفضل من "افحص داخل النموذج"

كثير من الدروس تريك فحص CAPTCHA داخل معالج النموذج. هذا متأخر وضيّق: البوتات تضرب كل الصفحات لا النماذج فقط. النمط الناجح include-first: ملف واحد يُستدعى في قمة نقطة الدخول يقيّم كل طلب قبل تشغيل تطبيقك — ويمكن allow أو challenge أو block قبل أي HTML.

الخطوة 1 — مفتاح API

  1. أنشئ حساب XAntiBot مجاني (بلا بطاقة بنكية).
  2. لوحة التحكم ← API Keys ← أنشئ مفتاحًا.
  3. المفتاح يُعرض مرة واحدة — خزّنه في إعدادات الخادم، أبدًا في HTML أو JavaScript.

الخطوة 2 — تثبيت الحزمة

حمّل PHP Blocker الرسمي من لوحة التحكم. ثبّته: انسخ مجلد الحزمة لموقعك، انسخ config.php.example إلى config.php واضبط api_key وdomain وfailure_mode (deny أو allow — قرارك أمانًا مقابل توافرًا)، ثم استدعِ protect.php في قمة index.php. هذا كل التكامل — كل طلب الآن يُقيَّم قبل تشغيل تطبيقك.

ماذا تفعل الحزمة في كل طلب

  1. ترسل IP الزائر + UA + نطاقك إلى واجهة الكشف.
  2. تقرأ القرار: allow → الموقع طبيعي؛ block → صفحة 403 نظيفة؛ challenge → صفحة تحدٍّ (الخطوة 4).
  3. تخزّن القرارات مؤقتًا لنافذة قصيرة — زمن استجابة شبه معدوم للزائرين المتكررين.
  4. تفشل بأمان: عند تعذر الوصول للـ API يقرر failure_mode.

الخطوة 3 — WordPress وLaravel وأي PHP

لأنها include-first عند نقطة الدخول: WordPress في قمة index.php أو أقدم خطاف wp-config، Laravel في public/index.php قبل إقلاع الإطار، وأي تطبيق آخر في قمة الـ front controller.

الخطوة 4 — مسار التحدي (Turnstile)

عند قرار challenge تعرض الحزمة صفحة تحدٍّ مدعومة بـ Cloudflare Turnstile (خفي أولًا). اضبط مفتاحي الموقع/السر مرة واحدة؛ الـ gateway يتحقق من التوكن خادميًا قبل مرور الزائر. (الشرح الكامل: دليل Turnstile.)

الخطوة 5 — حماية النماذج تحديدًا

بوتات سبام النماذج تزور الصفحة ثم تُرسل فورًا. طبقات إضافية ناجحة: honeypot غير مرئي ← حد أدنى لزمن الإرسال (~3 ثوانٍ) ← حد معدل لكل IP على مسار النموذج ← قرار API يتكفل بالباقي.

الخطوة 6 — تحقق أنها تعمل

  1. زُر موقعك طبيعيًا → يعمل (allow).
  2. لوحة XAntiBot ← Detection Logs تعرض ز(common)ارتك بدرجة وأسباب.
  3. اختياري: طلب بطابع بوت (curl بلا رؤوس متصفح) → تحدٍّ أو حجب حسب قواعدك.

أخطاء شائعة

  • وضع المفتاح في كود الواجهة (يسرق فورًا).
  • failure_mode: allow ونسيانه (الحماية تتعطل بصمت أثناء الانقطاع).
  • الاختبار بـ IP مُدرج بالنسبة البيضاء والحكم "لا تعمل" على الآخرين.
  • حجب IP مراقبات التشغيل — أدرجها بالبيضاء عمدًا.

أسئلة شائعة

تعمل على استضافة مشتركة؟ نعم — PHP عادي + cURL بلا امتدادات. هل تحجب Google؟ لا — الزواحف الحقيقية مُتحقق منها (reverse-DNS) ومسموحة؛ المزيفون بـ UA "Googlebot" يُدرَّجون كبوتات. التكلفة؟ الواجهة بخطة مجانية حقيقية؛ الخطط المدفوعة بشهرية شفافة.

الخطوة التالية