Beide präsentieren Bilder, die Benutzer anhand einer Textaufforderung auswählen müssen. Aber BLS CAPTCHA ist eine benutzerdefinierte Implementierung, die ausschließlich auf Visa-Systemen von BLS International verwendet wird, während reCAPTCHA die weltweit eingesetzte Lösung von Google ist. Die Lösungsansätze, Integrationsanforderungen und CaptchaAI-API-Methoden unterscheiden sich erheblich.
Direkter Vergleich
| Funktion | BLS CAPTCHA | reCAPTCHA-Raster |
|---|---|---|
| Anbieter | BLS International (benutzerdefiniert) | |
| Formatieren | Trennen Sie unterschiedliche Bilder (3-9) | Einzelbild, aufgeteilt in ein Raster (3×3 oder 4×4) |
| Dynamische Kacheln | Nein – fester Satz von Bildern | Ja – neue Kacheln werden nach der Auswahl eingeblendet |
| Verhaltensanalyse | Minimal | Umfangreich (Maus, Timing, IP) |
| Punktesystem | Keine | Risikoanalyse bei jeder Anfrage |
| API-Methode | method=bls |
method=userrecaptcha |
| Benötigte Parameter | instructions, image_base64_1..9 |
googlekey, pageurl |
| Antwortformat | Bildindizes (z. B. 1,3,5) |
Tokenzeichenfolge |
| Tokenbasiertes Lösen | Nein – Bilder müssen direkt gelöst werden | Ja – die Token-Methode verwaltet das Raster intern |
| Browser erforderlich | Ja (Bilder müssen aus DOM extrahiert werden) | Optional (Token-Methode funktioniert ohne Browser) |
| Wo verwendet | Nur BLS-Visa-Terminvereinbarungsseiten | Millionen von Websites weltweit |
| Typische Lösungszeit | 5-15 Sekunden | 10-30 Sekunden |
Lösen von BLS CAPTCHA mit CaptchaAI
BLS erfordert das Extrahieren jedes Bildes von der Seite, das Codieren als Base64 und das Versenden mit dem Anweisungstext.
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();
})();
Lösen des reCAPTCHA-Grids mit CaptchaAI
reCAPTCHA verwendet einen tokenbasierten Ansatz – es ist keine Bildextraktion erforderlich.
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");
}
Vergleich der Integrationskomplexität
| Aspekt | BLS | reCAPTCHA-Raster |
|---|---|---|
| Bildextraktion | Jedes Bild muss manuell aus dem DOM extrahiert werden | Nicht erforderlich – die Token-Methode wird intern verarbeitet |
| Umgang mit Anweisungen | Textanweisung muss von der Seite extrahiert werden | Nicht erforderlich |
| Base64-Kodierung | Für jedes Bild erforderlich | Nicht erforderlich |
| Lösungsanwendung | Klicken Sie auf einzelne Bilder nach zurückgegebenen Indizes | Token in verstecktes Feld oder HTTP POST einfügen |
| Browser-Automatisierung | Erforderlich – keine Headless-Alternative | Optional – kann reine HTTP-Anfragen verwenden |
| Fehlerbehebung | Bilder bei Fehler erneut extrahieren | Bei Fehler erneut Token anfordern |
| Gleichzeitiges Lösen | Begrenzt – Bilder, die an die Browsersitzung gebunden sind | Ganz einfach – Token-Anfragen sind zustandslos |
| Codezeilen (typisch) | 40-60 Zeilen | 15-25 Zeilen |
Wann welcher Solver verwendet werden soll
| Szenario | Empfohlener Ansatz |
|---|---|
| Terminbuchung für das BLS-Visum | Verwenden Sie method=bls mit Bildextraktion |
| Jede Website mit reCAPTCHA | Verwenden Sie method=userrecaptcha mit Sitekey |
| BLS-Site mit eingebettetem reCAPTCHA | Überprüfen Sie, welches die Aktion schützt – BLS-Sites verwenden manchmal beides |
| Unbekanntes Bild-Captcha | Überprüfen Sie zunächst, ob es die Marke BLS trägt. Wenn nicht, versuchen Sie es mit den Methoden reCAPTCHA oder OCR |
Fehlerbehebung
| Problem | BLS-Fix | reCAPTCHA-Fix |
|---|---|---|
| Falsche Antwort zurückgegeben | Überprüfen Sie, ob der Anweisungstext mit dem übereinstimmt, was auf der Seite angezeigt wird | Stellen Sie sicher, dass Sitekey und PageURL korrekt sind |
| Bilder werden nicht geladen | Fügen Sie beim Abrufen von Bild-URLs User-Agent und Cookies hinzu |
Nicht zutreffend – keine Bilder zum Abrufen |
| Token abgelehnt | Klicken Sie auf der Seite auf die Indizes in der richtigen Reihenfolge | In g-recaptcha-response einfügen UND Rückruf ausführen |
| Zu langsam lösen | Reduzieren Sie die Anzahl der Bilder – senden Sie nur sichtbare Bilder | Verwenden Sie einen Proxy in der Nähe der Zielsite |
FAQ
Was ist schwieriger zu lösen?
BLS erfordert mehr Integrationsarbeit (Bildextraktion, Befehlsanalyse und indexbasiertes Klicken), aber die Bilder sind normalerweise klarer und einfacher. reCAPTCHA ist einfacher zu integrieren (Token-Methode), aber die Herausforderungen von Google können bei dynamischen Kacheln komplexer sein.
Kann ich die reCAPTCHA-Token-Methode für BLS verwenden?
Nein. BLS ist keine reCAPTCHA-Implementierung. Sie müssen method=bls mit einzelnen base64-codierten Bildern und dem Anweisungstext verwenden.
Nutzen beide die Technologie von Google?
Nein. BLS CAPTCHA ist eine benutzerdefinierte, proprietäre Implementierung, die für die Visumdienste von BLS International entwickelt wurde. reCAPTCHA ist das Produkt von Google, das weltweit auf Millionen von Websites verwendet wird.
Was ist im großen Maßstab kostengünstiger zu lösen?
reCAPTCHA-Token-Lösungen sind im Allgemeinen für Vorgänge mit hohem Volumen kostengünstiger, da die Integration einfacher ist (kein Bildextraktionsaufwand) und Sie gleichzeitig zustandslose Anforderungen ausführen können. Für die BLS-Lösung ist für jede Lösung eine Browsersitzung erforderlich.
Kann ich beide Typen auf derselben Seite lösen?
Ja. Einige BLS-Sites verwenden ihr benutzerdefiniertes CAPTCHA für die Erstüberprüfung und reCAPTCHA für die Formularübermittlung. Erkennen Sie jeden Typ separat und verwenden Sie für jeden die entsprechende CaptchaAI-Methode.
Verwandte Leitfäden
- So lösen Sie BLS CAPTCHA Schritt für Schritt – vollständige Anleitung zur BLS-Integration
- So lösen Sie reCAPTCHA v2 mithilfe der API – Komplettes reCAPTCHA v2-Tutorial
- Grid-Image-CAPTCHA automatisch lösen – wie Grid-Herausforderungen funktionieren
- BLS Captcha-Fehler und Fehlerbehebung — BLS-spezifische Fehlerbehebungen