Comparisons

Lưới BLS CAPTCHA và lưới reCAPTCHA — So sánh

Cả hai đều hiển thị hình ảnh mà người dùng phải chọn dựa trên lời nhắc văn bản. Nhưng BLS CAPTCHA là triển khai tùy chỉnh được sử dụng riêng trên hệ thống thị thực quốc tế BLS, trong khi reCAPTCHA là giải pháp được Google triển khai trên toàn cầu. Các phương pháp giải quyết, yêu cầu tích hợp và phương pháp API CaptchaAI khác nhau đáng kể.


So sánh song song

tính năng BLS CAPTCHA Lưới reCAPTCHA
nhà cung cấp BLS quốc tế (tùy chỉnh) Google
định dạng Tách các hình ảnh riêng biệt (3-9) Hình ảnh đơn được chia thành lưới (3×3 hoặc 4×4)
Gạch động Không - bộ hình ảnh cố định Có - các ô mới mờ dần sau khi chọn
Phân tích hành vi Tối thiểu Mở rộng (chuột, thời gian, IP)
Hệ thống tính điểm không có Phân tích rủi ro theo mọi yêu cầu
phương pháp API method=bls method=userrecaptcha
Các thông số cần thiết instructions, image_base64_1..9 googlekey, pageurl
Định dạng phản hồi Chỉ số hình ảnh (ví dụ: 1,3,5) Chuỗi mã thông báo
Giải quyết dựa trên mã thông báo Không - phải giải quyết trực tiếp bằng hình ảnh Có - phương thức mã thông báo xử lý lưới nội bộ
Cần có trình duyệt Có (phải trích xuất hình ảnh từ DOM) Tùy chọn (phương thức mã thông báo hoạt động mà không cần trình duyệt)
Nơi sử dụng Chỉ các địa điểm hẹn phỏng vấn xin thị thực BLS Hàng triệu trang web trên toàn cầu
Thời gian giải quyết điển hình 5-15 giây 10-30 giây

Giải BLS CAPTCHA bằng CaptchaAI

BLS yêu cầu trích xuất từng hình ảnh từ trang, mã hóa chúng dưới dạng base64 và gửi chúng cùng với văn bản hướng dẫn.

Trăn:

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

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

# Step 1: Extract instruction text
instruction = driver.find_element(By.CSS_SELECTOR, ".captcha-instruction").text
# Example: "Select all images with a motorcycle"

# Step 2: Extract and encode each image
images = driver.find_elements(By.CSS_SELECTOR, ".captcha-image img")
image_data = {}
for i, img in enumerate(images, 1):
    # Get image source and convert to base64
    src = img.get_attribute("src")
    if src.startswith("data:image"):
        b64 = src.split(",")[1]
    else:
        img_bytes = requests.get(src).content
        b64 = base64.b64encode(img_bytes).decode()
    image_data[f"image_base64_{i}"] = b64

# Step 3: Submit to CaptchaAI
payload = {
    "key": "YOUR_API_KEY",
    "method": "bls",
    "instructions": instruction,
    **image_data
}
resp = requests.post("https://ocr.captchaai.com/in.php", data=payload)
task_id = resp.text.split("|")[1]

# Step 4: Poll for result
for _ in range(30):
    time.sleep(5)
    result = requests.get("https://ocr.captchaai.com/res.php", params={
        "key": "YOUR_API_KEY", "action": "get", "id": task_id
    })
    if result.text.startswith("OK|"):
        indices = result.text.split("|")[1]  # e.g., "1,3,5"
        break

# Step 5: Click the correct images
for idx in indices.split(","):
    images[int(idx) - 1].click()
    time.sleep(0.3)  # Small delay between clicks

Node.js:

const axios = require("axios");
const puppeteer = require("puppeteer");

(async () => {
  const browser = await puppeteer.launch({ headless: "new" });
  const page = await browser.newPage();
  await page.goto("https://example-bls-site.com/appointment");

  // Extract instruction text
  const instruction = await page.$eval(
    ".captcha-instruction",
    (el) => el.textContent,
  );

  // Extract images as base64
  const imageElements = await page.$$(".captcha-image img");
  const imageData = {};
  for (let i = 0; i < imageElements.length; i++) {
    const src = await imageElements[i].evaluate((el) => el.src);
    let b64;
    if (src.startsWith("data:image")) {
      b64 = src.split(",")[1];
    } else {
      const resp = await axios.get(src, { responseType: "arraybuffer" });
      b64 = Buffer.from(resp.data).toString("base64");
    }
    imageData[`image_base64_${i + 1}`] = b64;
  }

  // Submit to CaptchaAI
  const formData = new URLSearchParams({
    key: "YOUR_API_KEY",
    method: "bls",
    instructions: instruction,
    ...imageData,
  });
  const submitResp = await axios.post(
    "https://ocr.captchaai.com/in.php",
    formData.toString(),
  );
  const taskId = submitResp.data.split("|")[1];

  // Poll for result
  let indices;
  for (let i = 0; i < 30; i++) {
    await new Promise((r) => setTimeout(r, 5000));
    const result = await axios.get("https://ocr.captchaai.com/res.php", {
      params: { key: "YOUR_API_KEY", action: "get", id: taskId },
    });
    if (result.data.startsWith("OK|")) {
      indices = result.data.split("|")[1];
      break;
    }
  }

  // Click correct images
  for (const idx of indices.split(",")) {
    await imageElements[parseInt(idx) - 1].click();
    await new Promise((r) => setTimeout(r, 300));
  }

  await browser.close();
})();

Giải lưới reCAPTCHA bằng CaptchaAI

reCAPTCHA sử dụng phương pháp tiếp cận dựa trên mã thông báo — không cần trích xuất hình ảnh.

Trăn:

import requests
import time

# Step 1: Extract sitekey from page
# <div class="g-recaptcha" data-sitekey="6Le-wvkS..."></div>
sitekey = "6Le-wvkSAAAAAPBMRTvw..."
page_url = "https://example.com/form"

# Step 2: Submit to CaptchaAI
resp = requests.get("https://ocr.captchaai.com/in.php", params={
    "key": "YOUR_API_KEY",
    "method": "userrecaptcha",
    "googlekey": sitekey,
    "pageurl": page_url
})
task_id = resp.text.split("|")[1]

# Step 3: Poll for token
for _ in range(60):
    time.sleep(5)
    result = requests.get("https://ocr.captchaai.com/res.php", params={
        "key": "YOUR_API_KEY", "action": "get", "id": task_id
    })
    if result.text.startswith("OK|"):
        token = result.text.split("|")[1]
        break

# Step 4: Inject token (no clicking needed)
# Option A: Hidden field injection
driver.execute_script(
    f'document.getElementById("g-recaptcha-response").value = "{token}";'
)
# Option B: Pure HTTP submission
requests.post(page_url, data={"g-recaptcha-response": token, "other_field": "value"})

Node.js:

const axios = require("axios");

async function solveRecaptchaGrid(sitekey, pageUrl) {
  // Submit
  const submitResp = await axios.get("https://ocr.captchaai.com/in.php", {
    params: {
      key: "YOUR_API_KEY",
      method: "userrecaptcha",
      googlekey: sitekey,
      pageurl: pageUrl,
    },
  });
  const taskId = submitResp.data.split("|")[1];

  // Poll for token
  for (let i = 0; i < 60; i++) {
    await new Promise((r) => setTimeout(r, 5000));
    const result = await axios.get("https://ocr.captchaai.com/res.php", {
      params: { key: "YOUR_API_KEY", action: "get", id: taskId },
    });
    if (result.data.startsWith("OK|")) {
      return result.data.split("|")[1];
    }
  }
  throw new Error("Solve timed out");
}

So sánh độ phức tạp tích hợp

Khía cạnh BLS Lưới reCAPTCHA
Trích xuất hình ảnh Phải trích xuất từng hình ảnh từ DOM theo cách thủ công Không cần thiết - phương thức mã thông báo xử lý nội bộ
Xử lý hướng dẫn Phải trích xuất hướng dẫn văn bản từ trang Không cần thiết
Mã hóa Base64 Bắt buộc đối với mọi hình ảnh Không cần thiết
Ứng dụng giải pháp Nhấp vào từng hình ảnh theo chỉ số được trả về Tiêm mã thông báo vào trường ẩn hoặc HTTP POST
Tự động hóa trình duyệt Bắt buộc - không có giải pháp thay thế headless Tùy chọn - có thể sử dụng các yêu cầu HTTP thuần túy
Khôi phục lỗi Trích xuất lại hình ảnh khi thất bại Yêu cầu lại mã thông báo khi thất bại
Giải quyết đồng thời Bị giới hạn - hình ảnh được gắn với phiên trình duyệt Dễ dàng — yêu cầu mã thông báo không có trạng thái
Dòng mã (điển hình) 40-60 dòng 15-25 dòng

Khi nào nên sử dụng bộ giải nào

Kịch bản Cách tiếp cận được đề xuất
Đặt lịch hẹn xin visa BLS Sử dụng method=bls với tính năng trích xuất hình ảnh
Bất kỳ trang web nào có reCAPTCHA Sử dụng method=userrecaptcha với khóa trang web
Trang web BLS có nhúng reCAPTCHA Kiểm tra xem cái nào bảo vệ hành động - các trang BLS đôi khi sử dụng cả hai
Hình ảnh xác thực không xác định Trước tiên hãy kiểm tra xem nó có mang nhãn hiệu BLS hay không; nếu không, hãy thử phương pháp reCAPTCHA hoặc OCR

Khắc phục sự cố

vấn đề sửa lỗi BLS sửa lỗi reCAPTCHA
Trả lời sai trả về Kiểm tra văn bản hướng dẫn khớp với nội dung trang hiển thị Xác minh sitekey và pageurl là chính xác
Hình ảnh không tải Thêm User-Agent và cookie khi tìm nạp URL hình ảnh Không áp dụng - không có hình ảnh để tìm nạp
Mã thông báo bị từ chối Bấm vào các chỉ mục theo đúng thứ tự trên trang Đưa vào g-recaptcha-response VÀ thực hiện gọi lại
Giải quyết quá chậm Giảm số lượng hình ảnh - chỉ gửi hình ảnh hiển thị Sử dụng proxy gần trang đích

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

Cái nào khó giải quyết hơn?

BLS yêu cầu nhiều công việc tích hợp hơn (trích xuất hình ảnh, phân tích lệnh và nhấp chuột dựa trên chỉ mục) nhưng hình ảnh thường rõ ràng và đơn giản hơn. reCAPTCHA dễ tích hợp hơn (phương pháp mã thông báo) nhưng các thách thức của Google có thể phức tạp hơn với các ô động.

Tôi có thể sử dụng phương thức mã thông báo reCAPTCHA cho BLS không?

Không. BLS không phải là triển khai reCAPTCHA. Bạn phải sử dụng method=bls với các hình ảnh được mã hóa base64 riêng lẻ và văn bản hướng dẫn.

Cả hai đều sử dụng công nghệ của Google phải không?

Không. BLS CAPTCHA là một triển khai tùy chỉnh, độc quyền được xây dựng cho các dịch vụ thị thực quốc tế BLS. reCAPTCHA là sản phẩm của Google được sử dụng trên hàng triệu trang web trên toàn cầu.

Giải pháp nào hiệu quả hơn về mặt chi phí ở quy mô lớn?

Việc giải quyết mã thông báo reCAPTCHA thường tiết kiệm chi phí hơn cho các hoạt động có khối lượng lớn vì việc tích hợp đơn giản hơn (không cần trích xuất hình ảnh) và bạn có thể chạy đồng thời các yêu cầu không trạng thái. Việc giải BLS yêu cầu một phiên trình duyệt cho mỗi lần giải.

Tôi có thể giải quyết cả hai loại trên cùng một trang không?

Vâng. Một số trang web BLS sử dụng CAPTCHA tùy chỉnh của họ để xác minh ban đầu và reCAPTCHA để gửi biểu mẫu. Phát hiện từng loại riêng biệt và sử dụng phương pháp CaptchaAI thích hợp cho từng loại.


Hướng dẫn liên quan

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

Postagens relacionadas

Tutorials BLS CAPTCHA: Tìm hiểu mã hướng dẫn và giải quyết
Hướng dẫn từng bước cho BLS CAPTCHA: Tìm hiểu hướng dẫn mã và cách giải quyết, với các ví dụ có thể sử dụng lại trực tiếp và quy trình làm việc Captcha AI rõ rà...

Hướng dẫn từng bước cho BLS CAPTCHA: Tìm hiểu hướng dẫn mã và cách giải quyết, với các ví dụ có thể sử dụng lạ...

Apr 27, 2026
Comparisons Phát hiện bot và quét CAPTCHA - Những điều bạn cần biết
So sánh thực tế Phát hiện bot và quét CAPTCHA - Những điều bạn cần biết, tập trung vào sự khác biệt về chi phí, độ chính xác, tốc độ và nỗ lực tích hợp xung qua...

So sánh thực tế Phát hiện bot và quét CAPTCHA - Những điều bạn cần biết, tập trung vào sự khác biệt về chi phí...

Apr 28, 2026
Troubleshooting Lỗi BLS CAPTCHA và cách khắc phục sự cố
Hướng dẫn thực tế về Lỗi BLS CAPTCHA và cách giải quyết sự cố, với các nguyên nhân phổ biến, các bước chẩn đoán và cách khắc phục cụ thể để áp dụng với Captcha...

Hướng dẫn thực tế về Lỗi BLS CAPTCHA và cách giải quyết sự cố, với các nguyên nhân phổ biến, các bước chẩn đoá...

Apr 26, 2026