---
type: how-to
title: انتقل من Cloudflare Turnstile
summary: "استبدل Cloudflare Turnstile بـ Caputchin بأدنى تغييرات: شكل أداة-عميل-إضافةً-إلى-تحقّق-خادم نفسه يقابل واحدًا-بواحد تقريبًا، وكـ Turnstile النتيجة نجاح/فشل نظيف، وإليك القبل-والبعد."
---

يستخدم Caputchin النموذج ذا الجزأين نفسه كـ Cloudflare Turnstile، أداة على الصفحة تنتج رمزًا، وفحص على الخادم يؤكّده، فالانتقال أساسًا استبدال آليّ، لا إعادة كتابة. Turnstile الأقرب بين المزوّدين الشائعين إلى Caputchin، لأن كليهما يعيد نجاح/فشل موثوقًا بدل نتيجة مخاطرة، فلا عتبة لإعادة ضبطها. يعطي هذا الدليل القبل-والبعد لكل قطعة.

إن لم تكن قد أنشأت حساب Caputchin ومفتاح موقع بعد، فـ[أنشئ حسابك](/docs/getting-started/create-your-account) أولًا؛ ستحتاج **مفتاحًا عامًّا** (`cpt_pub_...`) للصفحة و**سرًّا** (`cpt_sec_...`) لخادمك الخلفي، التقسيم نفسه كمفتاح موقع Turnstile ومفتاحه السرّي.

## النموذج الذهني دون تغيير

```mermaid
flowchart LR
  A["الأداة على صفحتك"] -->|رمز| B["نموذجك / طلبك"]
  B -->|رمز| C["خادمك الخلفي"]
  C -->|سرّ + رمز| D["نقطة وصول siteverify"]
  D -->|نجح؟| C
```

كل ما بنيته أصلًا حول Turnstile، اعرض أداة، واجمع رمزًا، وأرسِله POST إلى خادمك، وتحقّق منه قبل أن تثق بالطلب، يبقى. الأسماء ونقاط الوصول وحدها تتغيّر.

## 1. استبدل مقتطف العميل

| | Turnstile | Caputchin |
|---|---|---|
| السكربت | `<script src="https://challenges.cloudflare.com/turnstile/v0/api.js" async defer>` | `<script src="https://cdn.jsdelivr.net/npm/@caputchin/widget@3/dist/widget.js">` |
| العنصر | `<div class="cf-turnstile" data-sitekey="...">` | `<caputchin-widget sitekey="cpt_pub_...">` |
| حقل الرمز في نموذج | `cf-turnstile-response` (محقون تلقائيًّا) | `caputchin-token` (محقون تلقائيًّا) |
| قراءة الرمز في JS | `turnstile.getResponse()` | [حدث `pass`](/docs/references/widget-methods-and-events) `detail.token` |

كـ Turnstile، تحقن أداة Caputchin **حقل رمز مخفيًّا تلقائيًّا** في النموذج الذي تجلس فيه، فإن كان نموذجك يرسل POST عاديًّا أصلًا، فلا تغيّر سوى العنصر واسم الحقل الذي يقرؤه خادمك الخلفي. انظر [أضف الأداة](/docs/getting-started/add-the-widget) لإعداد العميل الكامل و[خيار CDN مقابل npm](/docs/integration-guides/cdn).

## 2. استبدل تحقّق الخادم

هنا الأقرب بينهما، شكلا الطلب والاستجابة يصطفّان حقلًا بحقل تقريبًا.

| | Turnstile | Caputchin |
|---|---|---|
| نقطة الوصول | `POST https://challenges.cloudflare.com/turnstile/v0/siteverify` | `POST https://verify.caputchin.com/v1/siteverify` |
| حقول الطلب | `secret`، و`response` | `secret`، و`response` (متطابق) |
| الاستجابة | `{ success, challenge_ts, hostname, "error-codes", action, cdata }` | `{ success, challenge_ts, hostname, error-codes }` |
| قاعدة الثقة | تصرّف فقط إن `success === true` | تصرّف فقط إن `success === true` (متطابق) |

في معظم المنظومات التغيير الوحيد لكود تحقّقك هو الرابط وقيمة السرّ؛ وكلاهما يتفرّع على `success` أصلًا، فلا عتبة نتيجة لنقلها. Turnstile يقبل أيضًا بـ JSON لنداء التحقّق، تمامًا كـ Caputchin، فشكل الجسم يحمل دون تغيير. مرجع الطلب/الاستجابة الكامل، بما فيه رموز الأخطاء، على [تحقّق من رمز على خادمك الخلفي](/docs/integration-guides/verify-on-your-backend)؛ ومقتطفات أطر العمل في [أمثلة الخادم الخلفي](/docs/integration-guides/backend-examples).

إن كان تكامل Turnstile لديك يقرأ `action` أو `cdata` من الاستجابة، فلاحظ أن لا مكافئ مباشر لها في Caputchin؛ تلك وسوم خاصة بـ Turnstile تضبطها على الأداة. بيانات Caputchin المماثلة الوصفية (أي لعبة لُعِبت، ونتيجتها) تقيم في كتلة `platform` للاستجابة وهي للعلم فقط.

## ما الذي يحمل، وما الذي يتحسّن

- **ما زال نجاح/فشل نظيف.** تبقي أبسط قاعدة ثقة ممكنة، `if (success)`، بلا احتمال ولا عتبة لصيانتها.
- **موقف الخصوصية الذي اخترت Turnstile لأجله، محفوظًا.** Caputchin لا يجمع IP، ولا User-Agent، ولا بصمة، ولا قياسًا سلوكيًّا؛ فالبروتوكول لا مكان فيه لمعرّف زائر. انظر [الفلسفة](/docs/understanding-caputchin/philosophy).
- **لعبة اختيارية.** بدل تحدٍّ غير مرئيّ أو مُدار، تستطيع تحويل التحقّق إلى لعبة قصيرة يلعبها زوّارك فعلًا، وهي الجزء الذي يصمد أمام حلّالات الذكاء الاصطناعي. انظر [أضف لعبة](/docs/getting-started/add-a-game).
- **CSP صارم يبقى صارمًا.** يعمل Caputchin تحت Content-Security-Policy ضيّقة؛ تسمح ببضعة أصول بدل تخفيف سياستك. انظر [كيف يعزل Caputchin الألعاب](/docs/understanding-caputchin/game-sandboxing#the-csp-you-set-on-your-own-page).

## مزالق

- **مفتاحان، بيتان.** المفتاح العام (`cpt_pub_...`) يذهب على الصفحة؛ والسرّ (`cpt_sec_...`) يبقى على الخادم فقط، انضباط Turnstile نفسه بالضبط. لا تشحن السرّ إلى المتصفّح.
- **الرمز للاستخدام مرة واحدة.** كـ Turnstile، يتحقّق الرمز مرة. لا تخبّئه ولا تعد تشغيله.
- **غيّر اسم الحقل الذي يقرؤه خادمك الخلفي.** الحقل المخفي `caputchin-token`، لا `cf-turnstile-response`، فوات شائع بسطر واحد.
- **لا `action` / `cdata`.** إن تفرّعت عليها، فانقل ذلك المنطق مكانًا آخر؛ Caputchin لا يحملها.

## انظر أيضًا

- [أضف الأداة](/docs/getting-started/add-the-widget): إعداد العميل الكامل.
- [تحقّق من رمز على خادمك الخلفي](/docs/integration-guides/verify-on-your-backend): مرجع `siteverify` الموثوق.
- [أمثلة الخادم الخلفي](/docs/integration-guides/backend-examples): نداء التحقّق بكل لغة.
- [أضف لعبة](/docs/getting-started/add-a-game): حوّل التحقّق إلى لعبة.
