Troubleshooting

BLS 验证码错误和故障排除

BLS CAPTCHA 求解具有独特的挑战,因为它使用自定义实现。以下是最常见的错误及其解决方案。


API提交错误

ERROR_BAD_PARAMETERS

原因: 缺少所需参数 - 说明或图像。

使固定:

# WRONG — missing instructions
response = requests.post("https://ocr.captchaai.com/in.php", data={
    "key": API_KEY, "method": "bls",
    "image_base64_1": img1, "json": 1
})

# CORRECT — include instructions
response = requests.post("https://ocr.captchaai.com/in.php", data={
    "key": API_KEY, "method": "bls",
    "instructions": "Select all images with a car",
    "image_base64_1": img1, "json": 1
})

错误_错误_文件_扩展

原因: 图像数据不是有效的 base64 或者是不受支持的格式。

使固定:

  • 确保图像是 Base64 编码的 PNG 或 JPEG
  • 删除 data:image/...;base64, 前缀
  • 验证 base64 字符串没有被截断
import base64

# Strip the data URI prefix
src = img_element.get_attribute("src")
if src.startswith("data:image"):
    b64 = src.split(",")[1]
else:
    # Download and encode
    img_data = requests.get(src).content
    b64 = base64.b64encode(img_data).decode()

ERROR_CAPTCHA_UNSOLVABLE

原因: 图像质量太低、模糊或说明不明确。

使固定:

  • 以全分辨率捕获图像
  • 确保正确提取说明文本
  • 重试——有些挑战本质上更困难

图像提取错误

图像动态加载

问题: 当页面首次加载时,图像不在 DOM 中。

修复: 等待验证码完全呈现:

from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC

# Wait for captcha images to load
WebDriverWait(driver, 10).until(
    EC.presence_of_all_elements_located((By.CSS_SELECTOR, ".captcha-image img"))
)

图像是画布,而不是 img 元素

问题: 某些 BLS 实现在 <canvas> 元素上渲染图像。

修复: 将画布数据提取为 base64:

canvas_elements = driver.find_elements(By.CSS_SELECTOR, ".captcha-canvas")
for i, canvas in enumerate(canvas_elements, 1):
    b64 = driver.execute_script(
        "return arguments[0].toDataURL('image/png').split(',')[1];",
        canvas
    )
    payload[f"image_base64_{i}"] = b64

反盗链背后的图像

问题: 在浏览器外部获取图像 URL 时返回 403。

修复: 在浏览器上下文中提取图像:

# Get image data from within the browser
b64 = driver.execute_script("""
    var img = arguments[0];
    var canvas = document.createElement('canvas');
    canvas.width = img.naturalWidth;
    canvas.height = img.naturalHeight;
    canvas.getContext('2d').drawImage(img, 0, 0);
    return canvas.toDataURL('image/png').split(',')[1];
""", img_element)

解决应用错误

选择了错误的图像

原因: 提取和显示之间的图像顺序不匹配。

修复: 保持一致的顺序:

# Ensure images are indexed in display order
captcha_imgs = driver.find_elements(By.CSS_SELECTOR, ".captcha-image img")
# The order of find_elements matches DOM order = display order
for i, img in enumerate(captcha_imgs, 1):
    payload[f"image_base64_{i}"] = extract_base64(img)

解决方案索引不匹配

原因: CaptchaAI 返回从 1 开始的索引,但您的代码使用从 0 开始的索引。

使固定:

solution = result["request"]  # e.g., "1,3,5"
indices = [int(i) for i in solution.split(",")]

# Convert to 0-based for array access
for idx in indices:
    captcha_imgs[idx - 1].click()  # 1-based → 0-based

选择正确后表单提交失败

原因: 缺少附加表单字段或标记。

修复: 检查必须与验证码一起提交的隐藏字段:

# Look for hidden captcha tokens
hidden_fields = driver.find_elements(By.CSS_SELECTOR, "input[type='hidden']")
for field in hidden_fields:
    name = field.get_attribute("name")
    value = field.get_attribute("value")
    print(f"Hidden field: {name}={value}")

超时错误

验证码在解决完成之前过期

问题: BLS CAPTCHA 的有效窗口很短。

使固定:

  • 提取图像并立即提交至CaptchaAI
  • 不要提取图像然后等待再提交
  • 如果解决时间超过 60 秒,则验证码可能已过期 - 刷新并重试

轮询时间太长

修复: 确保您轮询正确:

# Standard polling pattern
for _ in range(30):  # 30 attempts × 5 seconds = 150 seconds max
    time.sleep(5)
    result = requests.get("https://ocr.captchaai.com/res.php", params={
        "key": API_KEY, "action": "get", "id": task_id, "json": 1
    }).json()

    if result.get("status") == 1:
        return result["request"]
    if result.get("request") == "ERROR_CAPTCHA_UNSOLVABLE":
        # Don't keep polling — start over
        raise Exception("Unsolvable")

调试清单

查看 行动
提取指令? 打印并验证说明文本
图片有效吗? 将base64保存到文件并打开验证
图片计数正确吗? 比较发送的图像数量与显示的图像数量
图片顺序正确吗? 验证 DOM 顺序与显示顺序匹配
Base64 前缀被删除? 删除 data:image/...;base64,
解决方案格式? 解析以逗号分隔的基于 1 的索引
指数转换? 从 0 开始的数组访问减 1

常问问题

我应该发送多少张图像到 CaptchaAI?

发送验证码中显示的所有图像,通常为 3-9 个。使用 image_base64_1image_base64_9

如果指令是非英语怎么办?

完全按照显示的方式发送指令。 CaptchaAI 处理多语言指令。

我可以预加载图像以加快求解速度吗?

不会。BLS 每次会话都会生成唯一的图像。您必须为每个验证码实例新鲜地提取它们。

如果 BLS 更改其验证码格式怎么办?

如果格式发生变化,图像提取代码可能需要更新。 CaptchaAI API 参数(method=bls、指令、图像)将保持不变。


相关指南

该文章已禁用评论。

相关文章

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

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

Apr 26, 2026
Comparisons BLS CAPTCHA 与 reCAPTCHA Grid — 比较
BLS CAPTCHA 与 re CAPTCHA Grid 的实际比较 — 比较,重点关注 Captcha AI 的成本、准确性、速度和集成工作方面的差异。

BLS CAPTCHA 与 re CAPTCHA Grid 的实际比较 — 比较,重点关注 Captcha AI 的成本、准确性、速度和集成工作方面的差异...

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

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

Apr 25, 2026