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

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

لاستخدام واجهة برمجة التطبيقات، يجب أولاً زيارة صفحة واجهة برمجة التطبيقات لتعرف الصور Recaptcha2 للتقدم للحصول على الخدمة المناسبة، بعد الدخول إلى الصفحة، انقر على زر “Acquire”، كما هو موضح في الصورة: إذا لم تكن قد قمت بتسجيل الدخول أو التسجيل بعد، فسيتم تحويلك تلقائيًا إلى صفحة تسجيل الدخول لدعوتك للتسجيل وتسجيل الدخول، وبعد تسجيل الدخول أو التسجيل، سيتم إرجاعك تلقائيًا إلى الصفحة الحالية. عند التقديم لأول مرة، سيكون هناك حد مجاني متاح، يمكنك استخدام واجهة برمجة التطبيقات هذه مجانًا.

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

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

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

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

{
  "/m/0pg52": "出租车",
  "/m/01bjv": "巴士",
  "/m/02yvhj": "校车",
  "/m/04_sv": "摩托车",
  "/m/013xlm": "拖拉机",
  "/m/01jk_4": "烟囱",
  "/m/014xcs": "人行横道",
  "/m/015qff": "红绿灯",
  "/m/0199g": "自行车",
  "/m/015qbp": "停车计价表",
  "/m/0k4j": "汽车",
  "/m/015kr": "桥",
  "/m/019jd": "船",
  "/m/0cdl1": "棕榈树",
  "/m/09d_r": "山",
  "/m/01pns0": "消防栓",
  "/m/01lynh": "楼梯"
}

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

{
  "/m/0pg52": "taxis",
  "/m/01bjv": "bus",
  "/m/02yvhj": "school bus",
  "/m/04_sv": "motorcycles",
  "/m/013xlm": "tractors",
  "/m/01jk_4": "chimneys",
  "/m/014xcs": "crosswalks", // pedestrian crossings 也是一样的
  "/m/015qff": "traffic lights",
  "/m/0199g": "bicycles",
  "/m/015qbp": "parking meters",
  "/m/0k4j": "cars",
  "/m/015kr": "bridges",
  "/m/019jd": "boats",
  "/m/0cdl1": "palm trees",
  "/m/09d_r": "mountains or hills",
  "/m/01pns0": "fire hydrant",
  "/m/01lynh": "stairs"
}
من النص أعلاه، يمكننا تعيين المعلمة question إلى /m/01pns0 الخاصة بمطفأة الحريق، المحتوى المحدد كما هو موضح أدناه:

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

انقر على زر “Try” لإجراء الاختبار، كما هو موضح في الصورة أعلاه، هنا حصلنا على النتيجة التالية:
{
  "solution": {
    "size": 300,
    "label": "/m/01pns0",
    "confidences": [
      0,
      0.0007,
      1,
      0.0003,
      0.0046,
      1,
      0,
      1,
      0
    ],
    "objects": [
      2,
      5,
      7
    ],
    "type": "multi"
  }
}
تتضمن النتيجة عدة حقول، كما هو موضح أدناه:
  • solution: نتيجة التحقق من معالجة صورة كود Recaptcha2.
    • size: حجم صورة كود Recaptcha2.
    • label: المحتوى الذي تم التعرف عليه في صورة كود Recaptcha2.
    • confidences: مستوى الثقة في منطقة التعرف على صورة كود Recaptcha2، حيث تبدأ المناطق من 0.
    • objects: المناطق التي تلبي محتوى التعرف على صورة كود Recaptcha2، تبدأ المناطق من 0.
    • type: نوع مهمة صورة كود Recaptcha2، إذا كانت هناك مناطق متعددة، تكون multi.
يمكننا أن نرى أننا حصلنا على نتيجة التحقق من معالجة صورة كود Recaptcha2، أولاً نقوم بتقسيم صورة كود التحقق إلى مناطق، كما هو موضح في الصورة أدناه:

يمكننا أن نرى أن المناطق تبدأ من 0، ومن النتيجة في objects حصلنا على 2، 5، 7، نحتاج فقط إلى محاكاة النقر على هذه المناطق الثلاثة في كود التحقق للمرور بالتحقق. بالإضافة إلى ذلك، إذا كنت ترغب في إنشاء كود التكامل المقابل، يمكنك نسخه مباشرة، على سبيل المثال، كود CURL كما يلي:
curl -X POST 'https://api.acedata.cloud/captcha/recognition/recaptcha2' \
-H 'accept: application/json' \
-H 'authorization: Bearer {token}' \
-H 'content-type: application/json' \
-d '{
  "question": "/m/01pns0",
  "image": "iVBORw0KGgoAAAANSUhEUgAAASoAAAEsCAIAAAD7AWllAAAAAX..."
}'
كود التكامل بلغة Python كما يلي:
import requests

url = "https://api.acedata.cloud/captcha/recognition/recaptcha2"

headers = {
    "accept": "application/json",
    "authorization": "Bearer {token}",
    "content-type": "application/json"
}

payload = {
    "question": "/m/01pns0",
    "image": "iVBORw0KGgoAAAANSUhEUgAAASoAAAEsCAIAAAD7AWllAAAAAX..."
}

response = requests.post(url, json=payload, headers=headers)
print(response.text)

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

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

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

{
  "success": false,
  "error": {
    "code": "api_error",
    "message": "fetch failed"
  },
  "trace_id": "2cf86e86-22a4-46e1-ac2f-032c0f2a4e89"
}

الخاتمة

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