API Tutorials

BLS CAPTCHA Görüntü Sıralaması ve Izgara Yanıtını İşleme

BLS CAPTCHA'ler, kullanıcıların görüntüleri seçmesi veya yeniden sıralaması gereken görüntü ızgaralarını görüntüler. Bu kılavuzda ızgara düzenleri, yanıt formatları ve çözümlerin doğru şekilde nasıl gönderileceği anlatılmaktadır.


BLS Izgara Mücadelesi Türleri

Görüntü Sıralaması

Kullanıcının görüntüleri belirli bir sıraya göre (örneğin artan sayılar, alfabetik sıra) düzenlemesi gerekir.

Resim Seçimi

Kullanıcının bir açıklamayla eşleşen belirli görsellere tıklaması gerekir (örneğin, "metin içeren tüm görselleri seç").

Desen Eşleşmesi

Kullanıcı, sunulan desen veya örnekle hangi görüntülerin eşleştiğini belirlemelidir.


Izgara Düzeni Haritalaması

# grid_mapping.py

# BLS grids typically use 3x3 or 4x4 layouts
# Each cell maps to an index:

# 3x3 grid:
# [0] [1] [2]
# [3] [4] [5]
# [6] [7] [8]

# 4x4 grid:
#  [0]  [1]  [2]  [3]
#  [4]  [5]  [6]  [7]
#  [8]  [9] [10] [11]
# [12] [13] [14] [15]

def grid_position(index, cols=3):
    """Convert flat index to row, column."""
    return index // cols, index % cols


def index_from_position(row, col, cols=3):
    """Convert row, column to flat index."""
    return row * cols + col


# Example: For a 3x3 grid, position (1, 2) = index 5
print(grid_position(5, cols=3))   # (1, 2)
print(index_from_position(1, 2))  # 5

BLS Grid CAPTCHA'larını Çözme

# solve_bls_grid.py
import requests
import time
import os
import json


def solve_bls_grid(sitekey, pageurl, instructions=None):
    """Solve a BLS grid CAPTCHA and get response indices."""
    api_key = os.environ["CAPTCHAAI_API_KEY"]

    payload = {
        "key": api_key,
        "method": "bls",
        "sitekey": sitekey,
        "pageurl": pageurl,
        "json": 1,
    }
    if instructions:
        payload["instructions"] = instructions

    resp = requests.post(
        "https://ocr.captchaai.com/in.php",
        data=payload,
        timeout=30,
    )
    result = resp.json()
    if result.get("status") != 1:
        raise RuntimeError(f"Submit failed: {result.get('request')}")

    task_id = result["request"]

    time.sleep(10)
    for _ in range(30):
        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:
            return data["request"]
        if data["request"] != "CAPCHA_NOT_READY":
            raise RuntimeError(data["request"])
        time.sleep(5)

    raise TimeoutError("BLS grid solve timeout")

Izgara Yanıtlarını Ayrıştırma

# parse_response.py
import json


def parse_grid_response(solution):
    """Parse CaptchaAI BLS response into actionable grid data."""
    # Solution may be JSON or comma-separated indices
    if isinstance(solution, str):
        try:
            parsed = json.loads(solution)
            return parsed
        except json.JSONDecodeError:
            pass

        # Try comma-separated indices
        if "," in solution:
            return [int(x.strip()) for x in solution.split(",")]

        # Single value
        return [solution]

    return solution


def format_for_submission(indices, grid_size=9):
    """Format indices for form submission."""
    # Some sites expect a bitmask
    bitmask = ["0"] * grid_size
    for idx in indices:
        if isinstance(idx, int) and 0 <= idx < grid_size:
            bitmask[idx] = "1"

    return {
        "indices": indices,
        "bitmask": "".join(bitmask),
        "count": len(indices),
    }

Selenyumlu Izgara Çözümlerinin Enjekte Edilmesi

# inject_grid.py
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
import time


def click_grid_cells(driver, indices):
    """Click specific grid cells based on solution indices."""
    wait = WebDriverWait(driver, 10)

    # Find all grid cells
    cells = wait.until(
        EC.presence_of_all_elements_located(
            (By.CSS_SELECTOR, ".captcha-grid .cell, .bls-grid img, .grid-item")
        )
    )

    for idx in indices:
        if isinstance(idx, int) and idx < len(cells):
            cells[idx].click()
            time.sleep(0.3)  # Brief delay between clicks


def set_order_sequence(driver, ordered_indices):
    """Click grid cells in the correct order for ordering challenges."""
    wait = WebDriverWait(driver, 10)

    cells = wait.until(
        EC.presence_of_all_elements_located(
            (By.CSS_SELECTOR, ".captcha-grid .cell, .bls-grid img")
        )
    )

    for idx in ordered_indices:
        if isinstance(idx, int) and idx < len(cells):
            cells[idx].click()
            time.sleep(0.5)  # Ordering needs pauses between clicks


def inject_hidden_response(driver, solution_value):
    """Set the solution in a hidden input field."""
    driver.execute_script("""
        var inputs = document.querySelectorAll(
            'input[name*="captcha"], input[name*="response"], #captcha-answer'
        );
        for (var i = 0; i < inputs.length; i++) {
            inputs[i].value = arguments[0];
        }
    """, str(solution_value))

BLS Izgara Akışını Tamamlayın

# full_flow.py
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC


def handle_bls_grid(driver, pageurl):
    """Complete BLS grid CAPTCHA handling."""

    wait = WebDriverWait(driver, 15)

    # Wait for CAPTCHA to load
    captcha = wait.until(
        EC.presence_of_element_located(
            (By.CSS_SELECTOR, "[data-sitekey], .bls-captcha")
        )
    )
    sitekey = captcha.get_attribute("data-sitekey")

    # Get instructions
    instructions = None
    try:
        inst = driver.find_element(By.CSS_SELECTOR, ".captcha-instructions")
        instructions = inst.text.strip()
    except Exception:
        pass

    # Solve via CaptchaAI
    solution = solve_bls_grid(sitekey, pageurl, instructions)
    parsed = parse_grid_response(solution)

    # Determine response method
    grid_cells = driver.find_elements(
        By.CSS_SELECTOR, ".captcha-grid .cell, .bls-grid img"
    )

    if grid_cells:
        # Click-based response
        if isinstance(parsed, list) and all(isinstance(x, int) for x in parsed):
            click_grid_cells(driver, parsed)
        else:
            inject_hidden_response(driver, solution)
    else:
        # Hidden input response
        inject_hidden_response(driver, solution)

    # Submit
    submit = driver.find_element(
        By.CSS_SELECTOR, "button[type='submit'], .submit-btn, #verify"
    )
    submit.click()

    return True

Sorun giderme

Sorun Sebep Düzeltme
Yanlış hücrelere tıklamalar Izgara hücresi seçici uyumsuzluğu Izgara HTML'sini inceleyin ve CSS seçicilerini güncelleyin
Sipariş reddedildi Çok hızlı tıklamak Tıklamalar arasına 300-500 ms gecikme ekleyin
Çözüm biçimi uyuşmazlığı Site bit maskesi bekliyor, indeksler var Dönüştürmek için format_for_submission() kullanın
Izgara tam olarak yüklenmedi Resimler yavaş yükleniyor Çözmeden önce tüm ızgara görüntülerinin yüklenmesini bekleyin

SSS

CaptchaAI ızgara düzenini nasıl biliyor?

CaptchaAI, CAPTCHA mücadelesini BLS sunucularından alır ve uzaktan çözer. Site anahtarını ve sayfa URL'sini siz sağlarsınız; API, ızgara analizini yönetir.

Gönderdikten sonra ızgara değişirse ne olur?

Bazı BLS formları, ilki geçtikten sonra ikinci bir mücadeleyi gösterir. Gönderimden sonra yeni bir CAPTCHA öğesini kontrol ederek bu sorunu halledin.

Bir BLS ızgara çözümünü yeniden kullanabilir miyim?

Hayır. Her çözüm belirli bir sorgulama oturumuna bağlıdır. Daima taze çözün.


İlgili Kılavuzlar


BLS ızgara zorluklarının üstesinden gelin —CaptchaAI ile başlayın.

Bu makale için yorumlar devre dışı bırakılmıştır.

İlgili Yazılar

API Tutorials BLS CAPTCHA Talimatları ve Kod Parametresi Derinlemesine İnceleme
BLS CAPTCHA Talimatları ve Kod Parametreleri Derinlemesine İnceleme için doğrudan yeniden kullanılabilir örnekler ve net bir Captcha AI iş akışı içeren adım adı...

BLS CAPTCHA Talimatları ve Kod Parametreleri Derinlemesine İnceleme için doğrudan yeniden kullanılabilir örnek...

Apr 26, 2026
Tutorials BLS CAPTCHA: Talimat Kodlarını Anlamak ve Çözmek
BLS CAPTCHA için adım adım eğitim: Doğrudan yeniden kullanılabilir örnekler ve net bir Captcha AI iş akışıyla Talimat Kodlarını Anlamak ve Çözmek.

BLS CAPTCHA için adım adım eğitim: Doğrudan yeniden kullanılabilir örnekler ve net bir Captcha AI iş akışıyla...

Apr 26, 2026
Integrations Bright Data + CaptchaAI: Eksiksiz Proxy Entegrasyon Kılavuzu
Bright Data + Captcha AI entegrasyon kılavuzu: Eksiksiz Proxy Entegrasyon Kılavuzu, kurulum, kod örnekleri ve Captcha AI'ye bağlanmak için açık bir yol.

Bright Data + Captcha AI entegrasyon kılavuzu: Eksiksiz Proxy Entegrasyon Kılavuzu, kurulum, kod örnekleri ve...

Apr 27, 2026