يمكنك حلّ اختبار reCAPTCHA v2 داخل Make (المعروف سابقًا باسم Integromat) دون كتابة سطر برمجي واحد: أرسل المهمة إلى CaptchaAI من وحدة HTTP، انتظر قليلًا، استطلع النتيجة دوريًا، ثم استخدم الرمز في الخطوة التالية. يبني هذا الدليل سيناريو Make كاملًا ينفّذ هذه الدورة من مشغّل الـ Webhook حتى إرجاع الرمز المحلول؛ فتتكفّل واجهة Make المرئية بالربط بين الوحدات بينما يتولّى CaptchaAI الحل نفسه، فينتج مسار أتمتة يصونه أي عضو في فريق النمو أو مشغّلي البيانات دون خبرة برمجية عميقة.
ما تحتاجه قبل البدء
- حساب CaptchaAI مع مفتاح الـ API ورصيد كافٍ لتشغيل الطلبات
- حساب Make بصلاحية إنشاء سيناريوهات تضمّ وحدتي HTTP وWebhook
- مفتاح موقع reCAPTCHA v2 وعنوان الصفحة المحمية، أي الحقلان
sitekeyوpageurl
سيناريو نموذجي: نموذج يحرسه reCAPTCHA v2
تخيّل فريق عمليات في متجر إلكتروني بالرياض أو القاهرة يريد أتمتة إدخال بيانات العملاء المحتملين إلى بوابة داخلية، لكن نموذج الإرسال محميّ بـ reCAPTCHA v2. بدلًا من التوقّف يدويًا عند كل إدخال، يبني الفريق سيناريو Make ينفّذ الدورة الآتية:
- يستقبل مشغّل الـ Webhook طلبًا يحمل عنوان الصفحة ومفتاح موقع reCAPTCHA
- يُرسل الاختبار إلى CaptchaAI ليحلّه
- يستطلع النتيجة دوريًا حتى يجهز الرمز
- يعيد الرمز المحلول عبر الـ Webhook أو يمرّره إلى الوحدة التالية
ينطبق النمط ذاته على أتمتة النماذج وإدخال البيانات وأي مسار تملك صلاحية تشغيله ويقف فيه CAPTCHA أمام الأتمتة. وفوترة CaptchaAI قائمة على عدد الـ Threads المتزامنة مع حلّ غير محدود لكل Thread، فتبقى التكلفة قابلة للتنبؤ، والأسعار بالدولار الأمريكي.
الخطوة 1: بناء سيناريو الحل في Make
أنشئ سيناريو جديدًا في Make يتكوّن من الوحدات الخمس التالية بالترتيب نفسه.
الوحدة 1: مشغّل Webhook مخصّص
أنشئ Webhook مخصّصًا يستقبل طلبات الحل ببنية بيانات كالتالية:
{
"sitekey": "6Le-wvkSVVABCPBMRTvw0Q4Muexq1bi0DJwx_mJ-",
"pageurl": "https://example.com/form",
"captcha_type": "recaptcha_v2"
}
ثم أعدّه داخل Make بالخطوات التالية:
- أضف وحدة Webhooks > Custom webhook
- انقر Add لإنشاء Webhook جديد
- انسخ عنوان URL الخاص بالـ Webhook
- حدّد بنية البيانات بالحقول
sitekeyوpageurlوcaptcha_type
الوحدة 2: طلب HTTP لإرسال المهمة إلى CaptchaAI
أضف وحدة HTTP > Make a request بالإعداد التالي، مع تفعيل تحليل الاستجابة على JSON:
- عنوان URL:
https://ocr.captchaai.com/in.php - الطريقة: GET
- سلسلة الاستعلام بهذه المعاملات:
key— مفتاح CaptchaAI API الخاص بكmethod—userrecaptchagooglekey—{{1.sitekey}}الممرّر من الـ Webhookpageurl—{{1.pageurl}}الممرّر من الـ Webhookjson—1
بعد تشغيل هذه الوحدة، تحتوي الاستجابة على معرّف المهمة:
{
"status": 1,
"request": "TASK_ID_12345"
}
الوحدة 3: وحدة Sleep للانتظار
أضف وحدة Tools > Sleep واضبطها على 15 ثانية؛ تمنح هذه المهلة CaptchaAI وقتًا كافيًا لبدء الحل قبل انطلاق حلقة الاستطلاع الدوري.
الوحدة 4: طلب HTTP لاستطلاع النتيجة
أضف وحدة HTTP > Make a request ثانية، وفعّل تحليل الاستجابة على JSON كذلك:
- عنوان URL:
https://ocr.captchaai.com/res.php - الطريقة: GET
- سلسلة الاستعلام بهذه المعاملات:
key— مفتاح CaptchaAI API الخاص بكaction—getid—{{2.data.request}}أي معرّف المهمة من الوحدة 2json—1
الوحدة 5: Router للتحقق من الحالة
أضف Router بعد وحدة الاستطلاع، وقسّمه إلى مسارين حسب حقل الاستجابة:
- مسار النجاح حين يساوي
{{4.data.status}}القيمة1: تابع إلى الإجراء التالي، سواء استجابة الـ Webhook أو الإدراج في قاعدة البيانات - مسار الانتظار حين يساوي
{{4.data.request}}القيمةCAPCHA_NOT_READY: أعد التوصيل إلى وحدة Sleep لتكوين حلقة استطلاع دوري
الخطوة 2: بناء حلقة الاستطلاع الدوري
يدعم Make الحلقات عبر وحدة Repeater، أو بإعادة توصيل الوحدات إلى مراحل سابقة:
- أضف وحدة Repeater مضبوطة على 10 تكرارات، وهي الحد الأقصى لمحاولات الاستطلاع
- ضع داخل المكرّر تسلسل Sleep ثم Poll ثم Router
- يكسر الـ Router الحلقة عند
status = 1
وبدلًا من ذلك، اضبط وحدة Flow Control > Repeater على القيم التالية:
- عدد التكرارات: 10
- القيمة الأولية:
{{2.data.request}}أي معرّف المهمة
في كل تكرار ينتظر السيناريو 5 ثوانٍ، ثم يستطلع CaptchaAI ويتحقق من جاهزية النتيجة.
الخطوة 3: توظيف الرمز بعد الحل
بمجرد حل الاختبار يصبح الرمز متاحًا في {{4.data.request}}، فتستخدمه في الوحدات اللاحقة بإحدى ثلاث طرق.
الخيار الأول: حقن الرمز في النموذج المستهدف
أضف وحدة HTTP > Make a request ترسل الرمز إلى نقطة نهاية النموذج في الموقع المستهدف:
- عنوان URL: عنوان إجراء النموذج المستهدف
- الطريقة: POST
- نص الطلب: بيانات النموذج بما فيها
g-recaptcha-response: {{4.data.request}}
الخيار الثاني: التسجيل في قاعدة بيانات
أضف وحدة Google Sheets أو Airtable أو Database لتسجيل الحل بغرض التتبّع والمراجعة لاحقًا.
الخيار الثالث: الإرجاع عبر استجابة Webhook
أضف وحدة Webhooks > Webhook response تعيد الرمز إلى الجهة المُستدعية:
{
"token": "{{4.data.request}}",
"status": "solved"
}
معالجة الأخطاء بثبات
اضبط معالجات الأخطاء على وحدات HTTP كي لا يتوقّف السيناريو فجأة:
- أخطاء الوحدة 2 عند فشل الإرسال: افحص
ERROR_ZERO_BALANCEوأعد شحن الرصيد، أوERROR_WRONG_USER_KEYوصحّح مفتاح الـ API - أخطاء الوحدة 4 عند فشل الاستطلاع: افحص
ERROR_CAPTCHA_UNSOLVABLEوراجع مفتاح الموقع وعنوان الصفحة، أو عالج أخطاء الشبكة بإعادة المحاولة - انتهاء المهلة: إذا استنفد المكرّر تكراراته دون حل، وجّه المسار إلى معالج يسجّل الفشل
لإضافة معالج، انقر بزر الفأرة الأيمن على الوحدة واختر Add error handler، ثم حدّد Resume لتخطّي الخطأ ومتابعة السيناريو أو Rollback لإلغائه.
استكشاف الأعطال وحلولها
| المشكلة | السبب المحتمل | الحل |
|---|---|---|
| الـ Webhook لا يعمل | العنوان غير مسجّل أو غير مفعّل | تأكّد من أن عنوان الـ Webhook نشط داخل Make |
ERROR_WRONG_USER_KEY |
صيغة مفتاح الـ API غير صحيحة | تحقق من أن المفتاح مكوّن من 32 خانة دون مسافات زائدة |
| حلقة الاستطلاع لا تنتهي أبدًا | المهلة قصيرة أو معرّف المهمة خاطئ | راجع ربط معرّف المهمة، وزد مدة Sleep إلى 10 ثوانٍ |
| انتهاء مهلة السيناريو | حدّ زمن التنفيذ في Make — 5 دقائق على الخطة المجانية | ارفع مستوى الخطة أو قلّل فترة الاستطلاع |
| يُنشأ الرمز لكن الموقع المستهدف يرفضه | مفتاح الموقع أو عنوان الصفحة أو سياق الجلسة غير متطابق | أعد التقاط المعاملات واستخدم الرمز داخل الجلسة نفسها |
المخطط الكامل لسيناريو CaptchaAI في Make
يلخّص المخطط التالي التسلسل الكامل من المشغّل حتى إرجاع الرمز:
[Webhook Trigger]
↓
[HTTP: Submit to CaptchaAI in.php]
↓
[Sleep: 15 seconds]
↓
[Repeater: 10 iterations]
↓ (each iteration)
[Sleep: 5 seconds]
[HTTP: Poll CaptchaAI res.php]
[Router]
Route 1 (solved) → [Use Token] → [Webhook Response]
Route 2 (not ready) → continue loop
Route 3 (error) → [Error Handler]
الأسئلة الشائعة
فيما يلي أكثر ما يسأل عنه الفريق عند بناء هذا التكامل لأول مرة:
هل أحتاج إلى خبرة برمجية لإعداد هذا التكامل؟
لا. يعتمد المسار بالكامل على وحدات Make الجاهزة، ويكفي لصق عناوين URL ومعاملات سلسلة الاستعلام كما هي أعلاه مع معرفة أساسية بمفاتيح reCAPTCHA. والوحدات المستخدمة هي:
- Webhook لاستقبال الطلب وإرجاع النتيجة
- HTTP لإرسال المهمة واستطلاعها
- Sleep وRepeater وRouter لإدارة الانتظار والتكرار والتفريع
كم مرة يجب أن يستطلع السيناريو النتيجة قبل اعتبارها فاشلة؟
النمط الموصى به: انتظر 15 ثانية بعد الإرسال، ثم استطلع كل 5 ثوانٍ حتى 10 مرات كحد أقصى. وإذا لم يجهز الرمز بعد استنفاد التكرارات، وجّه المسار إلى معالج أخطاء بدل ترك السيناريو معلّقًا.
هل ينطبق النمط نفسه على Cloudflare Turnstile؟
نعم. غيّر قيمة method إلى turnstile، واستخدم sitekey بدل googlekey في الإرسال، وتبقى بقية الدورة كما هي.
ماذا أفعل إذا رفض الموقع المستهدف الرمز بعد حله؟
تأكّد من أن مفتاح الموقع وعنوان الصفحة في الإرسال يطابقان الصفحة الحقيقية، وأنك تحقن الرمز في الحقل g-recaptcha-response داخل الجلسة نفسها ودون تأخير يتجاوز مدة صلاحيته.
الخطوات التالية
- ابدأ سريعًا مع CaptchaAI وحلّ أول اختبار في 5 دقائق
- دليل حل reCAPTCHA v2 عبر الـ API خطوة بخطوة
- كيفية حل Cloudflare Turnstile عبر الـ API
- كيفية حل GeeTest v3 عبر الـ API