Perbandingan

BLS CAPTCHA vs reCAPTCHA Grid

Keduanya menyajikan gambar yang harus dipilih pengguna berdasarkan perintah teks. Namun BLS CAPTCHA adalah implementasi khusus yang digunakan secara eksklusif pada sistem visa Internasional BLS, sedangkan reCAPTCHA adalah solusi Google yang diterapkan secara global. Pendekatan penyelesaian, persyaratan integrasi, dan metode API CaptchaAI berbeda secara signifikan.


Perbandingan berdampingan

Fitur BLS CAPTCHA reCAPTCHA Grid
Penyedia BLS Internasional (kebiasaan) Google
Format Pisahkan gambar yang berbeda (3-9) Gambar tunggal dibagi menjadi beberapa kotak (3×3 atau 4×4)
Ubin dinamis Tidak — kumpulan gambar tetap Ya — ubin baru memudar setelah dipilih
Analisis perilaku Minimal Luas (mouse, timing, IP)
Sistem skor Tidak ada Analisis risiko pada setiap permintaan
metode API method=bls method=userrecaptcha
Parameter yang dibutuhkan instructions, image_base64_1..9 googlekey, pageurl
Format tanggapan Indeks gambar (mis., 1,3,5) Rangkaian token
Pemecahan berbasis token Tidak — harus menyelesaikan gambar secara langsung Ya — metode token menangani grid secara internal
Diperlukan peramban Ya (harus mengekstrak gambar dari DOM) Opsional (metode token berfungsi tanpa browser)
Dimana digunakan Hanya situs janji temu visa BLS Jutaan situs di seluruh dunia
Waktu penyelesaian yang umum 5-15 detik 10-30 detik

Menyelesaikan BLS CAPTCHA dengan CaptchaAI

BLS memerlukan ekstraksi setiap gambar dari halaman, menyandikannya sebagai base64, dan mengirimkannya bersama teks instruksi.

Python:

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

Memecahkan reCAPTCHA Grid dengan CaptchaAI

reCAPTCHA menggunakan pendekatan berbasis token — tidak diperlukan ekstraksi gambar.

Python:

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

Perbandingan kompleksitas integrasi

Aspek BLS reCAPTCHA Grid
Ekstraksi gambar Harus mengekstrak setiap gambar dari DOM secara manual Tidak diperlukan — metode token menangani secara internal
Penanganan instruksi Harus mengekstrak instruksi teks dari halaman Tidak diperlukan
Pengkodean Base64 Diperlukan untuk setiap gambar Tidak diperlukan
Aplikasi solusi Klik masing-masing gambar berdasarkan indeks yang dikembalikan Suntikkan token ke bidang tersembunyi atau HTTP POST
Otomatisasi peramban Wajib — tidak ada alternatif tanpa kepala Opsional — dapat menggunakan permintaan HTTP murni
Pemulihan kesalahan Ekstrak ulang gambar jika gagal Minta ulang token jika gagal
Penyelesaian serentak Terbatas — gambar terkait dengan sesi browser Mudah — permintaan token tidak memiliki kewarganegaraan
Baris kode (khas) 40-60 baris 15-25 baris

Kapan menggunakan pemecah yang mana

Skenario Pendekatan yang disarankan
Pemesanan janji temu visa BLS Gunakan method=bls dengan ekstraksi gambar
Situs apa pun dengan reCAPTCHA Gunakan method=userrecaptcha dengan kunci situs
Situs BLS dengan reCAPTCHA tertanam Periksa mana yang menjaga tindakan tersebut — situs BLS terkadang menggunakan keduanya
Captcha gambar tidak dikenal Periksa terlebih dahulu apakah bermerek BLS; jika tidak, coba metode reCAPTCHA atau OCR

Pemecahan Masalah

Masalah Solusi BLS Solusi reCAPTCHA
Jawaban salah dikembalikan Periksa teks instruksi sesuai dengan yang ditampilkan halaman Verifikasi sitekey dan pageurl sudah benar
Gambar tidak dimuat Tambahkan User-Agent dan cookie saat mengambil URL gambar Tidak berlaku — tidak ada gambar untuk diambil
Token ditolak Klik indeks dalam urutan yang benar di halaman Suntikkan ke g-recaptcha-response DAN jalankan callback
Penyelesaian terlalu lambat Kurangi jumlah gambar — hanya kirim gambar yang terlihat Gunakan proxy di dekat situs target

Pertanyaan Umum

Mana yang lebih sulit dipecahkan?

BLS memerlukan lebih banyak pekerjaan integrasi (ekstraksi gambar, penguraian instruksi, dan klik berbasis indeks) tetapi gambar biasanya lebih jelas dan sederhana. reCAPTCHA lebih mudah diintegrasikan (metode token) namun tantangan Google bisa lebih kompleks dengan ubin dinamis.

Bisakah saya menggunakan metode token reCAPTCHA untuk BLS?

Tidak. BLS bukan implementasi reCAPTCHA. Anda harus menggunakan method=bls dengan masing-masing gambar berkode base64 dan teks instruksi.

Apakah keduanya menggunakan teknologi Google?

Tidak. BLS CAPTCHA adalah implementasi khusus dan eksklusif yang dibuat untuk layanan visa Internasional BLS. reCAPTCHA adalah produk Google yang digunakan secara global di jutaan situs web.

Manakah yang lebih hemat biaya untuk diselesaikan dalam skala besar?

Penyelesaian token reCAPTCHA umumnya lebih hemat biaya untuk operasi bervolume tinggi karena integrasinya lebih sederhana (tidak ada overhead ekstraksi gambar) dan Anda dapat menjalankan permintaan tanpa status secara bersamaan. Penyelesaian BLS memerlukan sesi browser untuk setiap penyelesaian.

Bisakah saya menyelesaikan kedua jenis di halaman yang sama?

Ya. Beberapa situs BLS menggunakan CAPTCHA khusus untuk verifikasi awal dan reCAPTCHA untuk pengiriman formulir. Deteksi setiap jenis secara terpisah dan gunakan metode CaptchaAI yang sesuai untuk masing-masing jenis.


Panduan Terkait

  • Cara Mengatasi BLS CAPTCHA Langkah demi Langkah — panduan integrasi BLS lengkap
  • Cara Mengatasi reCAPTCHA v2 Menggunakan API — tutorial reCAPTCHA v2
  • Kesalahan dan Pemecahan Masalah BLS CAPTCHA — perbaikan kesalahan khusus BLS
Komentar dinonaktifkan untuk artikel ini.