BLS CAPTCHA sử dụng các thông số cụ thể để gửi thử thách. Hiểu instructions, code và cách xử lý phản hồi là rất quan trọng để giải quyết một cách đáng tin cậy.
Tham khảo thông số BLS CAPTCHA
| tham số | Bắt buộc | loại | Mô tả |
|---|---|---|---|
method |
Có | chuỗi | Phải là bls |
sitekey |
Có | chuỗi | Khóa BLS CAPTCHA của trang web |
pageurl |
Có | chuỗi | URL của trang hiển thị CAPTCHA |
instructions |
Không | chuỗi | Hướng dẫn văn bản từ hình ảnh CAPTCHA |
code |
Không | chuỗi | Mã BLS CAPTCHA/type mã định danh |
json |
Không | số nguyên | Đặt thành 1 cho phản hồi JSON |
Trích xuất tham số 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)
Đang gửi BLS CAPTCHA tới CaptchaAI
Đệ trình cơ bản
# 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}")
Thông số hướng dẫn
Tham số instructions cho CaptchaAI biết CAPTCHA đang yêu cầu gì. Điều này cải thiện độ chính xác khi văn bản thử thách không được nhúng vào hình ảnh.
# 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
Thông số mã
Tham số code chỉ định biến thể BLS CAPTCHA. Một số triển khai BLS sử dụng các loại thử thách khác nhau được xác định bằng mã.
# 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
Hoàn thành quy trình BLS với Selenium
# 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
Khắc phục sự cố
| Vấn đề | Nguyên nhân | Cách xử lý |
|---|---|---|
ERROR_BAD_PARAMETERS |
Thiếu sitekey hoặc pageurl |
Xác minh cả hai đều được trích xuất chính xác |
| Giải pháp bị từ chối | Hướng dẫn không được thông qua | Bao gồm tham số instructions cho những thử thách không rõ ràng |
| Loại CAPTCHA sai | Không phải là BLS CAPTCHA | Kiểm tra xem đó thực sự là reCAPTCHA hay một loại tùy chỉnh |
Không tìm thấy sitekey |
Tải động | Đợi phần tử CAPTCHA hiển thị trước khi giải nén |
Câu hỏi thường gặp
Hướng dẫn có luôn luôn cần thiết không?
Không. CaptchaAI có thể giải hầu hết các BLS CAPTCHA mà không cần hướng dẫn. Tuy nhiên, việc chuyển hướng dẫn sẽ cải thiện độ chính xác cho những thách thức không rõ ràng.
Điều gì sẽ xảy ra nếu tham số mã thay đổi giữa các phiên?
Giải nén lại nó mỗi lần. Mã có thể thay đổi dựa trên phiên hoặc vị trí địa lý.
BLS CAPTCHA giải quyết nhanh như thế nào?
Thông thường 10-20 giây. CaptchaAI báo cáo tỷ lệ thành công 100% cho BLS CAPTCHA.
Hướng dẫn liên quan
Làm chủ các thông số BLS CAPTCHA —bắt đầu với CaptchaAI.