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

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

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

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

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

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

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

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

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

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

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

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

ملاحظة هيئة واحدة: نقطة وصول تحقّق hCaptcha تتوقّع `application/x-www-form-urlencoded`، بينما يقبل Caputchin بـ JSON. إن كان كودك القائم يرسل حقولًا مرمَّزة-نموذجيًّا، فبدّل الجسم إلى JSON (`{"secret":"...","response":"..."}`) بـ `Content-Type: application/json`. الحقول نفسها دون تغيير. مرجع الطلب/الاستجابة الكامل على [تحقّق من رمز على خادمك الخلفي](/docs/integration-guides/verify-on-your-backend)؛ ومقتطفات أطر العمل في [أمثلة الخادم الخلفي](/docs/integration-guides/backend-examples).

## 3. أسقط النتيجة، إن استخدمت hCaptcha Enterprise

يعيد hCaptcha Enterprise نتيجة مخاطرة `score` (حيث رقم **أعلى** يعني مخاطرة **أكثر**) ويطلب منك اختيار عتبة. Caputchin **لا** يعمل هكذا: `success` نجاح/فشل موثوق، لأن التحقّق اجتيز فعلًا (فحص proof-of-work، أو [جولة لعبة معاد اشتقاقها على الخادم](/docs/understanding-caputchin/gaming-anti-cheat))، لا تقدير مخاطرة.

إن كان كودك `if (data.score < 0.7)`، فاستبدله بـ `if (data.success)`. حقل `score` في Caputchin غير ذي صلة: موجود فقط لجولات الألعاب وهو نتيجة **اللعبة** (للعلم، للوحات نتائجك الخاصة)، لا مخاطرة ولا احتمال-روبوت أبدًا، فلا تحكّم الوصول به. (لاحظ أن الاتّجاه أيضًا عكسيّ، نتيجة hCaptcha ترتفع مع المخاطرة؛ ونتيجة Caputchin ترتفع مع أداء اللعبة.)

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

- **موقف الخصوصية الذي اخترت hCaptcha لأجله، محفوظًا.** 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_...`) يبقى على الخادم فقط، انضباط hCaptcha نفسه بالضبط. لا تشحن السرّ إلى المتصفّح.
- **الرمز للاستخدام مرة واحدة.** كـ hCaptcha، يتحقّق الرمز مرة. لا تخبّئه ولا تعد تشغيله.
- **غيّر اسم الحقل الذي يقرؤه خادمك الخلفي.** الحقل المخفي `caputchin-token`، لا `h-captcha-response`، فوات شائع بسطر واحد.
- **هيئة الجسم.** أرسِل طلب التحقّق كـ JSON، لا مرمَّزًا-نموذجيًّا.

## انظر أيضًا

- [أضف الأداة](/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): حوّل التحقّق إلى لعبة.
