Comparisons

BLS CAPTCHA مقابل reCAPTCHA Grid

يقدم كلاهما صورًا يجب على المستخدمين تحديدها بناءً على مطالبة نصية. لكن BLS CAPTCHA هو تنفيذ مخصص يُستخدم حصريًا في أنظمة تأشيرات BLS International، في حين أن reCAPTCHA هو حل Google المنتشر عالميًا. تختلف أساليب الحل ومتطلبات التكامل وطرق CaptchaAI API بشكل كبير.


المقارنة جنبا إلى جنب

ميزة BLS CAPTCHA شبكة ريكابتشا
مزود بي ال اس انترناشيونال (مخصص) جوجل
التنسيق صور منفصلة ومتميزة (3-9) صورة واحدة مقسمة إلى شبكة (3×3 أو 4×4)
البلاط الديناميكي لا - مجموعة ثابتة من الصور نعم - تتلاشى البلاطات الجديدة بعد التحديد
التحليل السلوكي الحد الأدنى واسعة النطاق (الماوس، التوقيت، IP)
نظام النتيجة لا شيء تحليل المخاطر على كل طلب
طريقة API method=bls method=userrecaptcha
المعلمات اللازمة instructions، image_base64_1..9 googlekey، pageurl
تنسيق الاستجابة مؤشرات الصور (على سبيل المثال، 1,3,5) سلسلة رمزية
الحل القائم على الرمز المميز لا — يجب حل الصور مباشرة نعم - تتعامل طريقة الرمز المميز مع الشبكة داخليًا
المتصفح مطلوب نعم (يجب استخراج الصور من DOM) اختياري (طريقة الرمز المميز تعمل بدون متصفح)
حيث تستخدم مواقع مواعيد تأشيرة BLS فقط ملايين المواقع على مستوى العالم
وقت الحل النموذجي 5-15 ثانية 10-30 ثانية

حل BLS CAPTCHA مع CaptchaAI

يتطلب BLS استخراج كل صورة من الصفحة، وترميزها كـ base64، وإرسالها مع نص التعليمات.

بايثون:

import requests
import base64
import time
from selenium import webdriver
from selenium.webdriver.common.by import By

driver = webdriver.Chrome()
driver.get("https://example-bls-site.com/appointment")

# Step 1: Extract instruction text
instruction = driver.find_element(By.CSS_SELECTOR, ".captcha-instruction").text
# Example: "Select all images with a motorcycle"

# Step 2: Extract and encode each image
images = driver.find_elements(By.CSS_SELECTOR, ".captcha-image img")
image_data = {}
for i, img in enumerate(images, 1):
    # Get image source and convert to base64
    src = img.get_attribute("src")
    if src.startswith("data:image"):
        b64 = src.split(",")[1]
    else:
        img_bytes = requests.get(src).content
        b64 = base64.b64encode(img_bytes).decode()
    image_data[f"image_base64_{i}"] = b64

# Step 3: Submit to CaptchaAI
payload = {
    "key": "YOUR_API_KEY",
    "method": "bls",
    "instructions": instruction,
    **image_data
}
resp = requests.post("https://ocr.captchaai.com/in.php", data=payload)
task_id = resp.text.split("|")[1]

# Step 4: Poll for result
for _ in range(30):
    time.sleep(5)
    result = requests.get("https://ocr.captchaai.com/res.php", params={
        "key": "YOUR_API_KEY", "action": "get", "id": task_id
    })
    if result.text.startswith("OK|"):
        indices = result.text.split("|")[1]  # e.g., "1,3,5"
        break

# Step 5: Click the correct images
for idx in indices.split(","):
    images[int(idx) - 1].click()
    time.sleep(0.3)  # Small delay between clicks

Node.js:

const axios = require("axios");
const puppeteer = require("puppeteer");

(async () => {
  const browser = await puppeteer.launch({ headless: "new" });
  const page = await browser.newPage();
  await page.goto("https://example-bls-site.com/appointment");

  // Extract instruction text
  const instruction = await page.$eval(
    ".captcha-instruction",
    (el) => el.textContent,
  );

  // Extract images as base64
  const imageElements = await page.$$(".captcha-image img");
  const imageData = {};
  for (let i = 0; i < imageElements.length; i++) {
    const src = await imageElements[i].evaluate((el) => el.src);
    let b64;
    if (src.startsWith("data:image")) {
      b64 = src.split(",")[1];
    } else {
      const resp = await axios.get(src, { responseType: "arraybuffer" });
      b64 = Buffer.from(resp.data).toString("base64");
    }
    imageData[`image_base64_${i + 1}`] = b64;
  }

  // Submit to CaptchaAI
  const formData = new URLSearchParams({
    key: "YOUR_API_KEY",
    method: "bls",
    instructions: instruction,
    ...imageData,
  });
  const submitResp = await axios.post(
    "https://ocr.captchaai.com/in.php",
    formData.toString(),
  );
  const taskId = submitResp.data.split("|")[1];

  // Poll for result
  let indices;
  for (let i = 0; i < 30; i++) {
    await new Promise((r) => setTimeout(r, 5000));
    const result = await axios.get("https://ocr.captchaai.com/res.php", {
      params: { key: "YOUR_API_KEY", action: "get", id: taskId },
    });
    if (result.data.startsWith("OK|")) {
      indices = result.data.split("|")[1];
      break;
    }
  }

  // Click correct images
  for (const idx of indices.split(",")) {
    await imageElements[parseInt(idx) - 1].click();
    await new Promise((r) => setTimeout(r, 300));
  }

  await browser.close();
})();

حل شبكة reCAPTCHA باستخدام CaptchaAI

يستخدم reCAPTCHA أسلوبًا يعتمد على الرمز المميز، ولا حاجة لاستخراج الصور.

بايثون:

import requests
import time

# Step 1: Extract sitekey from page
# <div class="g-recaptcha" data-sitekey="6Le-wvkS..."></div>
sitekey = "6Le-wvkSAAAAAPBMRTvw..."
page_url = "https://example.com/form"

# Step 2: Submit to CaptchaAI
resp = requests.get("https://ocr.captchaai.com/in.php", params={
    "key": "YOUR_API_KEY",
    "method": "userrecaptcha",
    "googlekey": sitekey,
    "pageurl": page_url
})
task_id = resp.text.split("|")[1]

# Step 3: Poll for token
for _ in range(60):
    time.sleep(5)
    result = requests.get("https://ocr.captchaai.com/res.php", params={
        "key": "YOUR_API_KEY", "action": "get", "id": task_id
    })
    if result.text.startswith("OK|"):
        token = result.text.split("|")[1]
        break

# Step 4: Inject token (no clicking needed)
# Option A: Hidden field injection
driver.execute_script(
    f'document.getElementById("g-recaptcha-response").value = "{token}";'
)
# Option B: Pure HTTP submission
requests.post(page_url, data={"g-recaptcha-response": token, "other_field": "value"})

Node.js:

const axios = require("axios");

async function solveRecaptchaGrid(sitekey, pageUrl) {
  // Submit
  const submitResp = await axios.get("https://ocr.captchaai.com/in.php", {
    params: {
      key: "YOUR_API_KEY",
      method: "userrecaptcha",
      googlekey: sitekey,
      pageurl: pageUrl,
    },
  });
  const taskId = submitResp.data.split("|")[1];

  // Poll for token
  for (let i = 0; i < 60; i++) {
    await new Promise((r) => setTimeout(r, 5000));
    const result = await axios.get("https://ocr.captchaai.com/res.php", {
      params: { key: "YOUR_API_KEY", action: "get", id: taskId },
    });
    if (result.data.startsWith("OK|")) {
      return result.data.split("|")[1];
    }
  }
  throw new Error("Solve timed out");
}

مقارنة تعقيد التكامل

الجانب مكتب إحصاءات العمل شبكة ريكابتشا
استخراج الصورة يجب استخراج كل صورة من DOM يدويًا ليست هناك حاجة - يتم التعامل مع طريقة الرمز المميز داخليًا
التعامل مع التعليمات يجب استخراج التعليمات النصية من الصفحة ليست هناك حاجة
ترميز Base64 مطلوب لكل صورة ليست هناك حاجة
تطبيق الحل انقر فوق الصور الفردية حسب المؤشرات التي تم إرجاعها أدخل الرمز المميز في الحقل المخفي أو HTTP POST
أتمتة المتصفح مطلوب - لا يوجد بديل مقطوع الرأس اختياري — يمكن استخدام طلبات HTTP النقية
استرداد الخطأ إعادة استخراج الصور عند الفشل إعادة طلب الرمز المميز عند الفشل
الحل المتزامن محدودة – صور مرتبطة بجلسة المتصفح سهل - طلبات الرمز المميز عديمة الجنسية
أسطر التعليمات البرمجية (نموذجية) 40-60 سطرًا 15-25 سطرًا

متى تستخدم أي حلال

السيناريو النهج الموصى به
حجز موعد تأشيرة BLS استخدم method=bls مع استخراج الصور
أي موقع به reCAPTCHA استخدم method=userrecaptcha مع مفتاح الموقع
موقع BLS مع reCAPTCHA المضمن تحقق من أي واحد يحمي الإجراء — تستخدم مواقع BLS أحيانًا كليهما
صورة غير معروفة تحقق مما إذا كانت تحمل علامة BLS التجارية أولاً؛ إذا لم يكن الأمر كذلك، فجرّب أساليب reCAPTCHA أو OCR

استكشاف الأخطاء وإصلاحها

مشكلة إصلاح BLS إصلاح اختبار التحقق
تم إرجاع الإجابة الخاطئة تحقق من تطابق نص التعليمات مع ما تعرضه الصفحة تحقق من صحة مفتاح الموقع وعنوان الصفحة
لا يتم تحميل الصور أضف User-Agent وملفات تعريف الارتباط عند جلب عناوين URL للصور غير قابل للتطبيق — لا توجد صور لجلبها
تم رفض الرمز المميز انقر فوق المؤشرات بالترتيب الصحيح على الصفحة أدخل في g-recaptcha-response وقم بتنفيذ رد الاتصال
حل بطيء جدا تقليل عدد الصور - إرسال الصور المرئية فقط استخدم الوكيل بالقرب من الموقع المستهدف

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

أيهما أصعب في الحل؟

يتطلب BLS مزيدًا من أعمال التكامل (استخراج الصور، وتحليل التعليمات، والنقر المستند إلى الفهرس) ولكن الصور عادة ما تكون أكثر وضوحًا وبساطة. من الأسهل دمج reCAPTCHA (طريقة الرمز المميز) ولكن تحديات Google يمكن أن تكون أكثر تعقيدًا مع المربعات الديناميكية.

هل يمكنني استخدام طريقة رمز reCAPTCHA المميز لـ BLS؟

لا، BLS ليس تطبيق reCAPTCHA. يجب عليك استخدام method=bls مع الصور الفردية المشفرة بـ base64 ونص التعليمات.

هل يستخدم كلاهما تقنية Google؟

رقم BLS CAPTCHA هو تطبيق مخصص ومملوك تم تصميمه لخدمات تأشيرات BLS International. reCAPTCHA هو منتج Google المستخدم عالميًا عبر ملايين مواقع الويب.

ما هو الحل الأكثر فعالية من حيث التكلفة على نطاق واسع؟

تعد حلول رمز reCAPTCHA أكثر فعالية من حيث التكلفة بشكل عام بالنسبة للعمليات ذات الحجم الكبير نظرًا لأن التكامل أبسط (لا توجد تكاليف إضافية لاستخراج الصور) ويمكنك تشغيل الطلبات المتزامنة عديمة الحالة. يتطلب حل BLS جلسة متصفح لكل حل.

هل يمكنني حل كلا النوعين في نفس الصفحة؟

نعم. تستخدم بعض مواقع BLS اختبار CAPTCHA المخصص للتحقق الأولي وreCAPTCHA لإرسال النموذج. اكتشف كل نوع على حدة واستخدم طريقة CaptchaAI المناسبة لكل نوع.


أدلة ذات صلة

النقاشات (0)

لا توجد تعليقات بعد.

مقالات ذات صلة

Comparisons اكتشاف الروبوتات مقابل تجريف اختبار CAPTCHA
مقارنة عملية حول اكتشاف الروبوتات مقابل تجريف اختبار CAPTCHA تركّز على الفروق في التكلفة والدقة وزمن الاستجابة وسهولة الدمج، مع التأكيد على أن الحكم النهائي يجب...

مقارنة عملية حول اكتشاف الروبوتات مقابل تجريف اختبار CAPTCHA تركّز على الفروق في التكلفة والدقة وزمن الاستجابة...

Apr 25, 2026
Tutorials BLS CAPTCHA: فهم رموز التعليمات وحلها
شرح خطوة بخطوة لـ BLS CAPTCHA: فهم رموز التعليمات وحلها مع أمثلة مباشرة قابلة لإعادة الاستخدام ومسار واضح لتطبيقه باستخدام Captcha AI.

شرح خطوة بخطوة لـ BLS CAPTCHA: فهم رموز التعليمات وحلها مع أمثلة مباشرة قابلة لإعادة الاستخدام ومسار واضح لتطب...

Apr 24, 2026
Troubleshooting أخطاء BLS CAPTCHA واستكشاف الأخطاء وإصلاحها
دليل عملي حول أخطاء BLS CAPTCHA واستكشاف الأخطاء وإصلاحها يركّز على الأسباب الشائعة وخطوات التشخيص والإصلاحات الأكثر فائدة داخل سير عمل عربي واضح وقابل للتتبع.

دليل عملي حول أخطاء BLS CAPTCHA واستكشاف الأخطاء وإصلاحها يركّز على الأسباب الشائعة وخطوات التشخيص والإصلاحات...

Apr 23, 2026