API Tutorials

BLS CAPTCHA 指令和代码参数深入探讨

BLS CAPTCHA 使用特定参数来提交挑战。了解 instructionscode 和响应处理对于可靠求解至关重要。


BLS CAPTCHA 参数参考

范围 必需的 类型 描述
method 是的 细绳 必须是 bls
sitekey 是的 细绳 该网站的 BLS CAPTCHA 密钥
pageurl 是的 细绳 显示验证码的页面 URL
instructions 细绳 来自 CAPTCHA 图像的文本说明
code 细绳 BLS CAPTCHA 代码/type 标识符
json 整数 对于 JSON 响应,设置为 1

提取 BLS 参数

# extract_bls.py
import re
from selenium import webdriver
from selenium.webdriver.common.by import By


def extract_bls_params(url):
    """Extract BLS CAPTCHA parameters from a page."""
    driver = webdriver.Chrome()
    driver.get(url)

    params = {"pageurl": url}

    # Extract sitekey
    captcha_el = driver.find_element(By.CSS_SELECTOR, "[data-sitekey], .bls-captcha")
    sitekey = captcha_el.get_attribute("data-sitekey")
    if sitekey:
        params["sitekey"] = sitekey

    # Extract instructions if visible
    try:
        instructions_el = driver.find_element(
            By.CSS_SELECTOR, ".captcha-instructions, .captcha-text"
        )
        params["instructions"] = instructions_el.text.strip()
    except Exception:
        pass

    # Extract code from hidden input or script
    page_source = driver.page_source
    code_match = re.search(r'captcha_code["\']?\s*[:=]\s*["\']([^"\']+)', page_source)
    if code_match:
        params["code"] = code_match.group(1)

    driver.quit()
    return params


# Usage
params = extract_bls_params("https://bls-example.com/appointment")
print(params)

提交 BLS CAPTCHA 至 CaptchaAI

基本提交

# solve_bls_basic.py
import requests
import time
import os


def solve_bls(sitekey, pageurl, instructions=None, code=None):
    """Solve BLS CAPTCHA via CaptchaAI API."""
    api_key = os.environ["CAPTCHAAI_API_KEY"]

    payload = {
        "key": api_key,
        "method": "bls",
        "sitekey": sitekey,
        "pageurl": pageurl,
        "json": 1,
    }

    # Add optional parameters for higher accuracy
    if instructions:
        payload["instructions"] = instructions
    if code:
        payload["code"] = code

    resp = requests.post(
        "https://ocr.captchaai.com/in.php",
        data=payload,
        timeout=30,
    )
    result = resp.json()

    if result.get("status") != 1:
        raise RuntimeError(f"Submit failed: {result.get('request')}")

    task_id = result["request"]

    # Poll for result
    time.sleep(10)
    for _ in range(30):
        resp = requests.get("https://ocr.captchaai.com/res.php", params={
            "key": api_key,
            "action": "get",
            "id": task_id,
            "json": 1,
        }, timeout=15)
        data = resp.json()

        if data.get("status") == 1:
            return data["request"]
        if data["request"] != "CAPCHA_NOT_READY":
            raise RuntimeError(data["request"])
        time.sleep(5)

    raise TimeoutError("BLS solve timeout")


# Usage
solution = solve_bls(
    sitekey="your-bls-sitekey",
    pageurl="https://bls-example.com/appointment",
    instructions="Select images in the correct order",
)
print(f"Solution: {solution}")

指令参数

instructions 参数告诉 CaptchaAI CAPTCHA 正在询问什么。当挑战文本未嵌入图像中时,这可以提高准确性。

# Common BLS instruction patterns:
instructions_examples = [
    "Select images in the correct order",
    "Click the images in order from left to right",
    "Arrange the images by number",
    "Select the matching image",
    "Click in the order shown",
]

# Extract instructions from the CAPTCHA image area
def get_instructions_from_page(driver):
    """Try multiple selectors to find instruction text."""
    selectors = [
        ".captcha-instructions",
        ".bls-captcha-text",
        "#captcha-prompt",
        ".challenge-text",
    ]

    for sel in selectors:
        try:
            el = driver.find_element(By.CSS_SELECTOR, sel)
            text = el.text.strip()
            if text:
                return text
        except Exception:
            continue

    return None

代码参数

code 参数指定 BLS CAPTCHA 变体。一些 BLS 实现使用由代码标识的不同质询类型。

# Detect BLS CAPTCHA code from page
def detect_bls_code(page_source):
    """Detect which BLS CAPTCHA code/type is being used."""
    patterns = [
        (r'captchaType["\']?\s*[:=]\s*["\'](\w+)', "captchaType"),
        (r'data-captcha-code["\']?\s*=\s*["\'](\w+)', "data attribute"),
        (r'bls_code["\']?\s*[:=]\s*["\'](\w+)', "bls_code"),
    ]

    for pattern, source in patterns:
        match = re.search(pattern, page_source)
        if match:
            return match.group(1)

    return None

使用 Selenium 完成 BLS 流程

# full_bls_flow.py
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
import os
import re


def solve_bls_with_selenium(url, form_data=None):
    """Complete BLS CAPTCHA flow using Selenium."""
    driver = webdriver.Chrome()
    driver.get(url)

    wait = WebDriverWait(driver, 15)

    # Fill any form fields before CAPTCHA
    if form_data:
        for field_id, value in form_data.items():
            el = wait.until(EC.presence_of_element_located((By.ID, field_id)))
            el.clear()
            el.send_keys(value)

    # Extract CAPTCHA parameters
    captcha_container = wait.until(
        EC.presence_of_element_located((By.CSS_SELECTOR, "[data-sitekey], .bls-captcha"))
    )
    sitekey = captcha_container.get_attribute("data-sitekey")

    # Get instructions
    instructions = None
    try:
        inst_el = driver.find_element(By.CSS_SELECTOR, ".captcha-instructions")
        instructions = inst_el.text.strip()
    except Exception:
        pass

    # Solve via API
    solution = solve_bls(
        sitekey=sitekey,
        pageurl=driver.current_url,
        instructions=instructions,
    )

    # Inject solution
    driver.execute_script("""
        var input = document.querySelector('input[name="captcha-response"], #captcha-response');
        if (input) {
            input.value = arguments[0];
        } else {
            var hidden = document.createElement('input');
            hidden.type = 'hidden';
            hidden.name = 'captcha-response';
            hidden.value = arguments[0];
            document.forms[0].appendChild(hidden);
        }
    """, solution)

    # Submit form
    submit_btn = driver.find_element(By.CSS_SELECTOR, "button[type='submit'], #submit")
    submit_btn.click()

    # Wait for confirmation
    wait.until(EC.url_changes(url))
    result_url = driver.current_url
    driver.quit()

    return result_url

故障排除

问题 原因 处理方式
ERROR_BAD_PARAMETERS 缺少 sitekeypageurl 验证两者均已正确提取
解决方案被拒绝 指示未通过 包含 instructions 参数以应对不明确的挑战
验证码类型错误 不是 BLS CAPTCHA 检查它是否实际上是 reCAPTCHA 或自定义类型
sitekey 未找到 动态加载 提取之前等待验证码元素呈现

常问问题

总是需要指示吗?

不会。CaptchaAI 无需指令即可解决大多数 BLS CAPTCHA。然而,传递指令可以提高模糊挑战的准确性。

如果代码参数在会话之间发生变化怎么办?

每次都重新提取。该代码可能会根据会话或地理位置而变化。

BLS CAPTCHA 解决的速度有多快?

通常为 10-20 秒。 CaptchaAI 报告 BLS CAPTCHA 的成功率为 100%。


相关指南


Master BLS CAPTCHA parameters —以 CaptchaAI 开头.

该文章已禁用评论。

相关文章

API Tutorials BLS CAPTCHA 图像顺序和网格响应处理
BLS CAPTCHA 图像顺序和网格响应处理的分步教程,具有可直接重用的示例和清晰的 Captcha AI 工作流程。

BLS CAPTCHA 图像顺序和网格响应处理的分步教程,具有可直接重用的示例和清晰的 Captcha AI 工作流程。

Apr 25, 2026
Use Cases 政府门户网站中的 BLS 验证码:处理策略
政府门户网站中的 BLS 验证码实用指南:处理策略,包含现实场景、工作流程建议以及使用 Captcha AI 的可操作步骤。

政府门户网站中的 BLS 验证码实用指南:处理策略,包含现实场景、工作流程建议以及使用 Captcha AI 的可操作步骤。

Apr 25, 2026
Tutorials BLS CAPTCHA:理解指令代码并解决
BLS CAPTCHA 分步教程:理解指令代码并解决,具有可直接重用的示例和清晰的 Captcha AI 工作流程。

BLS CAPTCHA 分步教程:理解指令代码并解决,具有可直接重用的示例和清晰的 Captcha AI 工作流程。

Apr 26, 2026