طلب رمز reCAPTCHA Enterprise باستخدام cURL

بقلم solvethreeمدة القراءة: 3 دقيقة

أنشئ مهمة باستخدام اسم مضيف موقعك والإجراء والوكيل. إذا أعادت pending أو solving، فاستعلم دوريًا باستخدام معرّف المهمة المُعاد. اقرأ الرمز من solution.token فقط عندما تكون الحالة ready.

في هذه الصفحة

تحضير الموقع والمفتاح والوكيل

  • تأكد من توفر cURL وjq في الصدفة لديك.
  • عيّن SOLVETHREE_API_KEY إلى مفتاح API لمساحة عملك. شغّل هذه الأوامر على الخادم؛ ولا تضع المفتاح في كود المتصفح.
  • عيّن SOLVETHREE_PROXY إلى عنوان URL للوكيل الذي تنوي استخدامه للحل وإرسال الرمز.
  • أعدّ ملف تعريف موقع reCAPTCHA نشطًا في لوحة التحكم لمساحة عملك. استبدل accounts.example.com وlogin في المثال باسم المضيف والإجراء الخاصين بك.

إرسال اسم مضيف وإجراء لا ينشئ ملف تعريف موقع. يجب أن يكون ملف التعريف نشطًا بالفعل قبل أن تطلب حلًا.

إنشاء المهمة مع تحديد مدة انتظار صريحة

cURL + jq · إنشاء مهمة واحدة
# Set SOLVETHREE_API_KEY and SOLVETHREE_PROXY in your environment first.
# Replace the hostname and action with your active site profile.
jq -n \
  --arg proxy "$SOLVETHREE_PROXY" \
  --arg requestId "login-$(date +%s)-$$" \
  '{site:"accounts.example.com", action:"login", proxy:$proxy, requestId:$requestId}' \
| curl --fail-with-body --max-time 30 \
  'https://api.solvethree.com/v1/tasks?waitMs=15000' \
  -H "Authorization: Bearer $SOLVETHREE_API_KEY" \
  -H 'Content-Type: application/json' \
  --data-binary @-

يقدّم متن JSON الحقول site وaction وproxy واحدًا. يلزم تحديد واحد فقط من proxy أو proxyCandidates. لا تضف type أو url؛ فإغفال recaptchaType يختار enterprise-v3.

يطلب معامل الاستعلام waitMs=15000 من طلب الإنشاء الانتظار حتى 15 ثانية. مكانه في عنوان URL، وليس في متن JSON. تبلغ مهلة cURL مدة 30 ثانية، ما يترك وقتًا إضافيًا لتأخير الشبكة بعد مدة الانتظار على الخادم. قد تظل المهمة في حالة غير نهائية عند وصول الاستجابة.

قراءة الاستجابة والاستعلام الدوري عن المهام غير المكتملة

تحقّق من وجود خطأ HTTP قبل تفسير المتن على أنه استجابة مهمة. يستخدم كلا الأمرين --fail-with-body؛ تعامل مع طلب HTTP الفاشل بشكل منفصل عن مهمة حالتها failed.

تأتي استجابة المهمة الجاهزة بهذا الشكل. القيم أدناه عناصر نائبة، وليست رمزًا يمكنك إرساله.

مثال على استجابة جاهزة · بيانات اعتماد بديلة
{
  "id": "example-task",
  "status": "ready",
  "solution": {
    "token": "EXAMPLE_TOKEN",
    "userAgent": "EXAMPLE_USER_AGENT",
    "secChUa": "EXAMPLE_CLIENT_HINTS"
  }
}
ما يجب فعله حسب حالة المهمة المُعادة
ما يجب فعله حسب حالة المهمة المُعادة
الحالةالإجراء التالي
قيد الانتظار أو جارٍ الحلاحتفظ بقيمة id المُعادة واسترجع المهمة نفسها. لا يوجد حل قابل للاستخدام بعد؛ لا تنشئ مهمة بديلة.
readyأوقف الاستعلام الدوري واقرأ solution.token وsolution.userAgent وsolution.secChUa.
فاشلةأوقف الاستعلام الدوري وافحص errorCode وerror. تُسترد تكلفة عمليات الحل الفاشلة. صحّح السبب قبل بدء مهمة أخرى.

إذا كانت الاستجابة غير نهائية، فعيّن TASK_ID في بيئتك إلى قيمة id المُعادة، ثم استرجع المهمة:

واجهة API للمهام · استرجاع مهمة موجودة
curl --fail-with-body --max-time 30 \
  "https://api.solvethree.com/v1/tasks/$TASK_ID?waitMs=15000" \
  -H "Authorization: Bearer $SOLVETHREE_API_KEY"

ينتظر طلب GET هذا حتى 15 ثانية للحصول على نتيجة، مع مهلة HTTP قدرها 30 ثانية. بدون waitMs، يعيد GET الاستجابة دون انتظار. كرّر GET فقط ما دامت الحالة pending أو solving، وضع مهلة نهائية إجمالية في الجهة المستدعية حتى لا تستمر حلقة الاستعلام الدوري إلى أجل غير مسمى.

إذا فشلت المهمة، فاستخدم تفاصيل الخطأ بدلًا من افتراض وجود مشكلة في الرصيد. على سبيل المثال، يستدعي site-unreachable التحقق من إمكانية الوصول إلى الجهة المستهدفة، وليس إعادة إرسال المدخلات نفسها دون تحقّق.

أرسل الرمز

استخدم solution.token في طلب التطبيق المستهدف. يُستخدم id الخاص بالمهمة لاسترجاعها فقط؛ وليس رمز CAPTCHA. يعتمد موضع الرمز على نموذج الجهة المستهدفة أو واجهة API لديها، لذا لا يوجد أمر موحّد لإرسال الرمز إليها.

استخدم solution.userAgent وsolution.secChUa المُعادَين، إلى جانب الوكيل الذي نجح في الحل، عند إرسال الرمز. في مثال الوكيل الواحد أعلاه، استخدم SOLVETHREE_PROXY نفسه. لا تستخدم هوية متصفح أو عنوان URL مستهدفًا لا صلة لهما بالحل.

تعني ready أن solvethree أنشأ حلًا. تحقّق من استجابة التطبيق المستهدف بشكل منفصل لمعرفة ما إذا كان قد قبل طلبك.

أسئلة أخرى

هل هذه هي واجهة siteverify API من Google نفسها؟

لا. تتحقّق siteverify من Google من رمز موجود بالفعل، وتتطلب سر التحقّق الخاص بمالك الموقع. تنشئ واجهة solvethree API حلًا باستخدام مفتاح API لمساحة عملك. لا تضع سر تحقّق Google في طلب المهمة.

شغّل مهمتك الأولى.

ابدأ برصيد قدره $5 في مساحة العمل.

إنشاء مساحة عمل
طلب رمز reCAPTCHA Enterprise باستخدام cURL · solvethree