المقارنات

لماذا يتحول المطورون من Anti-Captcha إلى CaptchaAI

الفرق العملي بين Anti-Captcha وCaptchaAI يتلخّص في ثلاث نقاط: تغطية صفحات Cloudflare Challenge كاملةً، وطريقة bls جاهزة لبوابات المواعيد الرسمية، وتنسيق طلب متوافق مع 2Captcha يجعل الترحيل تعديلاً في سطور قليلة. ما عدا ذلك يأتي لاحقاً.

Anti-Captcha خدمة قديمة ومستقرة، والانتقال عنها ليس قراراً تلقائياً. لكن الفرق التي تعمل على مواقع تفعّل حزمة Cloudflare كاملة أو على بوابات تأشيرات رسمية تصطدم بالسقف نفسه: نوع تحدٍّ لا طريقة له في الحساب الحالي.


الخلاصة: متى يستحق الانتقال من Anti-Captcha

  • Turnstile وحده؟ المزوّدان يغطّيانه، والفارق في السرعة وشكل الدمج.
  • صفحة Cloudflare Challenge أو تحدي JavaScript؟ لا طريقة مقابلة لدى Anti-Captcha، وهنا يبدأ سبب التبديل الحقيقي.
  • BLS CAPTCHA في مسارك؟ الفارق ليس في الجودة بل في التوافر: الطريقة موجودة في جانب واحد فقط.

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

الفارق الأول: تنسيق الـ API وتكلفة الترحيل

يعتمد Anti-Captcha على واجهة مهام JSON خاصة به: تنشئ مهمة عبر createTask ثم تستفسر عن نتيجتها عبر getTaskResult.

# Anti-Captcha — custom JSON format
import requests

resp = requests.post("https://api.anti-captcha.com/createTask", json={
    "clientKey": "ANTICAPTCHA_KEY",
    "task": {
        "type": "RecaptchaV2TaskProxyless",
        "websiteURL": "https://example.com",
        "websiteKey": "SITE_KEY",
    }
})
task_id = resp.json()["taskId"]

# Poll with different endpoint and format
result = requests.post("https://api.anti-captcha.com/getTaskResult", json={
    "clientKey": "ANTICAPTCHA_KEY",
    "taskId": task_id,
})

أما CaptchaAI فيستخدم التنسيق المتوافق مع 2Captcha، الذي بُنيت حوله مئات الأدوات والمكتبات الجاهزة:

# CaptchaAI — standard 2Captcha-compatible format
import requests

resp = requests.post("https://ocr.captchaai.com/in.php", data={
    "key": "YOUR_API_KEY",
    "method": "userrecaptcha",
    "googlekey": "SITE_KEY",
    "pageurl": "https://example.com",
    "json": 1,
})
task_id = resp.json()["request"]

# Standard polling
result = requests.get("https://ocr.captchaai.com/res.php", params={
    "key": "YOUR_API_KEY",
    "action": "get",
    "id": task_id,
    "json": 1,
})

الأثر العملي: مع غلاف متوافق مع 2Captcha، يعني الترحيل تبديل نقطة النهاية والمفتاح لا أكثر. أما الاتجاه المعاكس فيتطلب إعادة كتابة منطق الإرسال والاستطلاع الدوري.

الفارق الثاني: تغطية Cloudflare حتى آخر الطريق

يتعامل Anti-Captcha مع رموز Turnstile، لكنه يتوقف عند صفحة الاعتراض الكاملة:

نوع تحدي Cloudflare Anti-Captcha CaptchaAI
Turnstile — مُدار
Turnstile — غير مرئي جزئي
صفحة Cloudflare Challenge
تحدي JavaScript

الفارق يظهر حين يفعّل الموقع صفحة اعتراض كاملة بدل عنصر واجهة مدمج: يعود سير عملك بصفحة HTML بدل البيانات، دون سبب واضح في السجلات.

الفارق الثالث: BLS CAPTCHA وبوابات المواعيد

هنا يصبح المثال محلياً بامتياز: الفرق التي تبني أدوات متابعة لمواعيد التأشيرات في مراكز BLS بالقاهرة والرياض ودبي تصطدم بنوع تحدٍّ لا تغطّيه أغلب الخدمات. يعرّض CaptchaAI طريقة bls مباشرة:

# CaptchaAI — BLS with a high success rate
resp = requests.post("https://ocr.captchaai.com/in.php", data={
    "key": "YOUR_API_KEY",
    "method": "bls",
    "pageurl": "https://bls-portal.example.com",
    "sitekey": "BLS_SITE_KEY",
    "json": 1,
})

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

درجات reCAPTCHA v3 وتغطية GeeTest

في reCAPTCHA v3 لا يكفي الحصول على رمز؛ المهم هو الدرجة المرافقة له. النهج المعتمد على عمّال بشريين لدى Anti-Captcha يُنتج درجات متذبذبة حول 0.3–0.5 مع تحكّم محدود، وهو نطاق يعامله كثير من المواقع كسلوك آلي. محرك CaptchaAI الآلي يستهدف درجات أعلى وأثبت.

في GeeTest v3 يقدّم الطرفان تغطية عملية بأفضلية زمنية لـ CaptchaAI. أما GeeTest v4 فلا يتيحه CaptchaAI بعد؛ الدعم مُدرج بوصفه "coming soon" فقط. والأمر نفسه مع hCaptcha وFunCaptcha: غير مدعومين.


جدول الميزات جنباً إلى جنب

الميزة Anti-Captcha CaptchaAI
reCAPTCHA v2 والنسخة غير المرئية
reCAPTCHA v3 — ثبات الدرجة ✅ درجات منخفضة
Cloudflare Turnstile
صفحة Cloudflare Challenge
BLS CAPTCHA
الصور وOCR ✅ 27,500+ نمط صورة
تنسيق الـ API JSON خاص متوافق مع 2Captcha
البروكسي وCallback
نموذج الفوترة لكل عملية حل حسب عدد الـ threads

الصف الأخير أهم مما يبدو: تنتقل الفاتورة من عدد العمليات إلى الذروة المتزامنة، والخطط تبدأ من BASIC بسعر 15 دولاراً شهرياً مع 5 threads.

السرعة: سقوف معلنة مقابل نطاقات مرصودة

نوع التحدي Anti-Captcha — نطاق مرصود CaptchaAI — سقف معلن
reCAPTCHA v2 15–45 ثانية <60 ثانية
reCAPTCHA v3 10–30 ثانية <4 ثوانٍ
كابتشا الصور 5–15 ثانية <0.5 ثانية
Cloudflare Turnstile 10–30 ثانية <10 ثوانٍ
GeeTest v3 15–40 ثانية <12 ثانية

العمودان لا يقيسان الشيء نفسه: النطاق يصف ما رُصد، والسقف حدٌّ أعلى معلن — فقارن التوزيع الفعلي لديك لا رقماً برقم.


مسار ترحيل لا يوقف الإنتاج

الترحيل الآمن لا يبدأ بإغلاق الحساب القديم. رتّبه هكذا:

  1. غلّف استدعاءات الحل خلف واجهة واحدة بدل الاتصال بالمزوّد من كل مكان.
  2. شغّل المزوّدَين بالتوازي على نسبة صغيرة من الطلبات، وسجّل وقت الحل ومعدل الفشل.
  3. انقل الأنواع الحرجة أولاً — Cloudflare Challenge وBLS — فلا بديل لها.
  4. أبقِ رصيداً في الحساب القديم أسبوعاً بعد التبديل كشبكة أمان.

الغلاف التالي يشغّل المزوّدَين معاً أثناء الانتقال:

import requests
import time

class CaptchaSolver:
    """Unified solver — supports Anti-Captcha and CaptchaAI."""

    def __init__(self, provider="captchaai", api_key="YOUR_API_KEY"):
        self.provider = provider
        self.api_key = api_key

    def solve_recaptcha_v2(self, sitekey, pageurl):
        if self.provider == "captchaai":
            return self._solve_captchaai("userrecaptcha", sitekey, pageurl)
        else:
            return self._solve_anticaptcha(sitekey, pageurl)

    def _solve_captchaai(self, method, sitekey, pageurl):
        resp = requests.post("https://ocr.captchaai.com/in.php", data={
            "key": self.api_key,
            "method": method,
            "googlekey": sitekey,
            "pageurl": pageurl,
            "json": 1,
        })
        task_id = resp.json()["request"]

        for _ in range(60):
            time.sleep(5)
            result = requests.get("https://ocr.captchaai.com/res.php", params={
                "key": self.api_key, "action": "get",
                "id": task_id, "json": 1,
            })
            data = result.json()
            if data["request"] != "CAPCHA_NOT_READY":
                return data["request"]

        raise TimeoutError("Solve timeout")

    def _solve_anticaptcha(self, sitekey, pageurl):
        resp = requests.post("https://api.anti-captcha.com/createTask", json={
            "clientKey": self.api_key,
            "task": {
                "type": "RecaptchaV2TaskProxyless",
                "websiteURL": pageurl,
                "websiteKey": sitekey,
            },
        })
        task_id = resp.json()["taskId"]

        for _ in range(60):
            time.sleep(5)
            result = requests.post(
                "https://api.anti-captcha.com/getTaskResult",
                json={"clientKey": self.api_key, "taskId": task_id},
            )
            data = result.json()
            if data["status"] == "ready":
                return data["solution"]["gRecaptchaResponse"]

        raise TimeoutError("Solve timeout")

اجعل provider="captchaai" الافتراضي في المشاريع الجديدة، وبدّله في المشاريع القائمة بعد القياس.

أخطاء متكررة أثناء التبديل

العَرَض السبب المعالجة
الطلب يُرفض فوراً مهام JSON مقابل حقول نموذج حوّل الطلب إلى الشكل الموضّح أعلاه
حقل method مفقود اسم الحقل القديم هو type استخدم method=userrecaptcha
الاستطلاع الدوري بلا نتيجة نقطة نهاية مختلفة أرسل GET إلى res.php مع action=get
اسم النوع غير معروف أسماء المهام تختلف استخدم userrecaptcha وturnstile وbls

أسئلة شائعة

هل يمكن تشغيل Anti-Captcha وCaptchaAI معاً أثناء الترحيل؟

نعم، وهي الطريقة المفضّلة: وجّه نسبة من الطلبات إلى كل مزوّد خلف الواجهة الموحّدة أعلاه، وقارن النتائج قبل تحويل الحمل بالكامل.

كيف أقارن المزوّدَين بشكل عادل داخل بيئتي؟

ثبّت نوع التحدي ومجموعة البروكسي ونافذة التوقيت، ثم قِس وقت الحل الوسيط ونسبة الفشل على 500 محاولة لكل مزوّد. القياس في أوقات أو مواقع مختلفة ينتج أرقاماً بلا معنى.

هل تعمل المكتبات الجاهزة مع CaptchaAI مباشرة؟

أغلفة Anti-Captcha لا تعمل لأن التنسيق مختلف، لكن أي مكتبة متوافقة مع 2Captcha تعمل بعد تغيير نقطة النهاية والمفتاح.

ماذا عن hCaptcha وGeeTest v4؟

hCaptcha وFunCaptcha غير مدعومين، وGeeTest v4 مُدرج بوصفه "coming soon" ولم يُتَح بعد. إن كان أي منها في مسارك الحرج، فالتبديل وحده لن يكفي.


اقرأ أيضاً


جاهز للاختبار؟ افتح حساب CaptchaAI وشغّل أول مقارنة على reCAPTCHA v2 وصفحة Cloudflare Challenge قبل أن تنقل حملك بالكامل.

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