قد يفشل حل Image/text CAPTCHA بسبب جودة الصورة، أو مشكلات التنسيق، أو معلمات التلميحات غير الصحيحة. فيما يلي كيفية تشخيص الأخطاء الأكثر شيوعًا وإصلاحها.
أخطاء التقديم
ERROR_WRONG_FILE_EXTENSION
السبب: الصورة ليست بتنسيق مدعوم أو أن base64 غير صالح.
الإصلاح:
import base64
# Ensure proper encoding
with open("captcha.png", "rb") as f:
b64 = base64.b64encode(f.read()).decode()
# Don't include the data URI prefix
# WRONG: "data:image/png;base64,iVBOR..."
# RIGHT: "iVBOR..."
ERROR_ZERO_CAPTCHA_FILESIZE
السبب: ملف الصورة فارغ أو فشل التنزيل.
الإصلاح:
import os
# Check file size before submitting
if os.path.getsize("captcha.png") == 0:
print("Image file is empty — re-download")
# Re-capture the captcha
ERROR_TOO_BIG_CAPTCHA_FILESIZE
السبب: تجاوزت الصورة الحد الأقصى للحجم (عادةً 600 كيلو بايت).
الإصلاح:
from PIL import Image
import io
img = Image.open("captcha.png")
# Reduce quality without losing text clarity
buffer = io.BytesIO()
img.save(buffer, format="PNG", optimize=True)
تم إرجاع نص خاطئ
الشخصيات تخطئ في القراءة باستمرار
السبب: يخلط الحل بين الأحرف المتشابهة (0/O، 1/l/I، 5/S).
الإصلاح: استخدم معلمات التلميح لتقييد مجموعة الأحرف:
# If captcha is digits only
response = requests.post("https://ocr.captchaai.com/in.php", data={
"key": API_KEY, "method": "base64", "body": b64,
"numeric": 1, # 1 = digits only
"json": 1
})
# If captcha is letters only
response = requests.post("https://ocr.captchaai.com/in.php", data={
"key": API_KEY, "method": "base64", "body": b64,
"numeric": 2, # 2 = letters only
"json": 1
})
حالة خاطئة (أحرف كبيرة مقابل أحرف صغيرة)
السبب: يستخدم الحل الافتراضي أحرفًا صغيرة.
الإصلاح: اضبط regsense=1 لتمكين حساسية الحالة:
response = requests.post("https://ocr.captchaai.com/in.php", data={
"key": API_KEY, "method": "base64", "body": b64,
"regsense": 1, # Case-sensitive
"json": 1
})
أحرف زائدة أو مفقودة
السبب: يتم تفسير الضوضاء على أنها أحرف، أو يتم دمج الأحرف.
الإصلاح: تعيين قيود الطول min/max:
# If you know the CAPTCHA is always 6 characters
response = requests.post("https://ocr.captchaai.com/in.php", data={
"key": API_KEY, "method": "base64", "body": b64,
"min_len": 6,
"max_len": 6,
"json": 1
})
لم يتم حساب التعبير الرياضي
السبب: يقرأ الحل النص "3+7" بدلاً من حساب الإجابة "10".
الإصلاح: تعيين calc=1:
response = requests.post("https://ocr.captchaai.com/in.php", data={
"key": API_KEY, "method": "base64", "body": b64,
"calc": 1, # Compute the math expression
"json": 1
})
مشاكل جودة الصورة
اختبار CAPTCHA صغير جدًا
المشكلة: تفقد الصور الصغيرة جدًا (أقل من 50 بكسل ارتفاعًا) تفاصيل الشخصية.
الإصلاح: التقط الصورة بأكبر حجم متاح. إذا كانت الصفحة تعرض رمز التحقق صغيرًا، فتحقق من وجود عنوان URL لمصدر عالي الدقة:
# Check for higher-res version
img_src = captcha_el.get_attribute("src")
# Some sites use ?size=small — try removing or changing the parameter
high_res_src = img_src.replace("size=small", "size=large")
CAPTCHA متحرك
المشكلة: تستخدم بعض اختبارات CAPTCHA صور GIF متحركة حيث يكون النص مرئيًا فقط في إطارات معينة.
الإصلاح: استخراج الإطار الصحيح:
from PIL import Image
gif = Image.open("captcha.gif")
# Extract each frame and find the one with text
for i in range(gif.n_frames):
gif.seek(i)
gif.save(f"frame_{i}.png")
CAPTCHA له خلفية شفافة
المشكلة: قد لا يتم عرض PNG ذات الخلفية الشفافة بشكل صحيح للتعرف الضوئي على الحروف.
إصلاح: إضافة خلفية بيضاء:
from PIL import Image
img = Image.open("captcha.png").convert("RGBA")
background = Image.new("RGBA", img.size, (255, 255, 255, 255))
background.paste(img, mask=img)
background.convert("RGB").save("captcha_white_bg.png")
الإبلاغ عن الحلول غير الصحيحة
إذا قامت CaptchaAI بإرجاع النص الخاطئ، فأبلغ عنه:
# Report bad answer
requests.get("https://ocr.captchaai.com/res.php", params={
"key": API_KEY,
"action": "reportbad",
"id": task_id
})
يؤدي هذا إلى تحسين دقة الحل وقد يعيد تكلفة الحل.
قائمة التحقق من تحسين الدقة
| المعلمة | متى تستخدم | تأثير |
|---|---|---|
numeric=1 |
أرقام فقط | يزيل الارتباك letter/digit |
numeric=2 |
الحروف فقط | يزيل الارتباك letter/digit |
min_len / max_len |
طول معروف | يمنع الأحرف الإضافية /missing |
regsense=1 |
القضية مهمة | يحتفظ بالأحرف الكبيرة/lowercase |
calc=1 |
التعبير الرياضي | إرجاع الإجابة المحسوبة |
phrase=1 |
يحتوي على مسافات | يسمح بإجابات متعددة الكلمات |
language=1 |
النص السيريلي | يستخدم مجموعة الأحرف الصحيحة |
language=2 |
النص اللاتيني | يستخدم مجموعة الأحرف الصحيحة |
الأسئلة الشائعة
لماذا يكون اختبار CAPTCHA الخاص بي دائمًا خاطئًا بحرف واحد؟
استخدم min_len وmax_len لتقييد طول الإجابة. تحقق أيضًا من جودة الصورة، فالصور الباهتة تتسبب في قراءة خاطئة.
هل يجب علي استخدام تحميل الملفات أو base64؟
كلاهما يعمل بشكل جيد على قدم المساواة. Base64 مناسب للاستخدام البرمجي؛ يعمل تحميل الملفات بشكل أفضل مع أدوات النماذج متعددة الأجزاء.
كيف يمكنني حل اختبار CAPTCHA بلغات أخرى؟
قم بتعيين المعلمة language: 1 للسيريلية، و2 للغة اللاتينية. بالنسبة للبرامج النصية الأخرى، قم بحذف المعلمة ودع الحل يكتشف تلقائيًا.
هل يمكنني حل اختبارات CAPTCHA الصوتية بهذه الطريقة؟
لا، تتطلب اختبارات CAPTCHA الصوتية طريقة حل مختلفة. تحقق من وثائق CaptchaAI لدعم اختبار CAPTCHA الصوتي.