الفرق العملي بين 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 ثانية |
العمودان لا يقيسان الشيء نفسه: النطاق يصف ما رُصد، والسقف حدٌّ أعلى معلن — فقارن التوزيع الفعلي لديك لا رقماً برقم.
مسار ترحيل لا يوقف الإنتاج
الترحيل الآمن لا يبدأ بإغلاق الحساب القديم. رتّبه هكذا:
- غلّف استدعاءات الحل خلف واجهة واحدة بدل الاتصال بالمزوّد من كل مكان.
- شغّل المزوّدَين بالتوازي على نسبة صغيرة من الطلبات، وسجّل وقت الحل ومعدل الفشل.
- انقل الأنواع الحرجة أولاً — Cloudflare Challenge وBLS — فلا بديل لها.
- أبقِ رصيداً في الحساب القديم أسبوعاً بعد التبديل كشبكة أمان.
الغلاف التالي يشغّل المزوّدَين معاً أثناء الانتقال:
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 قبل أن تنقل حملك بالكامل.