عندما ينخفض معدل الحل لديك، لا تخمن — اتبع هذا التشخيص المنهجي للعثور على السبب الجذري وإصلاحه.
ملاحظة: تستند الأرقام الواردة في هذه المقالة إلى اختبارات داخلية في ظروف محددة. قد تختلف النتائج حسب نوع CAPTCHA والموقع وبيئة التشغيل. يُنصح بإجراء قياسات مستقلة في بيئتك قبل الاعتماد على هذه الأرقام.
مخطط انسيابي للتشخيص
Success rate dropped
│
├── Are tokens being generated?
│ ├── NO → Check API errors
│ │ ├── ERROR_WRONG_GOOGLEKEY → Sitekey changed. Re-extract.
│ │ ├── ERROR_BAD_PARAMETERS → Check required params
│ │ ├── ERROR_NO_SLOT → Retry with backoff
│ │ └── Other errors → See error decision tree
│ │
│ └── YES → Tokens generated but rejected by target site
│ │
│ ├── Token expired before use?
│ │ └── YES → Submit token faster (< 60-120s)
│ │
│ ├── Token used for wrong domain?
│ │ └── YES → Check pageurl matches submission domain
│ │
│ ├── reCAPTCHA v3 score too low?
│ │ └── YES → Check action parameter, attach cookies/UA/proxy
│ │
│ ├── Site changed CAPTCHA type?
│ │ └── YES → Re-detect CAPTCHA type
│ │
│ └── Site added additional checks?
│ └── YES → Check for fingerprinting, cookies, headers
الخطوة 1: قياس المعدل الحالي الخاص بك
import requests
import time
from collections import defaultdict
class SuccessTracker:
"""Track solve success rates over time."""
def __init__(self):
self.stats = defaultdict(lambda: {"attempts": 0, "success": 0, "errors": defaultdict(int)})
def record(self, method, success, error_code=None):
self.stats[method]["attempts"] += 1
if success:
self.stats[method]["success"] += 1
elif error_code:
self.stats[method]["errors"][error_code] += 1
def report(self):
for method, data in self.stats.items():
rate = data["success"] / data["attempts"] * 100 if data["attempts"] > 0 else 0
print(f"\n{method}:")
print(f" Attempts: {data['attempts']}")
print(f" Success: {data['success']} ({rate:.1f}%)")
if data["errors"]:
print(" Errors:")
for err, count in sorted(data["errors"].items(), key=lambda x: -x[1]):
print(f" {err}: {count}")
tracker = SuccessTracker()
الخطوة الثانية: تحديد فئة المشكلة
الفئة أ: حالات الفشل على مستوى واجهة برمجة التطبيقات (API).
تقوم واجهة CaptchaAI API بإرجاع خطأ بدلاً من الرمز المميز.
def diagnose_api_failures(api_key, method, params, attempts=10):
"""Run test solves and collect error patterns."""
errors = defaultdict(int)
successes = 0
for i in range(attempts):
try:
resp = requests.post("https://ocr.captchaai.com/in.php", data={
"key": api_key, "method": method, "json": 1, **params,
}, timeout=30)
result = resp.json()
if result.get("status") != 1:
errors[result.get("request", "UNKNOWN")] += 1
continue
task_id = result["request"]
# Quick poll
time.sleep(15)
resp = requests.get("https://ocr.captchaai.com/res.php", params={
"key": api_key, "action": "get",
"id": task_id, "json": 1,
}, timeout=15)
data = resp.json()
if data.get("status") == 1:
successes += 1
else:
errors[data.get("request", "POLL_ERROR")] += 1
except Exception as e:
errors[f"EXCEPTION:{type(e).__name__}"] += 1
time.sleep(2)
print(f"\nResults: {successes}/{attempts} success")
for err, count in sorted(errors.items(), key=lambda x: -x[1]):
print(f" {err}: {count}")
الفئة ب: رفض الرمز المميز
يقوم CaptchaAI بإرجاع رمز مميز صالح، لكن الموقع الهدف يرفضه.
الأسباب الشائعة:
| السبب | تحقق |
|---|---|
| ** انتهت صلاحية الرمز ** | استخدام الرمز > 120 ثانية بعد الإنشاء |
| ** المجال غير متطابق ** | عنوان URL الخاص بالصفحة لا يتطابق مع نطاق الإرسال |
| ** درجة الإصدار 3 منخفضة جدًا ** | يتطلب الموقع 0.7+ لكن الحل يحصل على 0.3 |
| الإجراء المفقود | يتطلب الإصدار 3 مطابقة معلمة الإجراء |
| ** تم تغيير معلمات الموقع ** | تم تغيير مفتاح الموقع أو بنية الصفحة |
الخطوة 3: إصلاح المشكلات الشائعة
إصلاح: انتهاء صلاحية الرمز المميز
def solve_and_use_immediately(api_key, sitekey, pageurl):
"""Solve and use token as fast as possible."""
# Submit
resp = requests.post("https://ocr.captchaai.com/in.php", data={
"key": api_key,
"method": "userrecaptcha",
"googlekey": sitekey,
"pageurl": pageurl,
"json": 1,
}, timeout=30)
task_id = resp.json()["request"]
# Poll aggressively
for _ in range(24):
time.sleep(5)
resp = requests.get("https://ocr.captchaai.com/res.php", params={
"key": api_key, "action": "get",
"id": task_id, "json": 1,
}, timeout=15)
data = resp.json()
if data.get("status") == 1:
token = data["request"]
# USE IMMEDIATELY — don't store for later
submit_form(token)
return True
return False
إصلاح: مفتاح الموقع القديم
def solve_with_fresh_params(api_key, pageurl):
"""Re-extract sitekey before each solve."""
import re
resp = requests.get(pageurl, timeout=15)
match = re.search(r'data-sitekey="([^"]+)"', resp.text)
if not match:
raise RuntimeError("Could not find sitekey")
sitekey = match.group(1)
# Now solve with fresh sitekey
# ...
إصلاح: معلمة الإجراء v3
# Check what action the site uses
# Look for: grecaptcha.execute('sitekey', {action: 'submit'})
data = {
"key": api_key,
"method": "userrecaptcha",
"googlekey": sitekey,
"pageurl": pageurl,
"version": "v3",
"action": "submit", # Must match site's action
"json": 1,
}
معدلات النجاح المتوقعة
| نوع التحقق | المعدل الطبيعي | عتبة التنبيه |
|---|---|---|
| reCAPTCHA v2 | 95-99% | أقل من 90% |
| reCAPTCHA v3 | 90-98% | أقل من 85% |
| Cloudflare Turnstile | 99-100% | أقل من 95% |
| GeeTest v3 | 99-100% | أقل من 95% |
| مكتب إحصاءات العمل | 99-100% | أقل من 95% |
| Image/OCR | 90-98% | أقل من 85% |
استكشاف الأخطاء وإصلاحها
| المشكلة | السبب | الإجراء |
|---|---|---|
| انخفض المعدل من 98% إلى 70% | تم تغيير مفتاح الموقع أو الصفحة | إعادة استخراج كافة المعلمات |
| تم رفض جميع الرموز المميزة v3 | معلمة الإجراء الخاطئة | مطابقة الإجراء من مصدر الصفحة |
| الرموز تعمل ولكنها تنتهي صلاحيتها | بطيء جدًا في الاستخدام | إرسال الرمز المميز في غضون 60 ثانية |
| يختلف السعر حسب الوقت من اليوم | تحديد معدل جانب الخادم | إضافة التأخير بين عمليات الإرسال |
الأسئلة الشائعة
ما هو معدل النجاح الطبيعي؟
95%+ لمعظم أنواع CAPTCHA. إذا كنت دائمًا أقل من 90%، فمن المحتمل أن تكون هناك مشكلة في المعلمة أو التوقيت.
ما مدى السرعة التي أحتاجها لاستخدام الرموز؟
تنتهي صلاحية رموز reCAPTCHA خلال 120 ثانية. رموز Turnstile في 300 ثانية. استخدم الرموز خلال 60 ثانية للحصول على أفضل النتائج.
هل يجب علي الإبلاغ عن الحلول غير الصحيحة؟
نعم. استخدم نقطة النهاية reportbad للإبلاغ عن الحلول غير الصحيحة. يستخدم CaptchaAI هذه التعليقات لتحسين الدقة.
أدلة ذات صلة
- اختبار CAPTCHA يحل انخفاضات المعدل: تشخيص انحدار الأداء
- إدارة حالة جلسة CAPTCHA عبر العمال الموزعين
- التشخيص السريع والحل بشكل أفضل -استخدم CaptchaAI.*