Skip to main content
ستتناول هذه المقالة توضيح واجهة برمجة تطبيقات التعرف على الصور Recaptcha2، والتي يمكن من خلالها التعرف على المحتوى المدخل من قبل المستخدم وصورة كود Recaptcha2، وأخيرًا إرجاع إحداثيات الصورة الصغيرة التي يجب النقر عليها لإكمال التحقق.

عملية التقديم

لاستخدام واجهة برمجة تطبيقات التعرف على الصور Recaptcha2، يجب أولاً الذهاب إلى وحدة التحكم في Ace Data Cloud للحصول على رمز API الخاص بك، للاحتفاظ به كنسخة احتياطية. إذا لم تكن قد قمت بتسجيل الدخول أو التسجيل بعد، فسيتم تحويلك تلقائيًا إلى صفحة تسجيل الدخول لدعوتك للتسجيل وتسجيل الدخول، وبعد الانتهاء سيتم إرجاعك تلقائيًا إلى الصفحة الحالية. يمكن استخدام رمز API واحد لاستدعاء جميع خدمات المنصة، دون الحاجة لتقديم طلب منفصل لكل خدمة. عند التقديم لأول مرة، ستحصل على رصيد مجاني لتجربته مجانًا؛ وعند نفاد الرصيد، يمكنك إعادة شحن الرصيد العام في وحدة التحكم.
📘 الوثائق الكاملة: واجهة برمجة تطبيقات التعرف على الصور Recaptcha2 →

الاستخدام الأساسي

أولاً، دعنا نفهم طريقة الاستخدام الأساسية، نحتاج إلى التقاط صورة كود Recaptcha2 من الموقع، هنا مثال على عنوان URL للموقع: https://www.google.com/recaptcha/api2/demo، الصفحة المحددة كما هو موضح في الصورة أدناه:

نحتاج إلى النقر على مربع الاختيار الخاص بكود التحقق حتى تظهر صورة كود Recaptcha، في الصورة أعلاه، تشير السهم الأصفر إلى جزء من النص، وهذا النص هو قيمة question المذكورة أدناه. أولاً، نحتاج إلى تمرير حقل image، وهو صورة كود Recaptcha2 المحددة، وهي الصورة المشار إليها بالسهم الأحمر في الصورة أعلاه، ويجب أيضًا تغيير حجم الصورة إلى الحجم القياسي (100x100، 300x300، 450x450)، حتى تتمكن الخدمة من تحديد نوع الصورة، يجب عليك ضغط الصورة بنفسك، توصي هذه المقالة بموقع ضغط الصور حيث يمكنك ضغط الصورة من حيث الأبعاد والحجم، والنتيجة بعد الضغط كما هو موضح في الصورة: كما نحتاج إلى إدخال معلمة المحتوى المرتبطة بصورة كود التحقق question، نقدم فقط الجدول أدناه كمراجع:

جدول المحتويات باللغة الصينية

جدول المحتويات باللغة الإنجليزية

من النص أعلاه، يمكننا تعيين المعلمة question إلى /m/01pns0 الخاصة بمطفأة الحريق، والمحتوى المحدد كما يلي:

يمكننا أن نرى هنا أننا قمنا بتعيين رؤوس الطلب، بما في ذلك:
  • accept: نوع الاستجابة التي ترغب في تلقيها، هنا يتم ملؤها بـ application/json، أي بتنسيق JSON.
  • authorization: مفتاح استدعاء API، يمكن اختياره مباشرة بعد التقديم.
كما تم تعيين جسم الطلب، بما في ذلك:
  • image: صورة كود التحقق المشفرة بتنسيق Base64.
  • question: معرف السؤال، يرجى الرجوع إلى الجدول، يبدأ بـ /m/.
بعد الاختيار، يمكننا أن نرى أن الكود المقابل قد تم إنشاؤه على الجانب الأيمن، كما هو موضح في الصورة:

انقر على زر “Try” لإجراء الاختبار، كما هو موضح في الصورة أعلاه، وهنا حصلنا على النتيجة التالية:
تتضمن النتيجة عدة حقول، كما هو موضح أدناه:
  • solution، نتيجة التحقق من معالجة صورة كود Recaptcha2.
    • size، حجم صورة كود Recaptcha2.
    • label، المحتوى الذي تم التعرف عليه في صورة كود Recaptcha2.
    • confidences، مستوى الثقة في منطقة التعرف على صورة كود Recaptcha2، حيث تبدأ المناطق من 0.
    • objects، المناطق التي تلبي محتوى التعرف على صورة كود Recaptcha2، حيث تبدأ المناطق من 0.
    • type، نوع مهمة صورة كود Recaptcha2، إذا كانت هناك مناطق متعددة، تكون multi.
  • started_at، finished_at: وقت بدء معالجة الطلب وإنتاج النتيجة، طابع زمني Unix (ثوانٍ، عائم).
  • elapsed: إجمالي الوقت المستغرق في المعالجة (ثوانٍ).
يمكننا أن نرى أننا حصلنا على نتيجة التحقق من معالجة صورة كود Recaptcha2، أولاً نقوم بتقسيم صورة كود التحقق إلى مناطق، كما هو موضح في الصورة أدناه:

يمكننا أن نرى أن المناطق تبدأ من 0، ومن النتيجة في objects حصلنا على 2، 5، 7، نحتاج فقط إلى محاكاة النقر على هذه المناطق الثلاثة في كود التحقق للمرور بالتحقق. بالإضافة إلى ذلك، إذا كنت ترغب في إنشاء كود التكامل المقابل، يمكنك نسخه مباشرة، على سبيل المثال، كود CURL كما يلي:
كود الربط بلغة بايثون كما يلي:

الوضع غير المتزامن (async)

بشكل افتراضي، تكون واجهة برمجة التطبيقات متزامنة وتنتظر: ستنتظر الطلب حتى يتم معالجة نتيجة التعرف. إذا كنت تقوم بتدوير عدة حلّات (multi-solver rotation) وترغب في “تقديم المهمة والحصول على task_id على الفور، ثم جدولة حلّات أخرى، والعودة لاحقًا لقراءة النتائج”، يمكنك تمرير async: true في جسم الطلب. بعد تمرير async: true، ستعيد الواجهة على الفور task_id، دون الانتظار:
إذا كنت ترغب في التحقق من التقدم، يمكنك استخدام task_id للاستعلام عن POST /captcha/tasks (يوصى بذلك كل 3~5 ثوان). هذه الواجهة لن تحفز أو تدفع معالجة المهمة؛ حتى لو لم يتم الاستعلام، أو انقطع الاتصال، أو خرجت من العميل، سيستمر الخادم في المعالجة:
أثناء المعالجة، ستعيد status: processing:
عند الانتهاء من المعالجة، ستعيد status: ready ونتيجة التعرف solution (هيكل الحقول متطابق تمامًا مع الوضع المتزامن):
شرح الفوترة: في الوضع غير المتزامن، لا يتم احتساب رسوم لإنشاء المهمة وقراءة حالة “قيد المعالجة”; يتم احتساب الرسوم مرة واحدة عند قراءة العميل للنتيجة الناجحة لأول مرة (متوافقة مع السلوك الحالي وأسعار الوضع المتزامن). سيقوم الخادم بدفع المهمة بشكل مستقل، لكنه لن يخصم الرسوم مسبقًا لمجرد أن الخلفية قد أكملت المهمة. إذا لم تنجح المهمة خلال 120 ثانية، ستنتهي إلى HTTP 504 timeout، دون احتساب رسوم. /captcha/tasks لا تتحمل مسؤولية دفع المهمة.

معالجة الأخطاء

عند استدعاء واجهة برمجة التطبيقات، إذا واجهت خطأ، ستعيد الواجهة رمز الخطأ والمعلومات ذات الصلة. على سبيل المثال:
  • 400 token_mismatched: طلب غير صحيح، ربما بسبب معلمات مفقودة أو غير صالحة.
  • 400 api_not_implemented: طلب غير صحيح، ربما بسبب معلمات مفقودة أو غير صالحة.
  • 401 invalid_token: غير مصرح به، رمز تفويض غير صالح أو مفقود.
  • 429 too_many_requests: عدد كبير جدًا من الطلبات، لقد تجاوزت الحد الأقصى لمعدل الطلبات.
  • 500 api_error: خطأ داخلي في الخادم، حدث خطأ ما على الخادم.

مثال على استجابة الخطأ

الخاتمة

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