المرجع

مقارنة نقاط نهاية API: CaptchaAI مقابل المنافسين

إذا كنت تقيّم الانتقال إلى CaptchaAI، فالسؤال العملي الوحيد هو: كم سطراً من تكاملك الحالي سيتغير فعلاً؟ الإجابة تعتمد على المزوّد الذي تتركه. يتبع CaptchaAI بنية 2Captcha نفسها — نقطتا in.php وres.php ومعلمات على شكل نموذج — لذا الانتقال من 2Captcha لا يحتاج سوى تبديل النطاق. أما القادمون من Anti-Captcha أو CapMonster Cloud فيحتاجون إلى تحويل جسم JSON إلى معلمات نموذج وإعادة تسمية بعض الحقول. هذا المرجع يضع الحقول والاستجابات ورموز الأخطاء جنباً إلى جنب، حتى تعرف بالضبط ما الذي يتغير قبل أن تكتب سطراً واحداً.

يمكنك تلخيص حجم العمل بثلاث حالات:

  • قادم من 2Captcha: بدّل النطاق وحدّث المفتاح — التوافق شبه كامل.
  • قادم من Anti-Captcha أو CapMonster: حوّل جسم JSON إلى معلمات نموذج وأعد ربط أسماء الحقول.
  • بناء تكامل جديد: اتبع أسلوب النموذج المسطّح مباشرةً على in.php وres.php.

نقاط النهاية الأساسية لكل مزوّد

المزوّد نقطة نهاية الإرسال نقطة نهاية النتيجة
CaptchaAI https://ocr.captchaai.com/in.php https://ocr.captchaai.com/res.php
2Captcha https://2captcha.com/in.php https://2captcha.com/res.php
Anti-Captcha https://api.anti-captcha.com/createTask https://api.anti-captcha.com/getTaskResult
CapMonster Cloud https://api.capmonster.cloud/createTask https://api.capmonster.cloud/getTaskResult

يستخدم CaptchaAI البنية ذاتها التي يعتمدها 2Captcha: مسار للإرسال ومسار لاستطلاع النتيجة. عملياً يعني هذا أن الترحيل من 2Captcha يقتصر على تبديل اسم النطاق، بينما تفصل عائلة Anti-Captcha وCapMonster مساراتٍ مختلفة لكل عملية.

نمط الـ API والمصادقة

المزوّد نمط الـ API نوع المحتوى المصادقة
CaptchaAI معلمات نموذج/استعلام application/x-www-form-urlencoded معلمة key
2Captcha معلمات نموذج/استعلام application/x-www-form-urlencoded معلمة key
Anti-Captcha جسم JSON application/json clientKey داخل الجسم
CapMonster Cloud جسم JSON application/json clientKey داخل الجسم

الفارق الجوهري بين العائلتين ليس في القدرات بل في شكل الطلب:

  • عائلة CaptchaAI و2Captcha: معلمات نموذج مسطّحة، ومفتاح واحد باسم key للمصادقة.
  • عائلة Anti-Captcha وCapMonster: كائن JSON متداخل، وبيانات الاعتماد في clientKey.

معظم التغييرات التي ستكتبها أثناء الترحيل تنبع من هذا الاختلاف وحده.

reCAPTCHA v2

CaptchaAI و2Captcha — معلمات نموذج إلى in.php:

POST /in.php
  key=API_KEY
  method=userrecaptcha
  googlekey=SITE_KEY
  pageurl=PAGE_URL
  json=1

Anti-Captcha وCapMonster — جسم JSON إلى createTask:

POST /createTask
{
  "clientKey": "API_KEY",
  "task": {
    "type": "RecaptchaV2TaskProxyless",
    "websiteURL": "PAGE_URL",
    "websiteKey": "SITE_KEY"
  }
}

جدول تعيين الحقول

CaptchaAI Anti-Captcha/CapMonster الوصف
key clientKey مفتاح الـ API
method=userrecaptcha type=RecaptchaV2TaskProxyless نوع المهمة
googlekey websiteKey مفتاح موقع reCAPTCHA
pageurl websiteURL عنوان URL للصفحة المستهدفة
invisible=1 isInvisible: true reCAPTCHA غير المرئي
enterprise=1 type=RecaptchaV2EnterpriseTaskProxyless علامة الإصدار Enterprise
## reCAPTCHA v3

CaptchaAI و2Captcha — يُضاف version وaction إلى الطلب نفسه:

POST /in.php
  key=API_KEY
  method=userrecaptcha
  googlekey=SITE_KEY
  pageurl=PAGE_URL
  version=v3
  action=verify

Anti-Captcha وCapMonster — نوع مهمة مستقل مع pageAction:

{
  "clientKey": "API_KEY",
  "task": {
    "type": "RecaptchaV3TaskProxyless",
    "websiteURL": "PAGE_URL",
    "websiteKey": "SITE_KEY",
    "pageAction": "verify"
  }
}

Cloudflare Turnstile

CaptchaAI — تمرَّر قيمة مفتاح الموقع في sitekey:

POST /in.php
  key=API_KEY
  method=turnstile
  sitekey=SITE_KEY
  pageurl=PAGE_URL

Anti-Captcha — نوع مهمة TurnstileTaskProxyless:

{
  "clientKey": "API_KEY",
  "task": {
    "type": "TurnstileTaskProxyless",
    "websiteURL": "PAGE_URL",
    "websiteKey": "SITE_KEY"
  }
}

يدعم CaptchaAI حل Cloudflare Turnstile مباشرةً عبر method=turnstile، مع تمرير مفتاح الموقع في sitekey بدلاً من googlekey الخاص بـ reCAPTCHA.

hCaptcha

لا يحل CaptchaAI اختبار hCaptcha حتى الآن، كما لا يدعم FunCaptcha من Arkose Labs، ودعم GeeTest v4 لا يزال قيد الإعداد ولم يُطرح بعد. أدرجنا شكل الطلب لدى 2Captcha وAnti-Captcha هنا كمرجع لمن يوازن بين المزوّدين لهذا النوع تحديداً؛ فإن كان hCaptcha شرطاً أساسياً في مشروعك فخطّط لإبقائه على مزوّده الحالي إلى حين توفّره.

2Captcha — معلمات نموذج إلى in.php:

POST /in.php
  key=API_KEY
  method=hcaptcha
  sitekey=SITE_KEY
  pageurl=PAGE_URL

Anti-Captcha — نوع مهمة HCaptchaTaskProxyless:

{
  "clientKey": "API_KEY",
  "task": {
    "type": "HCaptchaTaskProxyless",
    "websiteURL": "PAGE_URL",
    "websiteKey": "SITE_KEY"
  }
}

GeeTest v3

CaptchaAI و2Captcha — تُمرَّر قيمتا gt وchallenge معاً:

POST /in.php
  key=API_KEY
  method=geetest
  gt=GT_VALUE
  challenge=CHALLENGE_VALUE
  pageurl=PAGE_URL

Anti-Captcha — نوع مهمة GeeTestTaskProxyless:

{
  "clientKey": "API_KEY",
  "task": {
    "type": "GeeTestTaskProxyless",
    "websiteURL": "PAGE_URL",
    "gt": "GT_VALUE",
    "challenge": "CHALLENGE_VALUE"
  }
}

اختبارات الصور (OCR)

CaptchaAI و2Captcha — الصورة مشفّرة بصيغة base64 في body:

POST /in.php
  key=API_KEY
  method=base64
  body=BASE64_IMAGE

Anti-Captcha — نوع مهمة ImageToTextTask:

{
  "clientKey": "API_KEY",
  "task": {
    "type": "ImageToTextTask",
    "body": "BASE64_IMAGE"
  }
}

استطلاع النتيجة

CaptchaAI و2Captcha — طلب GET بسيط لاستطلاع النتيجة:

GET /res.php?key=API_KEY&action=get&id=TASK_ID&json=1

Response: {"status":1,"request":"TOKEN"}
Not ready: {"status":0,"request":"CAPCHA_NOT_READY"}

Anti-Captcha وCapMonster — طلب POST مع جسم JSON:

POST /getTaskResult
{
  "clientKey": "API_KEY",
  "taskId": 123456
}

Response: {"status":"ready","solution":{"gRecaptchaResponse":"TOKEN"}}
Not ready: {"status":"processing"}

هنا فرق مهم يسهل تجاهله: يعتمد CaptchaAI على GET بسيط، بينما تتطلب عائلة Anti-Captcha POST مع جسم JSON. عند القدوم من Anti-Captcha عدّل حلقة الاستطلاع الدوري لتستخدم GET مع مُعرّف المهمة، وتعامل مع CAPCHA_NOT_READY كإشارة على أن الحل لم يكتمل بعد.

التحقق من الرصيد

المزوّد نقطة النهاية الاستجابة
CaptchaAI GET /res.php?key=KEY&action=getbalance 12.345
2Captcha GET /res.php?key=KEY&action=getbalance 12.345
Anti-Captcha POST /getBalance {"clientKey":"KEY"} {"balance":12.345}
CapMonster POST /getBalance {"clientKey":"KEY"} {"balance":12.345}

يعيد CaptchaAI الرصيد كرقم مجرّد مطابق لأسلوب 2Captcha، بينما تغلّفه عائلة Anti-Captcha في كائن JSON بحقل balance. الكود الذي يقرأ الرصيد رقماً مباشراً لن يحتاج تعديلاً عند القدوم من 2Captcha.

رموز الأخطاء المتقابلة

السيناريو CaptchaAI / 2Captcha Anti-Captcha
مفتاح API خاطئ ERROR_WRONG_USER_KEY ERROR_KEY_DOES_NOT_EXIST
رصيد صفر ERROR_ZERO_BALANCE ERROR_ZERO_BALANCE
مفتاح موقع غير صالح ERROR_WRONG_GOOGLEKEY ERROR_RECAPTCHA_INVALID_SITEKEY
النتيجة غير جاهزة CAPCHA_NOT_READY status: "processing"
تجاوز حد الطلبات ERROR_TOO_MUCH_REQUESTS ERROR_TOO_MUCH_REQUESTS

رموز أخطاء CaptchaAI مطابقة لرموز 2Captcha نصاً، لذا تبقى معالجة الأخطاء التي كتبتها لـ 2Captcha صالحة كما هي. عند الترحيل من Anti-Captcha اربط رموزها المكافئة لتفادي معالجة الخطأ نفسه بمنطقين مختلفين.

قائمة تحقق للترحيل

راجع الخطوات التالية قبل تحويل حركة الإنتاج بالكامل؛ ترتيبها يقلّل مفاجآت اللحظة الأخيرة:

  • [ ] بدّل عنوان URL الأساسي إلى ocr.captchaai.com
  • [ ] حدّث مفتاح الـ API
  • [ ] عند الترحيل من Anti-Captcha أو CapMonster: حوّل جسم JSON إلى معلمات نموذج
  • [ ] استبدل clientKey بـ key
  • [ ] استبدل type الخاص بالمهمة بـ method
  • [ ] عدّل الاستطلاع الدوري ليستخدم GET بدلاً من POST (عند القدوم من Anti-Captcha)
  • [ ] اختبر بمهمة واحدة قبل الترحيل الكامل

سيناريو عملي من السوق

تخيّل فريقاً يدير أداة استخراج بيانات لموقع تجارة إلكترونية إقليمي تعتمد على 2Captcha عبر مكتبة عميل شائعة. مسار الترحيل هنا قصير:

  1. اضبط عنوان URL الأساسي في المكتبة على https://ocr.captchaai.com.
  2. حدّث المفتاح، ثم شغّل مهمة reCAPTCHA v2 واحدة وتأكد من عودة التوكن.
  3. حوّل بقية الحمل تدريجياً بعد نجاح الاختبار.

أما لو كان المصدر Anti-Captcha، فالخطوة الإضافية الوحيدة هي إعادة صياغة الطلب من JSON إلى معلمات نموذج وتحويل حلقة الاستطلاع إلى GET.

الأسئلة الشائعة

ما التغييرات المطلوبة عند الانتقال من Anti-Captcha إلى CaptchaAI؟

ثلاثة تغييرات جوهرية: حوّل جسم JSON إلى معلمات نموذج مسطّحة، واستبدل clientKey بـ key وtype بـ method، وحوّل استطلاع النتيجة من POST /getTaskResult إلى GET /res.php. بعدها تصبح أسماء الحقول متوافقة مع أسلوب 2Captcha.

ماذا عن hCaptcha وFunCaptcha وGeeTest v4؟

هذه الأنواع غير متاحة حالياً في CaptchaAI؛ فـ hCaptcha وFunCaptcha من Arkose Labs غير مدعومَين، ودعم GeeTest v4 قيد الإعداد ولم يُطرح بعد. في المقابل تُحل reCAPTCHA v2/v3 وCloudflare Turnstile وChallenge وGeeTest v3 واختبارات الصور بشكل عام.

كيف أتحقق من الرصيد وأتعامل مع رموز الأخطاء بعد الترحيل؟

استخدم GET /res.php?key=KEY&action=getbalance للحصول على الرصيد رقماً مباشراً. رموز الأخطاء مطابقة لـ 2Captcha نصاً، لذا تعمل معالجتك القائمة دون تعديل؛ وعند القدوم من Anti-Captcha اربط رموزها المكافئة كما في الجدول أعلاه.

هل يمكنني اختبار الترحيل دون تعطيل الإنتاج؟

نعم، وهذا هو النهج الموصى به. شغّل مهمة واحدة عبر نقطة نهاية CaptchaAI وتحقق من عودة التوكن ومن قراءة الرصيد بشكل صحيح، ثم حوّل نسبة صغيرة من الحركة قبل الترحيل الكامل.

انتقل إلى CaptchaAI بأقل تغييرات في الكود

أنشئ حسابك واحصل على مفتاح الـ API من captchaai.com، ثم بدّل النطاق في تكاملك الحالي وشغّل مهمة اختبارية واحدة للتأكد.

أدلة ذات صلة

التعليقات غير مفعّلة لهذا المقال.