Comparisons

BLS CAPTCHA vs reCAPTCHA Grid

Perbedaan intinya satu kalimat: BLS CAPTCHA menuntut Anda menyelesaikan gambar secara langsung, sedangkan reCAPTCHA Grid diselesaikan lewat token tanpa menyentuh gambar. BLS adalah CAPTCHA gambar proprietary yang hanya dipakai di sistem janji temu visa BLS International; reCAPTCHA adalah produk Google yang tersebar di jutaan situs. Perbedaan itu menentukan cara integrasinya — BLS butuh otomatisasi browser penuh, reCAPTCHA cukup satu alur API.


Ringkasan perbedaan BLS CAPTCHA dan reCAPTCHA Grid

Baris paling menentukan adalah penyelesaian berbasis token: reCAPTCHA menyembunyikan seluruh grid di balik satu token, sedangkan BLS tidak punya lapisan itu.

Fitur BLS CAPTCHA reCAPTCHA Grid
Penyedia BLS International (proprietary) Google
Format Beberapa gambar terpisah (3–9) Satu gambar dibagi jadi grid (3×3 atau 4×4)
Ubin dinamis Tidak — kumpulan tetap Ya — ubin baru muncul setelah dipilih
Analisis perilaku Minimal Luas (mouse, timing, IP)
Sistem skor Tidak ada Analisis risiko tiap request
Metode API method=bls method=userrecaptcha
Parameter instructions, image_base64_1..9 googlekey, pageurl
Format respons Indeks gambar (mis. 1,3,5) String token
Berbasis token Tidak — gambar diselesaikan langsung Ya — token menangani grid internal
Perlu browser Ya (ekstrak gambar dari DOM) Opsional (token jalan tanpa browser)
Tempat penggunaan Situs janji temu visa BLS Jutaan situs global
Waktu penyelesaian umum 5–15 detik 10–30 detik

Kompleksitas integrasi: mana yang lebih ringkas

Aspek BLS reCAPTCHA Grid
Ekstraksi gambar Ekstrak tiap gambar manual dari DOM Tidak perlu — ditangani token
Penanganan instruksi Ekstrak teks instruksi dari halaman Tidak perlu
Encoding Base64 Wajib tiap gambar Tidak perlu
Menerapkan hasil Klik gambar sesuai indeks Suntik token ke hidden field atau HTTP POST
Otomatisasi browser Wajib — tak bisa HTTP murni Opsional — bisa HTTP murni
Pemulihan kesalahan Ekstrak ulang gambar jika gagal Minta token baru jika gagal
Penyelesaian serentak Terbatas — terikat sesi browser Mudah — request token stateless
Baris kode (umum) 40–60 baris 15–25 baris

Ringkasnya:

  • reCAPTCHA Grid tanpa status — solve token bisa paralel dari klien HTTP apa pun.
  • BLS mengikat tiap solve ke satu sesi browser, jadi concurrency dibatasi jumlah browser.

Empat langkah alur solve di CaptchaAI

Kedua tipe mengikuti pola yang sama, beda di parameter dan cara menerapkan hasil:

  1. Kirim task ke in.php — BLS membawa gambar base64, reCAPTCHA googlekey dan pageurl.
  2. Simpan task ID dari respons.
  3. Polling ke res.php sampai hasil siap.
  4. Terapkan hasilnya — BLS klik indeks gambar, reCAPTCHA suntik token.

Menyelesaikan BLS CAPTCHA dengan CaptchaAI

Pola BLS berbeda dari token karena Anda menangani gambar sendiri:

  • Ekstrak teks instruksi dan tiap gambar, lalu ubah gambar ke base64.
  • Kirim semuanya ke CaptchaAI; hasilnya berupa indeks gambar yang harus diklik ulang.

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

Dua hal yang menentukan keberhasilannya:

  • Sertakan User-Agent dan cookie saat mengunduh URL gambar agar tidak ditolak.
  • Klik indeks persis sesuai urutan yang dikembalikan CaptchaAI.

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

Menyelesaikan reCAPTCHA Grid dengan CaptchaAI

reCAPTCHA berbasis token — tanpa ekstraksi gambar:

  • Ambil sitekey dari data-sitekey dan tentukan pageurl.
  • Kirim keduanya ke CaptchaAI, lalu suntik token ke g-recaptcha-response.

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

Skenario: kapan memakai metode mana

  • Janji temu visa BLS: method=bls dengan ekstraksi gambar.
  • Situs mana pun dengan reCAPTCHA: method=userrecaptcha dengan sitekey.
  • Situs BLS dengan reCAPTCHA tertanam: cek mana yang menjaga aksinya; kadang dipakai keduanya.
  • CAPTCHA gambar tak dikenal: pastikan dulu apakah bermerek BLS; jika bukan, coba reCAPTCHA atau OCR.

Di Indonesia, agensi dan tim otomatisasi yang mengurus pengajuan visa kerap berhadapan dengan BLS CAPTCHA, sementara reCAPTCHA muncul di hampir semua form login lokal. Karena CaptchaAI menagih per thread, bukan per solve, keduanya ditarik dari paket yang sama. Untuk menekan latensi, deploy worker di region terdekat seperti AWS ap-southeast-3 (Jakarta), dan otomatiskan hanya alur yang Anda berhak akses sesuai UU Pelindungan Data Pribadi (UU 27/2022).


Mengatasi masalah umum

Masalah Solusi BLS Solusi reCAPTCHA
Jawaban salah Pastikan teks instruksi sama persis dengan halaman Verifikasi sitekey dan pageurl
Gambar gagal dimuat Tambahkan User-Agent dan cookie saat mengambil URL gambar Tidak berlaku
Token ditolak Klik indeks dalam urutan yang benar Suntik ke g-recaptcha-response DAN jalankan callback
Terlalu lambat Kirim hanya gambar yang terlihat Pakai proxy dekat situs target

Pertanyaan umum

Apakah menyelesaikan BLS CAPTCHA wajib pakai browser?

Ya. Gambar BLS harus diekstrak dari DOM dan diklik ulang, jadi Anda butuh otomatisasi browser seperti Selenium atau Puppeteer. reCAPTCHA Grid tidak — metode token jalan dari klien HTTP murni tanpa browser.

Bagaimana cara tahu situs memakai BLS CAPTCHA atau reCAPTCHA?

Periksa DOM-nya:

  • Ada div.g-recaptcha dengan data-sitekey dan skrip dari google.com/recaptcha → pakai method=userrecaptcha.
  • Hanya ada teks instruksi plus gambar terpisah tanpa sitekey → pakai method=bls.

Apakah CaptchaAI juga menyelesaikan reCAPTCHA Enterprise?

Ya. reCAPTCHA v2 Enterprise dan v3 Enterprise sama-sama didukung lewat metode yang sama, method=userrecaptcha, jadi tidak perlu integrasi terpisah.

Apakah solve BLS lebih mahal daripada reCAPTCHA di CaptchaAI?

Tidak ada biaya per jenis — CaptchaAI menagih per thread bersamaan, bukan per solve:

  • BLS dan reCAPTCHA ditarik dari kuota thread yang sama; paket BASIC ($15/bulan, 5 thread) sudah mencakup solve tak terbatas per thread.
  • Yang berbeda hanya throughput: solve BLS terikat sesi browser sehingga sulit diparalelkan, sedangkan solve token reCAPTCHA yang stateless mengisi thread jauh lebih padat.

Metode mana yang lebih cepat diselesaikan?

Secara raw, BLS biasanya selesai 5–15 detik dan reCAPTCHA Grid 10–30 detik. Namun pada volume tinggi reCAPTCHA sering terasa lebih cepat karena tanpa overhead ekstraksi gambar dan bisa berjalan serentak tanpa browser.


Panduan terkait

Komentar dinonaktifkan untuk artikel ini.