يتيح Retool للفرق إنشاء أدوات داخلية بسرعة. عندما تحتاج هذه الأدوات إلى التفاعل مع الخدمات الخارجية المحمية بـ CAPTCHA - إرسال النماذج، أو سحب البيانات من البوابات، أو أتمتة سير عمل الجهات الخارجية -CaptchaAIيعالج الحل من خلال استعلامات REST API الخاصة بـ Retool.
يوضح هذا الدليل كيفية إعداد CaptchaAI كمورد REST API في Retool، وإنشاء استعلامات لإرسال حلول CAPTCHA واستردادها، وتوصيلها بواجهة مستخدم تطبيقك.
مثال عملي واقعي
يستخدم فريق العمليات الخاص بك تطبيق Retool لإرسال البيانات إلى بوابة حكومية تتطلب reCAPTCHA v2. بدلاً من حل اختبارات CAPTCHA يدويًا، فإن تطبيق Retool:
- يأخذ مفتاح الموقع وعنوان URL للصفحة كمدخل
- يرسل اختبار CAPTCHA إلى CaptchaAI
- استطلاعات الرأي للنتيجة
- يعرض الرمز المميز الذي تم حله لاستخدامه في إرسال النموذج
الخطوة 1: إنشاء CaptchaAI كمورد REST API
في "إعادة الأداة"، انتقل إلى الموارد → إنشاء جديد → REST API:
| الميدان | القيمة |
|---|---|
| الاسم | CaptchaAI |
| عنوان URL الأساسي | https://ocr.captchaai.com |
| المصادقة | لا شيء (تم إرسال مفتاح واجهة برمجة التطبيقات كمعلمة استعلام) |
احفظ المورد. سوف تشير إليه في الاستعلامات.
الخطوة 2: إنشاء استعلام الإرسال
قم بإنشاء استعلام جديد يسمى submitCaptcha:
| الإعداد | القيمة |
|---|---|
| الموارد | CaptchaAI |
| نوع الإجراء | احصل على |
| مسار URL | /in.php |
معلمات الاستعلام:
| مفتاح | القيمة |
|---|---|
key |
{{secretsStore.CAPTCHAAI_API_KEY}} |
method |
userrecaptcha |
googlekey |
{{sitekeyInput.value}} |
pageurl |
{{pageurlInput.value}} |
json |
1 |
قم بتخزين مفتاح API الخاص بك في متجر أسرار Retool (الإعدادات - الأسرار) لتجنب تشفيره.
المحول (اختياري):
// Parse the response
const data = {{ submitCaptcha.data }};
if (data.status === 1) {
return { taskId: data.request, status: 'submitted' };
}
return { error: data.request, status: 'failed' };
الخطوة 3: إنشاء استعلام الاستطلاع
قم بإنشاء استعلام يسمى pollResult:
| الإعداد | القيمة |
|---|---|
| الموارد | CaptchaAI |
| نوع الإجراء | احصل على |
| مسار URL | /res.php |
معلمات الاستعلام:
| مفتاح | القيمة |
|---|---|
key |
{{secretsStore.CAPTCHAAI_API_KEY}} |
action |
get |
id |
{{submitCaptcha.data.request}} |
json |
1 |
** المحول: **
const data = {{ pollResult.data }};
if (data.status === 1) {
return { token: data.request, status: 'solved' };
}
if (data.request === 'CAPCHA_NOT_READY') {
return { status: 'pending' };
}
return { error: data.request, status: 'error' };
الخطوة 4: إنشاء حلقة الاقتراع باستخدام JavaScript
قم بإنشاء استعلام JavaScript يسمى solveCaptcha الذي ينظم دورة الإرسال والاستقصاء:
// solveCaptcha — JavaScript Query
async function solve() {
// Submit the CAPTCHA task
await submitCaptcha.trigger();
const submitResult = submitCaptcha.data;
if (submitResult.status !== 1) {
return { error: submitResult.request, status: 'submit_failed' };
}
const taskId = submitResult.request;
// Wait 15 seconds before first poll
await new Promise(r => setTimeout(r, 15000));
// Poll up to 20 times (100 seconds max)
for (let i = 0; i < 20; i++) {
await pollResult.trigger({
additionalScope: { taskId: taskId }
});
const result = pollResult.data;
if (result.status === 1) {
return { token: result.request, status: 'solved' };
}
if (result.request !== 'CAPCHA_NOT_READY') {
return { error: result.request, status: 'error' };
}
// Wait 5 seconds before next poll
await new Promise(r => setTimeout(r, 5000));
}
return { error: 'Polling timeout', status: 'timeout' };
}
return solve();
الخطوة 5: بناء واجهة المستخدم
قم بإنشاء تخطيط تطبيق Retool بسيط:
قسم الإدخال
- إدخال النص (
sitekeyInput): التصنيف "مفتاح موقع reCAPTCHA" - إدخال النص (
pageurlInput): قم بتسمية "عنوان URL للصفحة" - زر (
solveButton): قم بتسمية "حل اختبار CAPTCHA"، عند النقر فوق †'solveCaptcha.trigger()
قسم الحالة
- مكون النص:
{{ solveCaptcha.isFetching ? "Solving..." : "" }} - مؤشر التحميل: يكون مرئيًا عند
{{ solveCaptcha.isFetching }}
قسم النتائج
- منطقة النص (
tokenOutput): - القيمة:
{{ solveCaptcha.data?.token || '' }} - العلامة: "رمز محلول"
- للقراءة فقط
- زر النسخ: نسخ الرمز المميز إلى الحافظة
- شارة الحالة: تظهر النجاح/error بناءً على
{{ solveCaptcha.data?.status }}
الخطوة 6: استخدم الرمز المميز في الاستعلامات النهائية
بمجرد الحل، استخدم الرمز المميز في استعلام إعادة أدوات آخر يرسل النموذج:
قم بإنشاء استعلام يسمى submitForm:
| الإعداد | القيمة |
|---|---|
| الموارد | واجهة برمجة التطبيقات المستهدفة الخاصة بك |
| نوع الإجراء | بريد |
| الجسم | بيانات النموذج بما في ذلك g-recaptcha-response: {{solveCaptcha.data.token}} |
قم بتوصيل هذا إلى زر "إرسال النموذج" الذي يتم تمكينه فقط عند {{ solveCaptcha.data?.status === 'solved' }}.
استكشاف الأخطاء وإصلاحها
| المشكلة | السبب | الإجراء |
|---|---|---|
| يُنشأ الرمز المميز لكن الجهة المستهدفة ترفضه | مفتاح الموقع أو الصفحة أو سياق الجلسة لا يتطابق | التقط المعلمات من جديد وأعد استخدام الرمز داخل جلسة HTTP أو المتصفح نفسها |
| تنتهي عملية الاستطلاع بمهلة | الفاصل الزمني أو وقت الانتظار أو معالجة الأخطاء صارمة أكثر من اللازم | استطلع كل 5 إلى 10 ثوانٍ وافصل بين انتهاء المهلة والأخطاء الفعلية وسجّل السبب |
| ينجح المثال محليًا لكنه يفشل داخل سير العمل | رد النداء أو حقل النموذج أو حقن الرمز مفقود في السلسلة الفعلية | تحقق من المسار الكامل بين أداة الحل والطلب النهائي إلى الموقع المستهدف |
الخطوات التالية
- البدء السريع مع CaptchaAI: حلّ أول كابتشا في 5 دقائق
- كيفية حلّ reCAPTCHA v2 عبر الـ API: دليل خطوة بخطوة
- كيفية حل Cloudflare Turnstile باستخدام واجهة API
- كيفية حل GeeTest v3 باستخدام API