Loading...

الأمان · قراءة 9 دقائق

ما هي الكابتشا؟ كيف تعمل، وكم تكلّف، وما الذي يحلّ محلها

الكابتشا (CAPTCHA) اختبار يستخدمه الموقع للتمييز بين البشر والبرامج الآلية: حروف مشوّهة، أو شبكة صور، أو مربع «أنا لست روبوت»، أو فحص غير مرئي يقيّم المتصفح. توقف الروبوتات البسيطة لكنها تكلّف الزائر الحقيقي وقته، بينما تؤدي فحوص JavaScript وتحديد معدل الطلبات وتقييمات الروبوتات المهمة نفسها بلا ألغاز.

آخر تحديث

ما هي الكابتشا؟ كيف تعمل، وكم تكلّف، وما الذي يحلّ محلها

كيف تعمل الكابتشا

CAPTCHA اختصار إنجليزي معناه «اختبار تورنغ عام وآلي بالكامل للتمييز بين الحواسيب والبشر». صاغ باحثون في جامعة كارنيغي ميلون الاسم عام 2003، ولم تتغير الفكرة منذ ذلك الحين: اسأل عن شيء سهل على الإنسان وصعب على البرنامج، ولا تقبل الطلب إلا إذا جاءت الإجابة صحيحة.

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

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

التحقق على الخادم: الخطوة التي تعطي الأداة معناها

curl -s https://www.google.com/recaptcha/api/siteverify \
  -d secret="$RECAPTCHA_SECRET" \
  -d response="$TOKEN_FROM_THE_FORM"

# {"success": true, "hostname": "example.com", ...}
# hCaptcha and Turnstile work the same way, each with its own siteverify URL.

الأنواع: من الحروف الملتوية إلى فحص بلا لغز

الكابتشا النصية تعرض حروفًا وأرقامًا مشوّهة. كانت الجيل الأول وهي اليوم الأضعف: برامج التعرّف على الحروف تقرؤها أفضل من كثير من البشر.

الكابتشا المصوّرة تطلب منك اختيار كل مربع فيه إشارة مرور أو دراجة. الكابتشا الصوتية تقرأ أرقامًا فوق ضوضاء خلفية، وهي موجودة أساسًا بديلًا يسهل الوصول إليه للنوعين السابقين.

reCAPTCHA v2، أي مربع Google، غيّر النموذج عام 2014. فالضغط على «أنا لست روبوت» هو في الأساس لحظة يراقب فيها السكربت المتصفح وطريقة تصرفه، ولا تظهر شبكة الصور إلا للزائر الذي لم يتأكد منه. أما نسخته غير المرئية فتلغي المربع نفسه ولا تعرض الشبكة إلا عند الحاجة.

reCAPTCHA v3 (2018) لا يعرض شيئًا على الإطلاق. يعيد تقييمًا بين 0.0 و1.0 لكل إجراء، وخادمك هو من يقرر معنى التقييم المنخفض: الرفض، أو طلب عامل تحقق ثانٍ، أو تحويل الإرسال إلى المراجعة.

hCaptcha يتبع نموذج v2، بفحوص في الخلفية ومهمة صور عند الشك، ويقدّم نفسه خيارًا يركّز على الخصوصية، وتضيف نسخته للمؤسسات تقييمات للمخاطر.

Cloudflare Turnstile (2022) يستبدل اللغز بمجموعة متغيرة من الفحوص غير التفاعلية تعمل في المتصفح، وهو مجاني لأي موقع، لا للمواقع التي خلف Cloudflare فقط. ولأداته ثلاثة أوضاع: مُدار (مربع اختيار فقط إذا لم تحسم الفحوص)، وغير تفاعلي، وغير مرئي.

الاتجاه واضح من القائمة: كل جيل يسأل الزائر أقل ويسأل المتصفح أكثر.

ماذا تكلّفك الكابتشا

الوقت، وما وراءه من تحويلات. قاست دراسة واسعة لجامعة ستانفورد عام 2010 نحو 10 ثوانٍ لحل كابتشا مصوّرة وقرابة 30 ثانية للصوتية، وكانت كثير من الإجابات الصوتية خاطئة. كل ثانية من هذه الثواني تقف بين الزائر وما جاء ليفعله: التسجيل أو الدفع أو طرح سؤال عليك.

إمكانية الوصول. اللغز البصري يُقصي المكفوفين وضعاف البصر، والبديل الصوتي صعب على الجميع وعديم الفائدة لمن يجمع بين ضعف البصر وضعف السمع. نشر W3C مذكرة مخصصة بالكامل لصعوبة وصول ذوي الإعاقة إلى الكابتشا، وتشترط إرشادات WCAG أن تأتي الكابتشا مع بديل يخاطب حاسة أخرى.

الخصوصية ووزن الصفحة. الأداة سكربت من المزوّد يُحمَّل في صفحتك ويرى متصفح الزائر، وهذا مكانه سياسة الخصوصية لديك. وهي أيضًا قطعة كبيرة نسبيًا من JavaScript تابع لطرف ثالث، فحمّلها في الصفحة التي فيها النموذج فقط، لا في الموقع كله.

الخطأ في تقدير البشر. الأنظمة القائمة على تقييم المخاطر تتعلم شكل الحركة النموذجية، ومستخدم VPN أو متصفح يركّز على الخصوصية أو اتصال مكتب مزدحم يبدو أقل نموذجية. فيتلقى ألغازًا أكثر أو تقييمًا أدنى دون أن يرتكب خطأ.

لماذا لم تعد الألغاز كافية

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

الآلات تحسّنت. سقطت الكابتشا النصية أولًا أمام التعرّف على الحروف، ثم شبكات الصور أمام نماذج الرؤية الحديثة. ووجدت دراسة قُدّمت في مؤتمر USENIX Security عام 2023 أن الروبوتات تحل عدة أنواع شائعة من الكابتشا أسرع من البشر، وتحل النص المشوّه بدقة أعلى.

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

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

البدائل غير المرئية

هذه هي الفحوص التي تحلّ محل اللغز. لا يسأل أيّ منها الزائر شيئًا، وهي أقوى حين تعمل معًا.

فحص JavaScript (JS challenge). يردّ الخادم على أول طلب مريب بصفحة صغيرة تشغّل سكربتًا في المتصفح. المتصفح الحقيقي ينهيه في نحو ثانية ويتلقى ملف تعريف ارتباط (cookie) موقّعًا، أما السكربت الذي يكتفي بتنزيل HTML فلا يتجاوزها. يرى الزائر صفحة قصيرة «جارٍ التحقق من اتصالك» أو لا يرى شيئًا.

إثبات العمل (proof of work). نوع يحل فيه المتصفح مسألة حسابية صغيرة. لا يلاحظه البشر، لكن كل طلب يكلّف الروبوت وقت معالجة، وهذا يتراكم على نطاق واسع.

تحديد معدل الطلبات. يعدّ طلبات كل عميل عبر الزمن. الإنسان يقرأ صفحة وينقر بضعة روابط في الدقيقة، والكاشط (scraper) يرسل المئات. العدّ يكشف سلوكًا لا يكشفه أي طلب منفرد.

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

حقول المصيدة (honeypot). حقل في النموذج مخفي عن البشر بواسطة CSS. البشر يتركونه فارغًا، والروبوتات الساذجة تملأ كل الحقول فتكشف نفسها. مجاني وغير مرئي وفعّال ضد الرسائل المزعجة الرخيصة.

زواحف محركات البحث الموثّقة. يجب أن تعبر محركات البحث كل ما سبق دون عائق. ويُتعرَّف عليها من الشبكة التي تأتي منها، لا من نص user agent الذي يستطيع أي أحد كتابته.

أين ما زالت الكابتشا في مكانها

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

وهكذا نستخدمها نحن أيضًا. تحمل نماذج التسجيل والتواصل في cdn.com.tr كابتشا بمربع اختيار، وفي صفحة الأسعار لا يُحمَّل سكربت الكابتشا إلا عند فتح نموذج التواصل الخاص بالمؤسسات، فلا يحمّله من يتصفح الأسعار فقط.

وأين لا مكان لها: تصفح الصفحات العادي، وقوائم المنتجات، والمقالات، وواجهات API، وتطبيقات الجوال. فاللغز أمام التصفح يفرض ضريبة على كل زائر لإيقاف حركة يوقفها فحص غير مرئي على الـedge بشكل أفضل.

كيف يحمي CDN.com.tr الموقع بلا ألغاز

الحماية من الروبوتات في cdn.com.tr فحص JavaScript يعمل على الـedge، أمام خادم المصدر لديك. في لوحة التحكم هي بطاقة الحماية من الروبوتات (JS Challenge) في قسم Protection، ولها ثلاثة أوضاع: معطّل، والزوار المشبوهون (موصى به)، والجميع. يصل تغيير الوضع إلى الـedge من تلقاء نفسه، ولا يوجد ما تنشره يدويًا.

في وضع الزوار المشبوهين لا يُفحص إلا الطلب الذي يحمل إشارة خطر: حركة من شبكات مراكز البيانات والسحابة التي نادرًا ما يتصفح منها قارئ حقيقي، وعميل يدّعي أنه محرك بحث لكنه يأتي من شبكة لا يستخدمها ذلك المحرك، ونص user agent غائب أو شبه فارغ، وموجة مفاجئة من مشاهدات الصفحات من عنوان واحد. أما القارئ على اتصال منزلي أو جوال فلا يرى شيئًا.

لا يُفحص إلا التنقل إلى الصفحات. الصور وملفات الأنماط والسكربتات واستدعاءات API وإرسال النماذج تمر دون مساس، فلا تتأثر نسبة الإصابة في الذاكرة المؤقتة (cache) ولا تطبيقاتك. وزواحف محركات البحث الموثّقة (Google وBing وYandex وApple وDuckDuckGo) تمر دائمًا، إذ يُتحقق منها وفق الشبكة التي تأتي منها فعلًا لا وفق الاسم الذي ترسله، فلا يكلّفك الفحص أي خسارة في الفهرسة.

يرى الزائر الخاضع للفحص صفحة قصيرة «جارٍ التحقق من اتصالك» بلغته لنحو ثانية (سبع لغات مدمجة، والإنجليزية لغيرها)، ثم تُفتح الصفحة التي طلبها. تُرسل صفحة الفحص برمز 503 مع noindex، فلا يمكن أن تظهر في نتائج البحث أبدًا. ولا يُسأل الزائر الذي اجتازها مرة أخرى طوال 30 دقيقة، وملف تعريف الارتباط الخاص بالإذن مربوط بعنوانه ومتصفحه، فلا يمكن نسخه إلى جهاز آخر.

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

ماذا أوقف، وما الذي يقف خلفه

هذا هو سقف أي فحص JavaScript: الروبوت الذي يقود متصفحًا حقيقيًا يستطيع تشغيل السكربت. ولهذا فالفحص طبقة واحدة من عدة طبقات على الـedge نفسه. تحديد معدل الطلبات، المضبوط على مستوى الحساب كله أو لكل قاعدة توصيل والمحسوب لكل عنوان عميل، يردّ برمز 429 على كل ما يتجاوز حصته، وهذا ما يجعل أسطول المتصفحات بلا واجهة مكلفًا. ويفحص WAF ما تحمله الطلبات، وتغلق قواعد الدولة وASN برمز 403 شبكةً لا تريد أن تسمع منها شيئًا.

وتحتفظ بطاقة الفحص بإحصاءاتها الخاصة: الفحوص المعروضة، والفحوص المجتازة، والزواحف الموثّقة التي مُرّرت، وأسباب فحص الزوار، والشبكات الأكثر خضوعًا للفحص، خلال الساعة أو اليوم أو الأسبوع أو الشهر الأخير. ونسبة اجتياز قريبة من الصفر هي النتيجة المطلوبة، لأنها تعني أن ما أوقفته لم يكن بشرًا.

أي أداة لأي حالة

صفحات تُكشط أو تُغرق بعملاء يشبهون المتصفحات: الحماية من الروبوتات في وضع الزوار المشبوهين.

هجوم جارٍ: وضع الجميع طوال مدة الهجوم، ثم العودة إلى الزوار المشبوهين.

تخمين كلمات المرور في صفحة الدخول: تحديد صارم لمعدل الطلبات على ذلك المسار، وكابتشا في النموذج.

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

حركة من شبكة لا تخدمها أبدًا: قاعدة حسب ASN أو الدولة.

حمولات خبيثة مثل حقن SQL: الـWAF. الفحص يتحقق ممن يسأل لا مما يرسله. وللهجمات الحجمية راجع الحماية من DDoS.

الأسئلة الشائعة

ما معنى CAPTCHA؟

هي اختصار Completely Automated Public Turing test to tell Computers and Humans Apart، أي اختبار تورنغ عام وآلي بالكامل للتمييز بين الحواسيب والبشر. ظهر المصطلح عام 2003 في جامعة كارنيغي ميلون. وعبارة «اختبار تورنغ» إشارة إلى اختبار آلان تورنغ لمعرفة هل تستطيع الآلة أن تبدو إنسانًا، لكن معكوسًا: الحَكَم هنا آلة.

هل يبقى reCAPTCHA v3 كابتشا إذا لم يعرض شيئًا؟

إنه الخدمة نفسها بعقد مختلف. لا يعرض v3 لغزًا أبدًا، بل يعيد لكل إجراء تقييمًا من 0.0 (روبوت على الأرجح) إلى 1.0 (إنسان على الأرجح)، وخادمك يقرر ما يفعله به. هذا يجعله تقييمًا للروبوتات أكثر منه اختبارًا، ويبقى العمل المهم، أي اختيار العتبات وما يحدث تحتها، عليك.

هل تستطيع الروبوتات حل الكابتشا؟

نعم. نماذج التعرّف على الصور تحل ألغاز النصوص والصور، وخدمات الحل تحيل الباقي إلى عمال بشريين بأجر، ببضعة دولارات لكل ألف. ما زالت الكابتشا تصفّي الأتمتة الرخيصة التي تشكّل معظم الرسائل المزعجة، لكن لا ينبغي أن تكون دفاعك الوحيد.

هل Cloudflare Turnstile مخصص للمواقع التي تستخدم Cloudflare فقط؟

لا. Turnstile أداة واجهة مع استدعاء تحقق من جهة الخادم، ويعمل على أي موقع، بما في ذلك المواقع التي تُقدَّم عبر CDN آخر. ومثل أي كابتشا، لا يحمي إلا إذا تحقق خادمك من الرمز مع كل إرسال.

هل تضر الكابتشا أو فحوص الروبوتات بتحسين محركات البحث (SEO)؟

الكابتشا في النموذج لا تضر، لأن زواحف البحث لا ترسل النماذج. أما الفحص أمام الصفحات فيضر إن أوقف الزواحف. ولهذا يمرّر فحص cdn.com.tr زواحف Google وBing وYandex وApple وDuckDuckGo الموثّقة، ويرسل صفحة الفحص برمز 503 مع noindex فلا تُفهرس أبدًا.

إذا فعّلت الحماية من الروبوتات، هل ما زلت أحتاج إلى كابتشا؟

في النماذج التي يريد المهاجمون إرسالها، نعم. الفحص يقرر من يحق له تحميل صفحاتك، ولا ينظر في إرسال النماذج. تحتفظ نماذج التسجيل والدخول والتواصل بالكابتشا، ويحدّ تحديدُ معدل الطلبات على تلك المسارات من سرعة المحاولات.

ماذا يرى الزائر الخاضع للفحص؟

صفحة قصيرة «جارٍ التحقق من اتصالك» بلغته لنحو ثانية، ثم تُفتح الصفحة التي طلبها من تلقاء نفسها. يجب أن يكون JavaScript مفعّلًا في متصفحه. وبعد اجتيازها لا يُسأل مرة أخرى طوال 30 دقيقة.