Comparisons

BLS CAPTCHA и reCAPTCHA Grid — сравнение

Оба представляют изображения, которые пользователи должны выбрать на основе текстовой подсказки. Но BLS CAPTCHA — это индивидуальная реализация, используемая исключительно в визовых системах BLS International, а reCAPTCHA — это глобальное решение Google. Подходы к решению, требования к интеграции и методы API CaptchaAI существенно различаются.


Параллельное сравнение

Особенность BLS CAPTCHA Сетка reCAPTCHA
Поставщик BLS International (по индивидуальному заказу) Google
Формат Отдельные отдельные изображения (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");
}

Сравнение сложности интеграции

Аспект БЛС Сетка reCAPTCHA
Извлечение изображения Необходимо вручную извлечь каждое изображение из DOM. Не требуется — метод токена обрабатывается внутри
Обработка инструкций Необходимо извлечь текстовую инструкцию со страницы Не требуется
Кодировка Base64 Требуется для каждого изображения Не требуется
Применение решения Щелкните отдельные изображения по возвращаемым индексам. Внедрить токен в скрытое поле или HTTP POST
Автоматизация браузера Требуется — нет headless альтернативы Необязательно — можно использовать чистые HTTP-запросы.
Восстановление ошибок Повторное извлечение изображений в случае сбоя Повторный запрос токена в случае неудачи
Параллельное решение Limited — изображения привязаны к сеансу браузера. Легко — запросы токенов не имеют состояния.
Строки кода (типично) 40-60 строк 15-25 строк

Когда использовать какой решатель

Сценарий Рекомендуемый подход
Запись на визу BLS Используйте method=bls для извлечения изображений.
Любой сайт с reCAPTCHA Используйте method=userrecaptcha с ключом сайта.
Сайт BLS со встроенной reCAPTCHA Проверьте, какой из них охраняет действие — сайты BLS иногда используют оба
Неизвестная капча изображения Сначала проверьте, имеет ли он бренд BLS; если нет, попробуйте методы reCAPTCHA или OCR.

Поиск неисправностей

Проблема исправление BLS исправление reCAPTCHA
Вернулся неправильный ответ Проверьте, соответствует ли текст инструкции тому, что показано на странице. Убедитесь, что ключ сайта и URL-адрес страницы указаны правильно.
Изображения не загружаются Добавьте User-Agent и файлы cookie при получении URL-адресов изображений. Неприменимо – нет изображений для загрузки.
Токен отклонен Щелкните индексы в правильном порядке на странице. Внедрить в g-recaptcha-response И выполнить обратный вызов
Решайте слишком медленно Уменьшите количество изображений — отправляйте только видимые изображения Использовать прокси рядом с целевым сайтом

Часто задаваемые вопросы

Что сложнее решить?

BLS требует дополнительной работы по интеграции (извлечение изображений, анализ инструкций и щелчки по индексам), но изображения обычно более четкие и простые. reCAPTCHA легче интегрировать (метод токенов), но проблемы Google могут быть более сложными при использовании динамических плиток.

Могу ли я использовать метод токена reCAPTCHA для BLS?

Нет. BLS не является реализацией reCAPTCHA. Вы должны использовать method=bls с отдельными изображениями в кодировке Base64 и текстом инструкций.

Оба используют технологии Google?

Нет. BLS CAPTCHA — это специальная собственная реализация, созданная для международных визовых служб BLS. reCAPTCHA — это продукт Google, используемый во всем мире на миллионах веб-сайтов.

Что более рентабельно решать в масштабе?

Решения с использованием токенов reCAPTCHA, как правило, более рентабельны для больших объемов операций, поскольку интеграция проще (нет затрат на извлечение изображений) и вы можете выполнять одновременные запросы без отслеживания состояния. Решение BLS требует сеанса браузера для каждого решения.

Могу ли я решить оба типа на одной странице?

Да. Некоторые сайты BLS используют собственную CAPTCHA для первоначальной проверки и reCAPTCHA для отправки формы. Определите каждый тип отдельно и используйте для каждого соответствующий метод CaptchaAI.


Связанные руководства

  • Как решить BLS CAPTCHA шаг за шагом— полное пошаговое руководство по интеграции BLS
  • Как решить reCAPTCHA v2 с помощью API— полное руководство по reCAPTCHA v2
  • Объяснение проблемы сетки reCAPTCHA— как работают задачи сетки
  • Ошибки BLS Captcha и их устранение— Исправлены ошибки, связанные с BLS.
Комментарии для этой статьи отключены.

Похожие сообщения

Troubleshooting Ошибки BLS CAPTCHA и их устранение
Практическое руководство по Ошибкам BLS CAPTCHA и их устранению с описанием распространенных причин, шагов по диагностике и конкретных исправлений, которые можн...

Практическое руководство по Ошибкам BLS CAPTCHA и их устранению с описанием распространенных причин, шагов по...

Apr 26, 2026
Tutorials BLS CAPTCHA: понимание кодов инструкций и их решение
Пошаговое руководство по BLS CAPTCHA: понимание кодов, инструкции и их решение, с примерами, которые можно использовать повторно, и понятным рабочим процессом C...

Пошаговое руководство по BLS CAPTCHA: понимание кодов, инструкции и их решение, с примерами, которые можно исп...

Apr 27, 2026
Comparisons Обнаружение ботов против очистки CAPTCHA — что вам нужно знать
Практическое сравнение «Обнаружение ботов против очистки CAPTCHA» — то, что вам нужно знать, сосредоточено на различиях в стоимости, точности, скорости и усилия...

Практическое сравнение «Обнаружение ботов против очистки CAPTCHA» — то, что вам нужно знать, сосредоточено на...

Apr 27, 2026