API Eğitimleri

BLS CAPTCHA Adım Adım Nasıl Çözülür?

BLS CAPTCHA, BLS Uluslararası vize randevu sistemlerinde kullanılan, görüntü tabanlı özel bir sınavdır. Birden fazla görsel görüntüler ve kullanıcıdan metin talimatlarına göre belirli görselleri seçmesini ister; reCAPTCHA ızgarasına benzer ancak farklı görseller ve özel talimatlar içerir.

Bu kılavuz, görüntülerin çıkarılmasını, bunların CaptchaAI'ye gönderilmesini ve BLS formlarını doldurmak için çözümün kullanılmasını kapsar.


Gereksinimler

Öğe Değer
CaptchaAI API anahtarı İtibarencaptchaai.com
BLS CAPTCHA görselleri Sayfadan Base64 kodlu
Talimat metni Hangi görsellerin seçileceğini belirten metin
Dil Python 3.7+ veya Node.js 14+

1. Adım: Görüntüleri ve talimatları sayfadan çıkarın

BLS CAPTCHA genellikle "Araba içeren tüm görselleri seçin" gibi bir metin talimatı içeren 3-9 görsel gösterir.

Selenyum Kullanımı

from selenium import webdriver
from selenium.webdriver.common.by import By
import base64
import requests as req

driver = webdriver.Chrome()
driver.get("https://blsitalypakistan.com/appointment")

# Get instruction text
instruction = driver.find_element(By.CSS_SELECTOR, ".captcha-instruction").text
print(f"Instruction: {instruction}")

# Get all captcha images as base64
images = {}
captcha_imgs = driver.find_elements(By.CSS_SELECTOR, ".captcha-image img")
for i, img in enumerate(captcha_imgs, 1):
    src = img.get_attribute("src")
    if src.startswith("data:image"):
        # Already base64
        images[f"image_base64_{i}"] = src.split(",")[1]
    else:
        # Download and encode
        img_data = req.get(src).content
        images[f"image_base64_{i}"] = base64.b64encode(img_data).decode()

Puppeteeryı Kullanma

const puppeteer = require('puppeteer');

const browser = await puppeteer.launch({ headless: 'new' });
const page = await browser.newPage();
await page.goto('https://blsitalypakistan.com/appointment');

// Get instruction
const instruction = await page.$eval('.captcha-instruction', el => el.textContent);

// Get images as base64
const images = await page.$$eval('.captcha-image img', imgs =>
  imgs.map((img, i) => ({
    key: `image_base64_${i + 1}`,
    value: img.src.startsWith('data:') ? img.src.split(',')[1] : null
  }))
);

Adım 2: CaptchaAI'ye Gönderin

Talimat metnini ve tüm görüntüleri BLS çözücüye gönderin.

Python

import requests
import time

API_KEY = "YOUR_API_KEY"

payload = {
    "key": API_KEY,
    "method": "bls",
    "instructions": instruction,
    "json": 1
}

# Add each image (up to 9)
for key, value in images.items():
    payload[key] = value

response = requests.post("https://ocr.captchaai.com/in.php", data=payload)
data = response.json()

if data.get("status") != 1:
    raise Exception(f"Submit error: {data.get('request')}")

task_id = data["request"]
print(f"Task submitted: {task_id}")

Node.js

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

async function submitBLS(instruction, images) {
  const params = {
    key: 'YOUR_API_KEY',
    method: 'bls',
    instructions: instruction,
    json: 1,
    ...Object.fromEntries(images.map(img => [img.key, img.value]))
  };

  const { data } = await axios.post('https://ocr.captchaai.com/in.php', null, { params });
  if (data.status !== 1) throw new Error(data.request);
  return data.request;
}

3. Adım: Çözüm için anket yapın

Çözüm, doğru görüntülerin indekslerini döndürür.

Python

def get_bls_solution(task_id):
    for _ in range(30):
        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.get("status") == 1:
            return result["request"]  # e.g., "1,3,5" (image indices)
        if result.get("request") != "CAPCHA_NOT_READY":
            raise Exception(f"Error: {result.get('request')}")

    raise Exception("Timeout")

solution = get_bls_solution(task_id)
print(f"Select images: {solution}")  # e.g., "1,3,5"

4. Adım: Doğru görsellere tıklayın

Sayfadaki ilgili görsellere tıklamak için döndürülen endeksleri kullanın:

# Parse the solution indices
selected = [int(i) for i in solution.split(",")]

# Click each correct image
captcha_imgs = driver.find_elements(By.CSS_SELECTOR, ".captcha-image img")
for idx in selected:
    captcha_imgs[idx - 1].click()  # Convert 1-based to 0-based
    time.sleep(0.3)  # Small delay between clicks

# Submit the form
driver.find_element(By.CSS_SELECTOR, ".captcha-submit").click()

Python örneğini tamamlayın

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

API_KEY = "YOUR_API_KEY"
driver = webdriver.Chrome()
driver.get("https://blsitalypakistan.com/appointment")

# 1. Extract instruction and images
instruction = driver.find_element(By.CSS_SELECTOR, ".captcha-instruction").text
captcha_imgs = driver.find_elements(By.CSS_SELECTOR, ".captcha-image img")

payload = {"key": API_KEY, "method": "bls", "instructions": instruction, "json": 1}
for i, img in enumerate(captcha_imgs, 1):
    src = img.get_attribute("src")
    if src.startswith("data:image"):
        payload[f"image_base64_{i}"] = src.split(",")[1]

# 2. Submit to CaptchaAI
resp = requests.post("https://ocr.captchaai.com/in.php", data=payload).json()
task_id = resp["request"]

# 3. Poll for solution
for _ in range(30):
    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.get("status") == 1:
        selected = [int(i) for i in result["request"].split(",")]
        break

# 4. Click correct images and submit
for idx in selected:
    captcha_imgs[idx - 1].click()
    time.sleep(0.3)
driver.find_element(By.CSS_SELECTOR, ".captcha-submit").click()

print("CAPTCHA solved!")
driver.quit()

Sorun giderme

Hata Sebep Düzeltme
ERROR_BAD_PARAMETERS Eksik talimatlar veya resimler Hem metin talimatını hem de en az bir resmi ekleyin
ERROR_CAPTCHA_UNSOLVABLE Görüntüler çok bulanık veya tanınmıyor Daha yüksek kalitede görüntüler yakalayın; base64 kodlamasının doğru olduğundan emin olun
Yanlış resimler seçildi Yanlış resim sırası Resimlerin doğru görüntüleme sırasına göre numaralandırıldığından emin olun
Çözüm reddedildi Çıkarıldıktan sonra resimler değiştirildi Görüntüleri çıkarın ve hemen gönderin

Tam çalıştırılabilir örnek

Ortam kurulumu, yoklama, yeniden denemeler ve hata işleme ile eksiksiz bir çalışma projesine mi ihtiyacınız var?

GitHub →'deki çalıştırılabilir örneğin tamamına bakın


SSS

BLS CAPTCHA kaç resim gösteriyor?

Genellikle 3-9 resim. Bu sayı sayfaya ve oturuma göre değişir.

Görseller hangi formatta olmalı?

Base64 kodlu PNG veya JPEG. Göndermeden önce data:image/...;base64, önekini kaldırın.

BLS CAPTCHA çözümü ne kadar sürer?

Tipik olarak 15–30 saniye. Resim tanıma zorlukları, metin tabanlı CAPTCHA'lardan daha uzun sürer.

BLS CAPTCHA'yi Selenyum olmadan çözebilir miyim?

Evet, eğer görselleri ve talimatları HTTP istekleri aracılığıyla çıkartabiliyorsanız. CaptchaAI API'nin yalnızca base64 görüntülerine ve talimat metnine ihtiyacı vardır.


İlgili kılavuzlar

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