تستخدم BLS CAPTCHA معلمات محددة لتقديم التحدي. يعد فهم instructions وcode والتعامل مع الاستجابة أمرًا بالغ الأهمية للحل الموثوق.
مرجع المعلمة BLS CAPTCHA
| المعلمة | مطلوب | النوع | الوصف |
|---|---|---|---|
method |
نعم | سلسلة | يجب أن يكون bls |
sitekey |
نعم | سلسلة | مفتاح BLS CAPTCHA الخاص بالموقع |
pageurl |
نعم | سلسلة | عنوان URL للصفحة التي تعرض اختبار CAPTCHA |
instructions |
لا | سلسلة | تعليمات نصية من صورة CAPTCHA |
code |
لا | سلسلة | كود BLS CAPTCHA معرف /type |
json |
لا | عدد صحيح | اضبط على 1 لاستجابات JSON |
استخراج معلمات 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
استكمال تدفق 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 |
sitekey أو pageurl مفقود |
تأكد من استخراجهما بشكل صحيح |
| تم رفض الحل | لم يتم تمرير التعليمات | قم بتضمين معلمة instructions للتحديات الغامضة |
| نوع CAPTCHA خاطئ | ليس BLS CAPTCHA | تحقق مما إذا كان reCAPTCHA بالفعل أو نوعًا مخصصًا |
لم يتم العثور على sitekey |
التحميل الديناميكي | انتظر حتى يتم عرض عنصر CAPTCHA قبل الاستخراج |
الأسئلة الشائعة
هل التعليمات مطلوبة دائمًا؟
رقم CaptchaAI يمكنه حل معظم مشكلات BLS CAPTCHA بدون تعليمات. ومع ذلك، يؤدي تمرير التعليمات إلى تحسين الدقة في مواجهة التحديات الغامضة.
ماذا لو تغيرت معلمة الكود بين الجلسات؟
أعد استخراجه في كل مرة. قد يتغير الرمز بناءً على الجلسة أو الموقع الجغرافي.
ما مدى سرعة حل BLS CAPTCHA؟
عادة 10-20 ثانية. أبلغ CaptchaAI عن معدل نجاح بمعدل نجاح عالٍ لـ BLS CAPTCHA.
أدلة ذات صلة
- معلمات BLS CAPTCHA الرئيسية -ابدأ بـ CaptchaAI.*
النقاشات (0)
شارك في النقاش
سجّل الدخول لمشاركة رأيك.
تسجيل الدخوللا توجد تعليقات بعد.