Tutorials

BLS CAPTCHA: Talimat Kodlarını Anlamak ve Çözmek

BLS CAPTCHA'ler sayısal talimat koduyla birlikte 3×3'lük bir görüntü ızgarası sunar. Kullanıcının talimatla eşleşen hücreleri seçmesi gerekir. CaptchaAI, BLS CAPTCHA'leri %100 doğrulukla çözer; bu kılavuz, ızgaranın nasıl çıkarılacağını, talimat kodunun nasıl okunacağını ve her şeyin API'ye nasıl gönderileceğini kapsar.


BLS CAPTCHA'ler nasıl çalışır?

Bir BLS CAPTCHA şunu görüntüler:

  1. 9 görüntü hücresi içeren 3×3 ızgara
  2. Hangi hücrelerin seçileceğini belirten sayısal talimat kodu (ör. 664, 123, 546)
  3. Hücreler soldan sağa, yukarıdan aşağıya numaralandırılır:
1  2  3
4  5  6
7  8  9

Talimat kodu, çözücüye hangi modeli arayacağını söyler. Yanıt, eşleşen hücre indekslerinin (1-9) dizisidir.


Adım 1: Izgara görüntülerini ve talimat kodunu çıkarın

Python (Selenyum)

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

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

# Find the grid container
grid_cells = driver.find_elements(By.CSS_SELECTOR, ".captcha-grid img")

images = []
for cell in grid_cells:
    src = cell.get_attribute("src")
    if src.startswith("data:image"):
        images.append(src)
    else:
        # Download and convert to base64
        import requests
        img_data = requests.get(src).content
        b64 = base64.b64encode(img_data).decode()
        images.append(f"data:image/png;base64,{b64}")

# Extract the instruction code
instruction_el = driver.find_element(By.CSS_SELECTOR, ".captcha-instruction")
instruction_code = instruction_el.text.strip()
# e.g., "664" or parsed from "Select all boxes with number 664"

import re
code_match = re.search(r'(\d{3,})', instruction_code)
instruction = code_match.group(1) if code_match else instruction_code

print(f"Instruction: {instruction}")
print(f"Images extracted: {len(images)}")

JavaScript (Puppeteer)

const puppeteer = require('puppeteer');

const browser = await puppeteer.launch();
const page = await browser.newPage();
await page.goto('https://example.com/bls-protected-page');

// Extract grid images as base64
const images = await page.evaluate(() => {
  const cells = document.querySelectorAll('.captcha-grid img');
  return Array.from(cells).map(img => {
    const canvas = document.createElement('canvas');
    canvas.width = img.naturalWidth;
    canvas.height = img.naturalHeight;
    canvas.getContext('2d').drawImage(img, 0, 0);
    return canvas.toDataURL('image/png');
  });
});

// Extract instruction code
const instruction = await page.evaluate(() => {
  const el = document.querySelector('.captcha-instruction');
  const match = el.textContent.match(/(\d{3,})/);
  return match ? match[1] : el.textContent.trim();
});

console.log(`Instruction: ${instruction}, Images: ${images.length}`);

Adım 2: CaptchaAI'ye Gönderin

BLS çözücü, method=bls'yi, instructions kodunu ve image_base64_1 ile image_base64_9 arasındaki 9 görüntünün tamamını gerektirir.

Python

import requests
import time
import json

API_KEY = "YOUR_API_KEY"

# Prepare submission data
data = {
    "key": API_KEY,
    "method": "bls",
    "instructions": instruction,
    "json": "1",
}

# Add all 9 images
files = {}
for i, img in enumerate(images):
    files[f"image_base64_{i+1}"] = (None, img)

# Submit
resp = requests.post(
    "https://ocr.captchaai.com/in.php",
    data=data,
    files=files
).json()

if resp["status"] != 1:
    raise Exception(f"Submit error: {resp['request']}")

task_id = resp["request"]
print(f"Task ID: {task_id}")

# Poll for result
for _ in range(20):
    time.sleep(5)
    result = requests.get("https://ocr.captchaai.com/res.php", params={
        "key": API_KEY, "action": "get", "id": task_id, "json": "1"
    }).json()

    if result["status"] == 1:
        solution = json.loads(result["request"])
        print(f"Selected cells: {solution}")  # e.g., [1, 4, 7, 8]
        break
    if result["request"] != "CAPCHA_NOT_READY":
        raise Exception(f"Error: {result['request']}")

JavaScript

const axios = require('axios');
const FormData = require('form-data');

const form = new FormData();
form.append('key', 'YOUR_API_KEY');
form.append('method', 'bls');
form.append('instructions', instruction);
form.append('json', '1');

images.forEach((img, i) => {
  form.append(`image_base64_${i + 1}`, img);
});

const submit = await axios.post('https://ocr.captchaai.com/in.php', form, {
  headers: form.getHeaders(),
});
const taskId = submit.data.request;

// Poll
let solution = null;
for (let i = 0; i < 20; i++) {
  await new Promise(r => setTimeout(r, 5000));
  const poll = await axios.get('https://ocr.captchaai.com/res.php', {
    params: { key: 'YOUR_API_KEY', action: 'get', id: taskId, json: 1 }
  });
  if (poll.data.status === 1) {
    solution = JSON.parse(poll.data.request);
    break;
  }
}
console.log('Selected cells:', solution); // e.g., [2, 4, 7]

Adım 3: Çözülmüş hücrelere tıklayın

# Selenium — click the cells returned by CaptchaAI
grid_cells = driver.find_elements(By.CSS_SELECTOR, ".captcha-grid .cell")

for cell_index in solution:
    # cell_index is 1-based
    grid_cells[cell_index - 1].click()

# Submit the form
submit_btn = driver.find_element(By.CSS_SELECTOR, ".captcha-submit")
submit_btn.click()
// Puppeteer
const cells = await page.$$('.captcha-grid .cell');
for (const idx of solution) {
  await cells[idx - 1].click();
}
await page.click('.captcha-submit');

İş akışını tamamlayın

def solve_bls_captcha(driver, api_key):
    """Extract, solve, and submit a BLS CAPTCHA."""
    import base64, requests, time, json, re

    # 1. Extract images
    grid_cells = driver.find_elements(By.CSS_SELECTOR, ".captcha-grid img")
    images = []
    for cell in grid_cells:
        src = cell.get_attribute("src")
        if src.startswith("data:image"):
            images.append(src)
        else:
            img_data = requests.get(src).content
            b64 = base64.b64encode(img_data).decode()
            images.append(f"data:image/png;base64,{b64}")

    # 2. Extract instruction
    el = driver.find_element(By.CSS_SELECTOR, ".captcha-instruction")
    match = re.search(r'(\d{3,})', el.text)
    instruction = match.group(1)

    # 3. Submit to CaptchaAI
    data = {"key": api_key, "method": "bls", "instructions": instruction, "json": "1"}
    files = {f"image_base64_{i+1}": (None, img) for i, img in enumerate(images)}
    resp = requests.post("https://ocr.captchaai.com/in.php", data=data, files=files).json()
    task_id = resp["request"]

    # 4. Poll
    for _ in range(20):
        time.sleep(5)
        result = requests.get("https://ocr.captchaai.com/res.php", params={
            "key": api_key, "action": "get", "id": task_id, "json": "1"
        }).json()
        if result["status"] == 1:
            solution = json.loads(result["request"])
            break

    # 5. Click cells
    clickable = driver.find_elements(By.CSS_SELECTOR, ".captcha-grid .cell")
    for idx in solution:
        clickable[idx - 1].click()

    return solution

Sorun giderme

Sorun Sebep Düzeltme
ERROR_BAD_PARAMETERS Eksik resimler veya talimat yok 9 görüntünün tamamının geçerli base64 veri URI'leri olduğundan emin olun
Yanlış hücreler seçildi Yanlış hücre-indeks eşlemesi Hücrelerin soldan sağa, yukarıdan aşağıya 1-9 arasında numaralandırıldığını doğrulayın
Resimler yüklenmiyor Çapraz menşe kısıtlaması Görüntüleri sunucu tarafında indirin ve base64'e dönüştürün
Talimat kodunu boşalt Talimat resimde gizli Talimat metnini çıkarın veya talimat görüntüsünü OCR yapın

SSS

BLS talimat kodu ne anlama geliyor?

Talimat kodu (örneğin, "664") CAPTCHA'ya hangi hücrelerin eşleşen içeriğe sahip olduğunu bildirir. CaptchaAI bunu analiz eder; kodu kendinizin yorumlamasına gerek yoktur.

BLS için CaptchaAI ne kadar doğrudur?

CaptchaAI, BLS CAPTCHA'ler için %100 doğruluk bildirir.


BLS CAPTCHA'leri CaptchaAI ile çözün - %100 doğruluk

API anahtarınızı şu adresten alın:captchaai.com.


İlgili kılavuzlar

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

İlgili Yazılar

Integrations CaptchaAI ile QA için tarayıcı profili izolasyonu
Staging QA testlerini temiz ve tekrarlanabilir tutmak için çerezleri, storage verilerini, test hesaplarını ve CAPTCHA yapılandırmalarını tarayıcı profiline göre...

Staging QA testlerini temiz ve tekrarlanabilir tutmak için çerezleri, storage verilerini, test hesaplarını ve...

Apr 29, 2026
DevOps & Scaling CAPTCHA Çözme Altyapısı için Mavi-Yeşil Dağıtım
Üretimdeki Captcha AI iş akışlarına yönelik mimari kararları, işletim hususlarını ve otomasyon modellerini içeren CAPTCHA Çözme Altyapısı için Mavi-Yeşil Dağıtı...

Üretimdeki Captcha AI iş akışlarına yönelik mimari kararları, işletim hususlarını ve otomasyon modellerini içe...

Apr 27, 2026
Use Cases Devlet Portallarında BLS CAPTCHA: Stratejileri Ele Alma
Gerçekçi senaryolar, iş akışı tavsiyeleri ve Captcha AI kullanılarak uygulanabilir adımlarla Devlet Portallarında BLS CAPTCHA: Stratejileri Ele Alma için pratik...

Gerçekçi senaryolar, iş akışı tavsiyeleri ve Captcha AI kullanılarak uygulanabilir adımlarla Devlet Portalları...

Apr 25, 2026