التكاملات

برنامج ChromeDriver غير المكتشف مع تكامل CaptchaAI

undetected-chromedriver هي مكتبة Python تعمل على تصحيح برنامج ChromeDriver الخاص بـ Selenium لتقليل إشارات اكتشاف الروبوتات. فهو يتعامل مع مطابقة إصدار Chrome، ويزيل علامات navigator.webdriver، ويعدل بصمات المتصفح الأخرى التي تتحقق منها المواقع. عندما لا يزال الموقع يقدم اختبار CAPTCHA على الرغم من إجراءات التخفي، فإن CaptchaAI يحل المشكلة ويعيد رمزًا مميزًا تقوم بإدخاله في الصفحة.

يوضح هذا الدليل كيفية الجمع بين كلتا الأداتين - استخدم برنامج chromedriver الذي لم يتم اكتشافه للتصفح الخفي وCaptchaAI لأي اختبار CAPTCHA لا يزال يظهر.


ما تحتاجه

المتطلبات التفاصيل
مفتاح CaptchaAI API captchaai.com
بايثون 3.8+
متصفح كروم مثبتة على النظام الخاص بك

تثبيت التبعيات:

pip install undetected-chromedriver requests

الإعداد الأساسي

import undetected_chromedriver as uc
import requests
import time


def create_stealth_browser():
    """Create an undetected Chrome browser instance."""
    options = uc.ChromeOptions()
    options.add_argument("--no-sandbox")
    options.add_argument("--window-size=1920,1080")

    driver = uc.Chrome(options=options)
    return driver

حل reCAPTCHA v2 في جلسة التخفي

الخطوة 1: انتقل واستخرج مفتاح الموقع

API_KEY = "YOUR_API_KEY"


def extract_recaptcha_sitekey(driver):
    """Extract reCAPTCHA v2 sitekey from the page."""
    try:
        element = driver.find_element("css selector", "[data-sitekey]")
        return element.get_attribute("data-sitekey")
    except Exception:
        # Try finding in iframe src
        iframes = driver.find_elements("css selector", "iframe[src*='recaptcha']")
        for iframe in iframes:
            src = iframe.get_attribute("src")
            if "k=" in src:
                return src.split("k=")[1].split("&")[0]
    return None

الخطوة 2: حل باستخدام CaptchaAI

def solve_recaptcha_v2(sitekey, pageurl):
    """Submit reCAPTCHA v2 to CaptchaAI and return the token."""
    submit = requests.post("https://ocr.captchaai.com/in.php", data={
        "key": API_KEY,
        "method": "userrecaptcha",
        "googlekey": sitekey,
        "pageurl": pageurl,
        "json": 1
    }).json()

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

    task_id = submit["request"]

    time.sleep(20)
    for _ in range(30):
        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") != "CAPCHA_NOT_READY":
            raise RuntimeError(f"Solve error: {result['request']}")
        time.sleep(5)

    raise TimeoutError("Solve timed out")

الخطوة 3: أدخل الرمز المميز وأرسله

def inject_recaptcha_token(driver, token):
    """Inject the solved token into the page and submit."""
    driver.execute_script(f'''
        document.getElementById("g-recaptcha-response").innerHTML = "{token}";
        document.getElementById("g-recaptcha-response").style.display = "block";
    ''')

    # If there's a callback function, trigger it
    driver.execute_script(f'''
        if (typeof ___grecaptcha_cfg !== 'undefined') {{
            var clients = ___grecaptcha_cfg.clients;
            for (var key in clients) {{
                var client = clients[key];
                if (client && client.callback) {{
                    client.callback("{token}");
                }}
            }}
        }}
    ''')

سير العمل الكامل: قم بتسجيل الدخول باستخدام reCAPTCHA

import undetected_chromedriver as uc
import requests
import time

API_KEY = "YOUR_API_KEY"


def solve_recaptcha(sitekey, pageurl):
    submit = requests.post("https://ocr.captchaai.com/in.php", data={
        "key": API_KEY, "method": "userrecaptcha",
        "googlekey": sitekey, "pageurl": pageurl, "json": 1
    }).json()

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

    task_id = submit["request"]
    time.sleep(20)

    for _ in range(30):
        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") != "CAPCHA_NOT_READY":
            raise RuntimeError(f"Solve error: {result['request']}")
        time.sleep(5)
    raise TimeoutError("Solve timed out")


def main():
    driver = uc.Chrome()

    try:
        # Navigate to target page
        driver.get("https://example.com/login")
        time.sleep(3)

        # Fill in form fields
        driver.find_element("id", "username").send_keys("user")
        driver.find_element("id", "password").send_keys("pass")

        # Extract sitekey
        element = driver.find_element("css selector", "[data-sitekey]")
        sitekey = element.get_attribute("data-sitekey")
        pageurl = driver.current_url
        print(f"Sitekey: {sitekey}")

        # Solve CAPTCHA
        token = solve_recaptcha(sitekey, pageurl)
        print(f"Token: {token[:50]}...")

        # Inject token
        driver.execute_script(
            f'document.getElementById("g-recaptcha-response").innerHTML = "{token}";'
        )

        # Submit form
        driver.find_element("id", "submit-btn").click()
        time.sleep(3)

        print(f"Current URL: {driver.current_url}")
    finally:
        driver.quit()


if __name__ == "__main__":
    main()

حل Cloudflare Turnstile

بالنسبة للمواقع التي تحتوي على عناصر واجهة المستخدم Cloudflare Turnstile، قم باستخراج مفتاح الموقع وحل المشكلة عبر طريقة Turnstile:

def solve_turnstile(sitekey, pageurl):
    submit = requests.post("https://ocr.captchaai.com/in.php", data={
        "key": API_KEY, "method": "turnstile",
        "sitekey": sitekey, "pageurl": pageurl, "json": 1
    }).json()

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

    task_id = submit["request"]
    time.sleep(10)

    for _ in range(30):
        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") != "CAPCHA_NOT_READY":
            raise RuntimeError(f"Solve error: {result['request']}")
        time.sleep(5)
    raise TimeoutError("Solve timed out")


# Inject Turnstile token
def inject_turnstile_token(driver, token):
    driver.execute_script(f'''
        var input = document.querySelector('[name="cf-turnstile-response"]');
        if (input) input.value = "{token}";
    ''')

استكشاف الأخطاء وإصلاحها

المشكلة السبب الإجراء
إصدار Chrome غير متطابق لا يمكن لجامعة كاليفورنيا العثور على برنامج التشغيل المطابق قم بتحديث Chrome أو حدد version_main في uc.Chrome()
لا يزال اختبار CAPTCHA يظهر يستخدم الموقع البصمات المتقدمة هذا أمر متوقع - قم بحله باستخدام CaptchaAI
فشل حقن الرمز المميز معرف العنصر أو رد الاتصال خاطئ تحقق من تنفيذ reCAPTCHA للصفحة
WebDriverException لقد تعطل كروم إضافة --no-sandbox و--disable-dev-shm-usage

الأسئلة الشائعة

لماذا تستخدم برنامج التشغيل الكرومي الذي لم يتم اكتشافه مع CaptchaAI؟

يعمل برنامج Chromedriver غير المكتشف على تقليل إشارات الكشف عن الروبوتات، وبالتالي يظهر عدد أقل من اختبارات CAPTCHA. عندما يستمر تشغيل اختبارات CAPTCHA، يقوم CaptchaAI بحلها. المزيج يعطي أعلى نسبة نجاح.

هل يعمل برنامج التشغيل الكرومي الذي لم يتم اكتشافه في وضع مقطوعة الرأس؟

نعم، ولكن الوضع بدون رأس قد يؤدي إلى تشغيل المزيد من اختبارات CAPTCHA. استخدم options.add_argument("--headless=new") لوضع مقطوعة الرأس الجديد في Chrome.

هل يمكنني استخدام هذا مع شبكة السيلينيوم؟

نعم، ولكن يحتاج برنامج التشغيل الكرومي الذي لم يتم اكتشافه إلى تصحيح برنامج التشغيل الثنائي المحلي. بالنسبة للإعدادات الموزعة، قم بتصحيح برنامج التشغيل مسبقًا على كل عقدة.

ماذا لو اكتشف الموقع الأتمتة على الرغم من UC؟

تستخدم بعض المواقع اكتشافًا متقدمًا يتجاوز تصحيحات UC. يعالج CaptchaAI اختبارات CAPTCHA الناتجة بغض النظر عن طريقة الكشف.


أضف CaptchaAI إلى أتمتة المتصفح الخاص بك

احصل على مفتاح API الخاص بك علىcaptchaai.com. اجمع بين التصفح الخفي وحل اختبار CAPTCHA الموثوق.


أدلة ذات صلة

التعليقات غير مفعّلة لهذا المقال.