Entegrasyonlar

CaptchaAI Entegrasyonu ile Algılanmayan ChromeDriver

undetected-chromedriver, bot algılama sinyallerini azaltmak için Selenium'un ChromeDriver'ını yamalayan bir Python kitaplığıdır. Chrome sürüm eşleştirmesini yönetir, navigator.userAgent işaretlerini kaldırır ve sitelerin kontrol ettiği diğer tarayıcı parmak izlerini değiştirir. Bir site, gizlilik önlemlerine rağmen hala bir CAPTCHA sunduğunda, CaptchaAI bunu çözer ve sayfaya enjekte ettiğiniz bir jetonu döndürür.

Bu kılavuz, her iki aracın nasıl birleştirileceğini gösterir; gizli tarama için algılanmayan chromedriver'ı ve hala görünen CAPTCHA'lar için CaptchaAI'yi kullanın.


İhtiyacınız olan şey

Gereksinim Ayrıntılar
CaptchaAI API anahtarı captchaai.com
Python 3.8+
Chrome tarayıcı Sisteminizde yüklü

Bağımlılıkları yükleyin:

pip install undetected-chromedriver requests

Temel kurulum

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

Gizli bir oturumda reCAPTCHA v2'yi çözme

1. Adım: Site anahtarına gidin ve çıkarın

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

Adım 2: CaptchaAI ile çözün

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. Adım: Belirteci enjekte edin ve gönderin

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}");
                }}
            }}
        }}
    ''')

İş akışını tamamlayın: reCAPTCHA ile giriş yapın

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://staging.example.com/qa-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'yi Çözme

Cloudflare Turnstile widget'larına sahip siteler için site anahtarını çıkarın ve Turnstile yöntemini kullanarak çözün:

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}";
    ''')

Sorun giderme

Sorun Sebep Düzeltme
Chrome sürüm uyuşmazlığı UC eşleşen sürücüyü bulamıyor Chrome'u güncelleyin veya uc.Chrome()'de version_main'yi belirtin
CAPTCHA hala görünüyor Site gelişmiş test profil yapılandırması kullanıyor Bu beklenen bir durumdur; CaptchaAI ile çözün
Jeton enjeksiyonu başarısız oluyor Yanlış öğe kimliği veya geri arama Sayfanın reCAPTCHA uygulamasını kontrol edin
WebDriverException Chrome çöktü --no-sandbox ve --disable-dev-shm-usage'yi ekleyin

SSS

Neden algılanmayan chromedriver'ı CaptchaAI ile kullanmalısınız?

Algılanmayan krom sürücü, bot algılama sinyallerini azaltarak daha az CAPTCHA görünmesini sağlar. CAPTCHA'lar hala tetiklendiğinde CaptchaAI bunları çözer. Kombinasyon en yüksek başarı oranını verir.

Algılanmayan chromedriver headless modda çalışıyor mu?

Evet, ancak headless mod daha fazla CAPTCHA'yı tetikleyebilir. Chrome'un yeni headless modu için options.add_argument("--headless=new")'yi kullanın.

Bunu Selenium Grid ile kullanabilir miyim?

Evet, ancak algılanmayan chromedriver'ın yerel sürücü ikili dosyasına yama yapması gerekiyor. Dağıtılmış kurulumlar için her düğümdeki sürücüye önceden yama uygulayın.

Site UC'ye rağmen otomasyonu tespit ederse ne olur?

Bazı siteler, UC yamalarının ötesinde gelişmiş algılama kullanır. CaptchaAI, tespit yönteminden bağımsız olarak ortaya çıkan CAPTCHA'ları işler.


CaptchaAI'yi tarayıcı otomasyonunuza ekleyin

API anahtarınızı şu adresten alın:captchaai.com. Gizli taramayı güvenilir CAPTCHA çözümüyle birleştirin.


İlgili kılavuzlar

Bu makale için yorumlar devre dışı bırakılmıştır.