تحقّق دون خادم خلفي
رمز Caputchin لا يثبت شيئًا حتى يؤكّده شيء. عادةً ذلك الشيء خادمك الخلفي، الذي ينادي /siteverify ويقرّر ما إذا كان يثق بالطلب. ينقل التحقّق المُستضاف تلك الخطوة إلى Caputchin: يرسل نموذجك POST إلى مُحوِّل Caputchin، فيتحقّق Caputchin من الرمز، ويُسقط ما يفشل، ويحوّل الإرساليات المتحقّق منها فقط إلى وجهة تختارها.
إنه قرار الثقة نفسه كفحص الخادم الخلفي، يجري في جانب Caputchin بدل جانبك. والمقصد أن لا نداء /siteverify لتكتبه ولا سرّ لتحفظه على خادم، لأن لا خادم أصلًا.
التحقّق المُستضاف ميزة مدفوعة، متاحة على Alpha فما فوق.
لمن هو
التحقّق المُستضاف موجود للحالة التي يكون فيها تشغيل خادم خلفي لمجرّد فحص رمز أكثر مما يحتاجه المشروع.
| أنت | لِمَ يناسب |
|---|---|
| موقع ساكن (Webflow، أو Framer، أو HTML عادي على CDN) | لا خادم لاستقبال النموذج أو نداء /siteverify. |
| أداة بناء بلا كود (Wix، أو Squarespace، أو Carrd) | لا تستطيع إضافة كود تحقّق على الخادم. |
| مطوّر فرد أو فريق صغير | نموذج تواصل أو تسجيل لا يستحقّ إقامة خادم خلفي وتشغيله. |
| تشغّل خادمًا خلفيًّا أصلًا، لكن ليس لهذا النموذج | تستطيع توجيه نموذج واحد إلى المُحوِّل وترك بقية منظومتك وشأنها. |
إن كنت تشغّل خادمًا خلفيًّا وتريد التحقّق هناك، فاستخدم التحقّق على خادمك الخلفي بدلًا من ذلك. الاثنان بديلان، لا طبقتان.
كيف يعمل
يحمل المُحوِّل الإرسالية في الذاكرة فقط للحظة التي يستغرقها تسليمها. لا تخزين بين الإرسال والتسليم، وحقل caputchin-token يُزال قبل أن تبلغ الحمولة وجهتك.
الوجهات
تُعدّ واحدة أو كلتيهما لكل مفتاح موقع. تفعيل كلتيهما نمط شائع: أرسِل إلى webhook للمعالجة وأرسِل لنفسك نسخة بالبريد.
| الوجهة | ما الذي تستقبله |
|---|---|
| Webhook | POST بـ JSON يحمل حقول نموذجك إضافةً إلى بيانات تحقّق Caputchin الوصفية. |
| البريد | بريد عادي بحقول النموذج وتذييل يشير إلى أن Caputchin تحقّق من الإرسالية. |
التسليمات غير موقّعة. سرّية رابط المُحوِّل هي ما يصادق نداء webhook، فأبقِ الرابط خارج المستودعات العامة وكود جانب العميل. يعرض درس الإعداد حمولة webhook بالضبط.
ما الذي يبقى خاصًّا
يتّبع التحقّق المُستضاف موقف لا-بيانات-زائر نفسه كبقية Caputchin:
- الإرساليات لا تُخزَّن أبدًا. تعيش في ذاكرة العملية طوال مدة التحويل، ثم تختفي. ابنِ سجلّك الخاص على طرف webhook إن أردت واحدًا.
- لا تُجمَع بيانات عن المُرسِل. لا IP، ولا User-Agent، ولا بصمة، ولا تتبّع.
- القياس مجمّع فقط. يحصي Caputchin نجاحات التسليم وإخفاقاته كي ترى ما إذا كانت وجهاتك سليمة، لا محتويات أي إرسالية أبدًا. انظر الإحصاءات.
كيف يُؤمَّن رابط يقدّمه العميل
رابط ستناديه خوادم Caputchin خطر تزوير طلب من جانب الخادم كلاسيكي. يرفض المُحوِّل أي رابط webhook يكون مضيفه عنوانًا خاصًّا أو loopback أو link-local أو بيانات سحابة وصفية، عند حفظه وعند كل تسليم مجدّدًا. تشمل الفئات المحجوبة:
| الفئة | أمثلة |
|---|---|
| Loopback وغير المحدّد | 127.0.0.1، و0.0.0.0، و::1 |
| الخاصّ (RFC 1918) | 10.x.x.x، و172.16.x.x حتى 172.31.x.x، و192.168.x.x |
| Link-local وبيانات السحابة الوصفية | 169.254.x.x، خصوصًا نقطة الوصول الوصفية 169.254.169.254 |
| NAT بدرجة المشغّل | 100.64.x.x حتى 100.127.x.x |
| Multicast والمحجوز | 224.x.x.x وما فوق |
| أسماء المضيفين الداخلية | localhost وأي مضيف ينتهي بـ .local، أو .localhost، أو .internal |
| IPv6 خاصّ | عناوين link-local (fe80::/10) وunique-local (fc00::/7) |
الترميزات التي تحاول تنكير عنوان محجوب تُمسَك أيضًا: مضيف بعدد عشري مثل http://2130706433/ أو مضيف ست عشري مثل http://0x7f000001/ (وكلاهما يعني 127.0.0.1) يُرفَض. لا يُقبَل سوى روابط http وhttps؛ وأي مخطَّط آخر يُرفَض. ويرفض المُحوِّل أيضًا اتّباع عمليات إعادة التوجيه، فلا تستطيع نقطة وصول webhook ارتداد النداء إلى هدف داخلي. يظهر الرابط المحجوب كخطأ عامّ بدل خطأ محدّد، فلا يمكن استخدامه لاستكشاف شبكة. لذا يجب أن يقيم webhook خاصتك عند رابط https عامّ.
ما الذي تُرك عمدًا
- لا صندوق وارد للإرساليات. لا تاريخ مخزَّن للإرساليات لتصفّحه في لوحة التحكّم.
- لا محوّلات طرف أول لـ Discord أو Slack أو Telegram أو SMS. Webhook والبريد فقط. يستطيع webhook التوزيع إلى أيٍّ منها في جانبك.
- لا رفع ملفّات. يقبل المُحوِّل حقولًا نصّية؛ وإرسالية تحمل ملفًّا تُرفَض.
- لا تحويل للحمولة. ما يرسله النموذج هو ما تستقبله وجهتك، إضافةً إلى بيانات التحقّق الوصفية.
انظر أيضًا
- أعدّ التحقّق المُستضاف: شرح يربطه بصندوق اختبار أولًا.
- إحصاءات التحقّق المُستضاف: قراءة صحّة التسليم.
- التحقّق على خادمك الخلفي: البديل حين تشغّل خادمًا.