Hướng Dẫn API

Cách giải BLS CAPTCHA từng bước

BLS CAPTCHA là một thử thách dựa trên hình ảnh tùy chỉnh được sử dụng trên hệ thống hẹn phỏng vấn xin thị thực quốc tế BLS. Nó hiển thị nhiều hình ảnh và yêu cầu người dùng chọn những hình ảnh cụ thể dựa trên hướng dẫn văn bản - tương tự như lưới reCAPTCHA nhưng có hình ảnh riêng biệt và hướng dẫn tùy chỉnh.

Hướng dẫn này bao gồm việc trích xuất hình ảnh, gửi chúng tới CaptchaAI và sử dụng giải pháp để hoàn thành biểu mẫu BLS.


Yêu cầu

Mục Giá trị
Khóa API CaptchaAI Từcaptchaai.com
Hình ảnh BLS CAPTCHA Được mã hóa Base64 từ trang
Văn bản hướng dẫn Văn bản cho biết hình ảnh nào cần chọn
Ngôn ngữ Python 3.7+ hoặc Node.js 14+

Bước 1: Trích xuất hình ảnh và hướng dẫn từ trang

BLS CAPTCHA thường hiển thị 3–9 hình ảnh kèm theo hướng dẫn bằng văn bản như "Chọn tất cả hình ảnh có ô tô".

Sử dụng Selen

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()

Sử dụng người múa rối

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
  }))
);

Bước 2: Gửi tới CaptchaAI

Gửi văn bản hướng dẫn và tất cả hình ảnh tới bộ giải BLS.

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;
}

Bước 3: Thăm dò ý kiến giải pháp

Giải pháp trả về các chỉ số của hình ảnh chính xác.

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"

Bước 4: Bấm vào các hình ảnh đúng

Sử dụng các chỉ mục được trả về để nhấp vào hình ảnh tương ứng trên trang:

# 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()

Ví dụ Python hoàn chỉnh

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()

Khắc phục sự cố

Lỗi nguyên nhân sửa chữa
ERROR_BAD_PARAMETERS Thiếu hướng dẫn hoặc hình ảnh Bao gồm cả hướng dẫn bằng văn bản và ít nhất một hình ảnh
ERROR_CAPTCHA_UNSOLVABLE Hình ảnh quá mờ hoặc không thể nhận dạng được Chụp ảnh chất lượng cao hơn; đảm bảo mã hóa base64 là chính xác
Đã chọn sai hình ảnh Thứ tự hình ảnh không chính xác Đảm bảo hình ảnh được đánh số theo đúng thứ tự hiển thị
Giải pháp bị từ chối Hình ảnh thay đổi sau khi trích xuất Trích xuất hình ảnh và gửi ngay

Ví dụ đầy đủ có thể chạy được

Bạn cần một dự án hoạt động hoàn chỉnh với thiết lập môi trường, bỏ phiếu, thử lại và xử lý lỗi?

Xem ví dụ có thể chạy đầy đủ trên GitHub →


Câu hỏi thường gặp

BLS CAPTCHA hiển thị bao nhiêu hình ảnh?

Thông thường là 3–9 hình ảnh. Số lượng thay đổi theo trang và phiên.

Hình ảnh nên ở định dạng nào?

PNG hoặc JPEG được mã hóa Base64. Xóa tiền tố data:image/...;base64, trước khi gửi.

Việc giải BLS CAPTCHA mất bao lâu?

Thông thường là 15–30 giây. Thử thách nhận dạng hình ảnh mất nhiều thời gian hơn CAPTCHA dựa trên văn bản.

Tôi có thể giải BLS CAPTCHA mà không cần Selenium không?

Có, nếu bạn có thể trích xuất hình ảnh và hướng dẫn qua yêu cầu HTTP. API CaptchaAI chỉ cần hình ảnh base64 và văn bản hướng dẫn.


Hướng dẫn liên quan

Os comentários estão desativados para este artigo.