---
type: how-to
title: خصّص التحدّي
summary: اختر لعبة أو مربّع اختيار بنقرة واحدة، وثبّت اللغة والسمة، وأعِد تسمية الكوكي ومسار ردّ النداء اللذين تستخدمهما البوّابة على أصلك.
---

صفحة التحقّق التي تعرضها البوّابة تُضبَط لكل مفتاح موقع، من صفحة **بوّابة الوكيل** الخاصّة به في لوحة التحكّم، وعبر [API الإدارة](/docs/automation/management-api) وMCP وTerraform كأي إعداد آخر. وكل خيار أدناه يأتي افتراضيًّا على السلوك الذي لديك أصلًا، فمفتاح موقع لا تمسّه يظلّ يعمل تمامًا كما كان.

## اختر لعبة أو مربّع اختيار

**نوع التحدّي** يقرّر ما يفعله الزائر فعلًا:

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

قاعدتان تقيّدان الاختيار:

- **مفتاح موقع يطلب لعبة يعرض لعبة دائمًا.** إن كان إعداد **طلب لعبة للتحقّق** على مفتاح الموقع نفسه مشغّلًا، أو كان فريقك يطلب لعبة على كل مفتاح، فخيار مربّع الاختيار غير متاح، وتقول لوحة التحكّم أي إعداد يثبّته. وضبطه عبر الـ API يردّ `409 gate-forces-game-mode`.
- **اختيار لعبة يستلزم لعبة مثبّتة.** يحتاج مفتاح الموقع لعبة مثبّتة واحدة على الأقلّ ذات أثر قابل لإعادة التشغيل، له أو موروثة من الفريق. وبدون أي لعبة، فإن *اختيار* نوع اللعبة هو ما يردّ `409 no-games`. أمّا تشغيل البوّابة وحده فلا يردّه: مفتاح موقع لا يطلب لعبة يرتدّ إلى مربّع الاختيار، فتظلّ البوّابة تعمل ريثما ترتّب أمر الألعاب.

<Callout type="info">
إن أُزيلت آخر لعبة مثبّتة لاحقًا، يتوقّف مفتاح موقع يطلب لعبة عن تقديم التحقّق بدل أن يرتدّ بصمت إلى غيره، لأن مربّع اختيار لا يستطيع التحقّق على مفتاح يطلب لعبة. أمّا مفتاح *لا* يطلب لعبة فيرتدّ إلى مربّع الاختيار كي يبقى موقعك قابلًا للوصول.
</Callout>

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

## ثبّت لغة أو سمة

كلٌّ من **اللغة** و**السِّمة** افتراضهما *طابِق الزائر*، وهو ما تريده في الغالب الأعمّ:

- **اللغة** تتبع لغة متصفّح الزائر نفسه، ضمن اللغات الإحدى عشرة نفسها التي تدعمها الأداة.
- **السِّمة** تتبع تفضيل نظام الزائر الفاتح أو الداكن، وتتبدّل معه.

ثبّت واحدة بدل ذلك حين يكون الموقع المغلق أحاديّ اللغة، أو حين يكون ملتزمًا بسمة واحدة وتريد للتحقّق أن يوافقها بدل أن يتبع جهاز الزائر.

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

صياغة صفحة التحقّق نفسها غير قابلة للتخصيص.

## أعِد تسمية الكوكي ومسار ردّ النداء

لا تغيّر هذين إلا حين تتعارض الافتراضيات مع تطبيقك.

**اسم الكوكي** (افتراضيًّا `cpt_gate`) هو كوكي الطرف الأول الذي يضبطه وكيلك من التصريح. أعِد تسميته إن كان تطبيقك يستخدم هذا الاسم أصلًا، أو إن كنت تشغّل عدّة تطبيقات مغلقة على نطاق واحد وتريد تمريرها كلًّا على حدة.

<Callout type="warn">
**إعادة التسمية من اسم مخصّص إلى اسم مخصّص آخر تُوقِف موقعك المغلق ببوّابة حتى تنسخ مقتطف الوكيل العكسي من صفحة بوّابة الوكيل الخاصّة بمفتاح موقعك من جديد وتعيد تحميل وكيلك.** تبحث البوّابة عن الاسم الجديد بينما لا يزال وكيلك يكتب القديم، فيُرسَل الزائر إلى التحقّق، ويجتازه، ثم يُعاد إليه فورًا، في حلقة لا تنتهي إلا عند حدّ المعدّل. أمّا الانتقال من `cpt_gate` الافتراضي فآمن: غيّره أولًا وصِل الإعداد بعده، لأن البوّابة تظلّ تعرف الاسم الافتراضي.
</Callout>

**الحقل المُرسَل بـ POST إلى ردّ ندائك هو `cpt_gate` دائمًا**، مهما سمّيت الكوكي. فقراءة الجسم في ردّ ندائك لا تتغيّر أبدًا؛ ولا يتغيّر إلا الاسم الذي يكتبه في `Set-Cookie`. وردّ البوّابة يتضمّن حقل `cookie_name` يخبر ردّ ندائك أي اسم يستخدم.

**مسار ردّ النداء** (افتراضيًّا `/__cpt/callback`) هو المسار على أصلك أنت الذي يستقبل التصريح ويضبط الكوكي. انقله إن كان موجّه تطبيقك يحتلّ هذا المسار سلفًا. ويجب أن يكون مسارًا بسيطًا على أصلك: بلا بروتوكول، ولا مضيف، ولا سلسلة استعلام، ولا جزء.

## اقصر البوّابة على بعض المسارات

**طبّق البوّابة على هذه المسارات فقط** و**لا تطبّق البوّابة على هذه المسارات أبدًا** يقبلان نمطًا في كل سطر ويشكّلان إعداد الوكيل العكسي المولَّد. اتركهما فارغين فيُغلَق كل مسار.

وهما إرشاديّان: يغيّران المقتطف الذي تنسخه، ومن يفرضهما هو وكيلك. واترك دائمًا الطلب الفرعي للمُخوِّل ومسار ردّ ندائك بلا بوّابة، وهو ما يفعله الإعداد المولَّد عنك أصلًا.

بوّابة تسجيل دخول نموذجية:

```
طبّق البوّابة على هذه المسارات فقط:
/
/api/firstfactor

لا تطبّق البوّابة على هذه المسارات أبدًا:
/api/verify
/healthz
```

## انظر أيضًا

- [أعدّ بوّابة صفحة الوكيل](/docs/proxy-page-gate/set-up): شرح nginx.
- [وصفات الوكيل العكسي](/docs/proxy-page-gate/reverse-proxy-recipes): عقد ردّ النداء والوكلاء الآخرون.
- [نظرة عامة](/docs/proxy-page-gate/overview): الفكرة وكوكي السماح.
