Use Cases

BLS CAPTCHA на правительственных порталах: стратегии обработки

Правительственные порталы, которые обрабатывают записи на визы, заявления на получение разрешений и подачу документов, обычно используют BLS CAPTCHA. Эти CAPTCHA защищают места для встреч с высоким спросом и отправку форм. CaptchaAI решает проблемы BLS CAPTCHA со 100% вероятностью успеха, что позволяет автоматизировать взаимодействие с этими порталами.

Где появляются BLS CAPTCHA

BLS CAPTCHA можно найти на порталах государственных услуг, в частности:

Тип портала Размещение капчи Цель
Запись на визу Перед выбором слота Запретить автоматический захват встреч
Формы загрузки документов Перед отправкой Проверьте человеческое взаимодействие
Проверка статуса записи Перед отображением статуса Автоматические проверки ограничения скорости
Формы заявок Перед отправкой формы Запретить автоматическую отправку

Характеристики BLS CAPTCHA

BLS CAPTCHA обычно представлены как:

  • Проблемы на основе изображений с искаженным текстом
  • Проблемы с математическими выражениями
  • Задачи по индивидуальному выбору изображений
  • Текстовые головоломки

Для каждого задания требуется определенный код instructions, который сообщает CaptchaAI, как обрабатывать CAPTCHA.

Решение с помощью CaptchaAI

Шаг 1. Получите изображение CAPTCHA и инструкции.

import requests
from bs4 import BeautifulSoup
import base64

session = requests.Session()

# Load the portal page
page = session.get("https://portal.example.gov/appointment")
soup = BeautifulSoup(page.text, "html.parser")

# Find the CAPTCHA image
captcha_img = soup.select_one("img#captcha-image, img.captcha")
captcha_url = captcha_img["src"]

# Download the CAPTCHA image
if captcha_url.startswith("data:"):
    # Base64 encoded inline image
    img_data = captcha_url.split(",")[1]
else:
    # URL-referenced image
    img_response = session.get(captcha_url)
    img_data = base64.b64encode(img_response.content).decode()

Шаг 2. Отправьте заявку на CaptchaAI.

import time

def solve_bls_captcha(image_base64, instructions=""):
    resp = requests.post("https://ocr.captchaai.com/in.php", data={
        "key": "YOUR_API_KEY",
        "method": "base64",
        "body": image_base64,
        "instructions": instructions,
        "json": 1
    })
    task_id = resp.json()["request"]

    for _ in range(30):
        time.sleep(3)
        result = requests.get("https://ocr.captchaai.com/res.php", params={
            "key": "YOUR_API_KEY",
            "action": "get",
            "id": task_id,
            "json": 1
        })
        data = result.json()
        if data["status"] == 1:
            return data["request"]
    raise TimeoutError("BLS solve timed out")

# Solve
captcha_answer = solve_bls_captcha(img_data)

Шаг 3: Отправьте форму

# Find form fields
form_data = {
    "captcha_response": captcha_answer,
    "appointment_type": "visa",
    "location": "embassy-city",
    # ... other form fields
}

# Submit with the same session (cookies preserved)
result = session.post(
    "https://portal.example.gov/appointment/submit",
    data=form_data
)

if "success" in result.text.lower():
    print("Form submitted successfully")

Шаблоны правительственных порталов

Схема 1: Многоэтапные формы

Правительственные порталы часто используют многоэтапные формы, где CAPTCHA появляется на последнем этапе:

# Step 1: Select service type
session.post(url, data={"service": "passport"})

# Step 2: Fill personal details
session.post(url, data={"name": "...", "dob": "..."})

# Step 3: Select appointment slot
session.post(url, data={"slot": "2026-04-10-09:00"})

# Step 4: Solve CAPTCHA and confirm
captcha_answer = solve_bls_captcha(get_captcha_image(session))
session.post(url, data={"captcha": captcha_answer, "confirm": "true"})

Шаблон 2. Обновление CAPTCHA при ошибке

Если ответ CAPTCHA неправильный, портал генерирует новую CAPTCHA:

max_attempts = 3
for attempt in range(max_attempts):
    # Get fresh CAPTCHA for each attempt
    captcha_image = get_captcha_image(session)
    answer = solve_bls_captcha(captcha_image)

    result = session.post(submit_url, data={"captcha": answer})
    if "incorrect" not in result.text.lower():
        break
    print(f"Attempt {attempt + 1} — CAPTCHA refreshed, retrying")

Схема 3. Сеансы, ограниченные по времени

Правительственные порталы часто завершают сеансы по истечении определенного периода:

import time

session_start = time.time()
SESSION_TIMEOUT = 600  # 10 minutes typical

def check_session_valid():
    elapsed = time.time() - session_start
    if elapsed > SESSION_TIMEOUT - 60:  # 1 min safety margin
        print("Session expiring — refresh needed")
        return False
    return True

# Before CAPTCHA submission
if not check_session_valid():
    # Start a fresh session
    session = requests.Session()
    session.get(portal_url)
    session_start = time.time()

Подход к автоматизации браузера (JavaScript)

Для порталов, требующих выполнения JavaScript:

const puppeteer = require('puppeteer');

async function handleBLSPortal() {
  const browser = await puppeteer.launch({ headless: false });
  const page = await browser.newPage();

  await page.goto('https://portal.example.gov/appointment');

  // Wait for CAPTCHA to load
  await page.waitForSelector('img#captcha-image');

  // Get CAPTCHA image as base64
  const imgBase64 = await page.evaluate(() => {
    const img = document.querySelector('img#captcha-image');
    const canvas = document.createElement('canvas');
    canvas.width = img.naturalWidth;
    canvas.height = img.naturalHeight;
    const ctx = canvas.getContext('2d');
    ctx.drawImage(img, 0, 0);
    return canvas.toDataURL('image/png').split(',')[1];
  });

  // Solve with CaptchaAI
  const answer = await solveBLSCaptcha(imgBase64);

  // Type the answer
  await page.type('#captcha-input', answer);

  // Submit
  await page.click('#submit-button');

  // Wait for result
  await page.waitForNavigation();
}

Советы по управлению сеансами

Правительственные порталы строги в отношении состояния сеанса:

Требование Выполнение
Точно поддерживать файлы cookie Используйте requests.Session() или постоянный контекст браузера.
Не превышайте лимиты ставок Добавьте задержки между загрузками страниц (2–5 секунд).
Обработка токенов CSRF Извлекайте и включайте токены CSRF в каждый POST.
Соблюдайте таймауты сеансов Завершите рабочие процессы в течение тайм-аута
Следуйте цепочкам перенаправлений Разрешите автоматическое перенаправление в вашем HTTP-клиенте

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

| Проблема | Причина | Исправить |


Следующие шаги

  • CaptchaAI Quickstart: ваше первое решение CAPTCHA за 5 минут
  • Как решить reCAPTCHA v2 через API: пошаговое руководство
  • Как решить Cloudflare Turnstile через API
  • Как решить GeeTest v3 с помощью API
Комментарии для этой статьи отключены.

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

API Tutorials Инструкции BLS CAPTCHA и подробное описание параметров кода
Пошаговое руководство по инструкциям BLS CAPTCHA и детальное описание параметров кода с примерами, которые можно использовать повторно, и понятным рабочим проце...

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

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

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

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

Пошаговое руководство по порядку изображений BLS CAPTCHA и обработке сеток ответов с примерами, которые можно...

Apr 26, 2026