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.