استدعاء API لحل CAPTCHA من n8n
استخدم عقدة HTTP Request في n8n لإنشاء المهمة، ثم تفرّع حسب حالتها. إذا كانت لا تزال قيد الانتظار أو الحل، فانتظر واسترجع المهمة باستخدام المعرّف نفسه، ولا ترسل طلب POST آخر.
في هذه الصفحة
إعداد الموقع وبيانات الاعتماد
- 1.
تفعيل ملف تعريف الموقع
أعدّ اسم المضيف المستهدف في لوحة تحكم solvethree، وتأكّد من أن ملفه التعريفي نشط لمساحة عملك. إرسال اسم مضيف وإجراء في مهمة لا ينشئ الملف التعريفي.
- 2.
إنشاء بيانات اعتماد لمصادقة الترويسة في n8n
اضبطها لإرسال ترويسة
AuthorizationبقيمةBearerمتبوعة بمفتاح API لمساحة عملك. خزّن المفتاح في بيانات الاعتماد، وليس في JSON الخاص بالمهمة.
ضبط طلب الإنشاء
سمِّ عقدة HTTP Request باسم Create task. ستستخدم عقدة الاستعلام المتكرر هذا الاسم لاستعادة معرّف المهمة الأصلي.
| الحقل | الإعداد |
|---|---|
| الطريقة | POST |
| عنوان URL | https://api.solvethree.com/v1/tasks |
| المصادقة | نوع بيانات الاعتماد العام |
| نوع المصادقة العام | مصادقة الترويسة؛ اختر بيانات الاعتماد التي أنشأتها |
| إرسال معاملات الاستعلام | فعّل الخيار؛ أضف waitMs بالقيمة 15000 |
| إرسال متن الطلب | فعّل الخيار؛ اختر JSON واستخدم المتن أدناه |
{
"site": "accounts.example.com",
"action": "login",
"proxy": "http://user:[email protected]:8080",
"requestId": "example_login_001"
}استبدل site وaction وproxy باسم المضيف والإجراء والوكيل الخاص بطلبك. أرسل واحدًا فقط من proxy أو proxyCandidates؛ يستخدم هذا المثال وكيلاً واحدًا. لا تضف type أو url. النوع الافتراضي لـ reCAPTCHA هو Enterprise v3.
استبدل قيمة requestId في المثال بقيمة فريدة لكل مهمة منطقية جديدة. احتفظ بالقيمة نفسها إذا احتجت إلى استرداد هذه المهمة بعد انتهاء المهلة. يقبل هذا الحقل 1–64 محرفًا من حروف ASCII أو الأرقام أو الشرطات السفلية أو الشرطات.
يوضع waitMs في استعلام عنوان URL، وليس في متن JSON. اضبط مهلة طلب HTTP لتتجاوز فترة الانتظار المطلوبة البالغة 15 ثانية، لاستيعاب التأخير الإضافي للشبكة؛ تُعدّ 30 ثانية إعدادًا مبدئيًا مناسبًا، وليست ضمانًا لمدة الحل. توفّر بيانات اعتماد مصادقة الترويسة المصادقة اللازمة، لذا لا حاجة إلى تكرارها ضمن إرسال الترويسات.
التفرّع حسب الحالة، لا حسب نجاح HTTP
عالِج استجابات HTTP غير الناجحة قبل فحص حمولة المهمة. عند نجاح الاستجابة، صِل عقدة IF أو Switch وافحص {{ $json.status }}.
| الحالة | الإجراء التالي |
|---|---|
| ready | اخرج من حلقة الاستعلام المتكرر واستخدم الحل. |
| فاشلة | أوقف الاستعلام المتكرر. سجّل errorCode وerror للتشخيص. |
| قيد الانتظار أو جارٍ الحل | تحقّق من الموعد النهائي للاستعلام المتكرر، ثم انتظر واستخدم GET لاسترجاع المهمة الحالية. |
عندما تكون مهمة reCAPTCHA جاهزة، أرسل الرمز المُعاد باستخدام الهوية المُعادة في userAgent وsecChUa والوكيل الذي نجح. تعني جاهزية المهمة أنه تم توليد حل؛ ولا تثبت أن الموقع قبِل الطلب اللاحق.
تُردّ رسوم محاولات الحل الفاشلة. شخّص الخطأ المُبلّغ عنه بدلاً من إعادة المحاولة بالمدخلات نفسها أو افتراض أن رصيد مساحة العمل غير كافٍ.
انتظر، ثم استخدم GET مع المعرّف الأصلي
- 1.
حفظ موعد نهائي ثابت
قبل تشغيل عقدة إنشاء المهمة، خزّن في سير العمل موعدًا نهائيًا للاستعلام المتكرر، مثلاً بعد دقيقتين من بدء الإنشاء. هذه سياسة إيقاف لسير عملك، وليست حدًا تفرضه واجهة API الخاصة بـ solvethree. احتفظ بالموعد النهائي خارج استجابة HTTP حتى لا تستبدله الاستجابات اللاحقة.
- 2.
التحقّق قبل كل دورة استعلام
في حالة الانتظار أو الحل، استخدم عقدة IF لمقارنة الوقت الحالي بالموعد النهائي المحفوظ. إذا انقضى، فأنه الحلقة واحتفظ بمعرّف المهمة. وإلا، فاستخدم عقدة Wait للتوقف لمدة ثانيتين، ثم تحقّق من الموعد النهائي مجددًا قبل طلب GET.
- 3.
استرجاع المهمة الحالية
اضبط عقدة HTTP Request ثانية بالإعدادات أدناه. أعد تمرير استجابتها عبر التفرّع نفسه حسب الحالة. لا تُعِد توجيه فرع الاستعلام المتكرر إلى عقدة إنشاء المهمة مطلقًا.
| الحقل | الإعداد |
|---|---|
| الطريقة | GET |
| عنوان URL | https://api.solvethree.com/v1/tasks/{{ $('Create task').item.json.id }} |
| المصادقة | نوع بيانات الاعتماد العام |
| نوع المصادقة العام | مصادقة الترويسة؛ اختر بيانات الاعتماد نفسها |
| إرسال معاملات الاستعلام | فعّل الخيار؛ أضف waitMs بالقيمة 15000 |
| إرسال متن الطلب | تعطيل |
تعبير معرّف المهمة هو {{ $('Create task').item.json.id }}. يقرأ id من عقدة الإنشاء المُسمّاة حتى عندما يحتوي أحدث عنصر على استجابة استعلام متكرر أو بيانات أخرى لسير العمل. احرص على تطابق اسم العقدة في التعبير مع اسمها في سير عملك.
يقبل GET فترة انتظار تصل إلى 15 ثانية. امنح طلب HTTP هذا هامش المهلة نفسه الممنوح لطلب الإنشاء. يمنع الموعد النهائي بدء محاولات استعلام جديدة؛ أما الطلب الجاري فقد يكتمل بعده.
طلب GET المكافئ خارج n8n هو:
curl --fail-with-body --max-time 30 \
"https://api.solvethree.com/v1/tasks/$TASK_ID?waitMs=15000" \
-H "Authorization: Bearer $SOLVETHREE_API_KEY"استرداد طلب POST انتهت مهلته دون إنشاء مهمة أخرى
انتهاء مهلة الاتصال لا يثبت فشل الإنشاء. إذا تلقيت معرّفًا، فاسترجع تلك المهمة. وإذا لم تتلقّه، فكرّر طلب POST بمدخلات المهمة نفسها وبقيمة requestId نفسها لاسترداد المهمة الحالية. تؤدي إعادة استخدام ذلك المعرّف مع مدخلات مهمة مختلفة إلى تعارض.
كذلك، فإن بلوغ الموعد النهائي للاستعلام المتكرر هو شرط إيقاف محلي، وليس حالة فشل للمهمة. احتفظ بالمعرّف الأصلي ليتمكّن تنفيذ لاحق من استرجاعها بدلاً من دفع رسوم حل آخر.
المصادر ومرجع API
شغّل مهمتك الأولى.
ابدأ برصيد قدره $5 في مساحة العمل.