Use Cases

Python ile CAPTCHA Kazıma: Tam Kılavuz

Python'un requests kitaplığı HTTP'yi verimli bir şekilde işler, ancak CAPTCHA'lar harici bir çözücü gerektirir. Bu kılavuz, CaptchaAI'nin Python kazıma komut dosyalarına nasıl entegre edileceğini gösterir; çoğu site için tarayıcıya gerek yoktur.

Gereksinimler

Gereksinim Ayrıntılar
Python 3.7+ Pipli
istekler pip install requests
güzelsoup4 pip install beautifulsoup4
CaptchaAI API anahtarı İtibarencaptchaai.com

CaptchaAI Yardımcı Sınıfı

Python projeleriniz için yeniden kullanılabilir bir çözücü sınıfı oluşturun:

import requests
import time

class CaptchaSolver:
    def __init__(self, api_key):
        self.api_key = api_key
        self.base = "https://ocr.captchaai.com"

    def _submit(self, params):
        params["key"] = self.api_key
        resp = requests.get(f"{self.base}/in.php", params=params)
        if not resp.text.startswith("OK|"):
            raise Exception(f"Submit error: {resp.text}")
        return resp.text.split("|")[1]

    def _poll(self, task_id, timeout=300):
        deadline = time.time() + timeout
        while time.time() < deadline:
            time.sleep(5)
            resp = requests.get(f"{self.base}/res.php", params={
                "key": self.api_key,
                "action": "get",
                "id": task_id
            })
            if resp.text == "CAPCHA_NOT_READY":
                continue
            if resp.text.startswith("OK|"):
                return resp.text.split("|")[1]
            raise Exception(f"Solve error: {resp.text}")
        raise TimeoutError("Solve timed out")

    def solve_recaptcha_v2(self, site_key, page_url):
        task_id = self._submit({
            "method": "userrecaptcha",
            "googlekey": site_key,
            "pageurl": page_url
        })
        return self._poll(task_id)

    def solve_recaptcha_v3(self, site_key, page_url, action="verify"):
        task_id = self._submit({
            "method": "userrecaptcha",
            "googlekey": site_key,
            "pageurl": page_url,
            "version": "v3",
            "action": action
        })
        return self._poll(task_id)

    def solve_turnstile(self, site_key, page_url):
        task_id = self._submit({
            "method": "turnstile",
            "sitekey": site_key,
            "pageurl": page_url
        })
        return self._poll(task_id)

    def solve_image(self, image_base64):
        task_id = self._submit({
            "method": "base64",
            "body": image_base64
        })
        return self._poll(task_id)

reCAPTCHA Korumalı Formu kazıma

from bs4 import BeautifulSoup
import requests

solver = CaptchaSolver("YOUR_API_KEY")
session = requests.Session()
session.headers.update({
    "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36"
})

# Step 1: Load the page
url = "https://example.com/search"
page = session.get(url)
soup = BeautifulSoup(page.text, "html.parser")

# Step 2: Extract the site key
recaptcha_div = soup.find("div", class_="g-recaptcha")
site_key = recaptcha_div["data-sitekey"]

# Step 3: Solve the CAPTCHA
token = solver.solve_recaptcha_v2(site_key, url)

# Step 4: Submit the form with the token
form_data = {
    "q": "search term",
    "g-recaptcha-response": token
}
result = session.post(url, data=form_data)

# Step 5: Parse the results
result_soup = BeautifulSoup(result.text, "html.parser")
items = result_soup.find_all("div", class_="result-item")
for item in items:
    print(item.text.strip())

Birden Çok Sayfayı Kazıma

CAPTCHA'ların ardındaki sayfalandırılmış sonuçlar için:

def scrape_all_pages(base_url, site_key, max_pages=10):
    solver = CaptchaSolver("YOUR_API_KEY")
    session = requests.Session()
    session.headers.update({
        "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36"
    })
    all_results = []

    for page_num in range(1, max_pages + 1):
        page_url = f"{base_url}?page={page_num}"

        # Solve CAPTCHA for each page if needed
        token = solver.solve_recaptcha_v2(site_key, page_url)

        resp = session.get(page_url, params={
            "g-recaptcha-response": token,
            "page": page_num
        })

        soup = BeautifulSoup(resp.text, "html.parser")
        items = soup.find_all("div", class_="item")

        if not items:
            break

        all_results.extend([item.text.strip() for item in items])
        print(f"Page {page_num}: {len(items)} items")

        time.sleep(2)  # Polite delay

    return all_results

Resim CAPTCHA'larını İşleme

Resim tabanlı metin CAPTCHA'ları olan siteler için:

import base64

def scrape_with_image_captcha(url):
    solver = CaptchaSolver("YOUR_API_KEY")
    session = requests.Session()

    page = session.get(url)
    soup = BeautifulSoup(page.text, "html.parser")

    # Find the CAPTCHA image
    captcha_img = soup.find("img", {"id": "captcha-image"})
    captcha_url = captcha_img["src"]

    # Download and encode the image
    img_resp = session.get(captcha_url)
    img_base64 = base64.b64encode(img_resp.content).decode()

    # Solve
    captcha_text = solver.solve_image(img_base64)

    # Submit
    form_data = {
        "captcha": captcha_text,
        "username": "user"
    }
    result = session.post(url, data=form_data)
    return result.text

Hata İşleme ve Yeniden Denemeler

Üretim kazıyıcılar için yeniden deneme mantığı ekleyin:

def solve_with_retry(solver, site_key, page_url, max_retries=3):
    for attempt in range(max_retries):
        try:
            return solver.solve_recaptcha_v2(site_key, page_url)
        except Exception as e:
            if attempt == max_retries - 1:
                raise
            print(f"Attempt {attempt + 1} failed: {e}. Retrying...")
            time.sleep(2)

Sorun giderme

Sorun Sebep Düzeltme
ERROR_WRONG_USER_KEY Geçersiz API anahtarı Anahtarı kontrol panelinden doğrulayın
ERROR_ZERO_BALANCE Fon yok Hesabınızı doldurun
Form gönderimi CAPTCHA sayfasını tekrar döndürüyor Belirtecin süresi dolmuş veya yanlış alan adı Jetonu hemen kullanın; form alanı adlarını kontrol edin
ConnectionError Ağ sorunu Üstel geri çekilmeyle yeniden deneme mantığı ekleme
Gönderildikten sonra boş sonuçlar Site çerezleri gerektiriyor/session Çerezleri korumak için requests.Session() kullanın

SSS

Python'da CAPTCHA kazıması için Selenyum'a ihtiyacım var mı?

Her zaman değil. Sitenin formu standart HTTP POST istekleriyle çalışıyorsa requests + CaptchaAI, Selenium'dan daha hızlı ve daha hafiftir. Selenium'u yalnızca site JavaScript oluşturmayı gerektirdiğinde kullanın.

CAPTCHA'ları eşzamansız olarak çözebilir miyim?

Evet. Zaman uyumsuz iş akışları için aiohttp'yi CaptchaAI API'siyle birlikte kullanın. Görmekaiohttp + CaptchaAI Entegrasyonu.

Hız sınırlamasını nasıl halledebilirim?

İstekler arasına gecikmeler ekleyin (time.sleep(2-5)), proxy'leri döndürün ve gerçekçi başlıklar kullanın. GörmekCAPTCHA Kazıma için Proxy Rotasyonu.

İlgili Kılavuzlar

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

İlgili Yazılar

Use Cases CAPTCHA Çözme ile Akademik Araştırma Web Scraping
Gerçekçi senaryolar, iş akışı tavsiyeleri ve Captcha AI kullanılarak uygulanabilir adımlarla CAPTCHA Çözme ile Akademik Araştırma Web Scraping için pratik kılav...

Gerçekçi senaryolar, iş akışı tavsiyeleri ve Captcha AI kullanılarak uygulanabilir adımlarla CAPTCHA Çözme ile...

Apr 18, 2026
Integrations Bright Data + CaptchaAI: Eksiksiz Proxy Entegrasyon Kılavuzu
Bright Data + Captcha AI entegrasyon kılavuzu: Eksiksiz Proxy Entegrasyon Kılavuzu, kurulum, kod örnekleri ve Captcha AI'ye bağlanmak için açık bir yol.

Bright Data + Captcha AI entegrasyon kılavuzu: Eksiksiz Proxy Entegrasyon Kılavuzu, kurulum, kod örnekleri ve...

Apr 27, 2026
API Tutorials BLS CAPTCHA Görüntü Sıralaması ve Izgara Yanıtını İşleme
Doğrudan yeniden kullanılabilir örnekler ve net bir Captcha AI iş akışıyla BLS CAPTCHA Görüntü Sıralaması ve Izgara Yanıtını İşleme için adım adım eğitim.

Doğrudan yeniden kullanılabilir örnekler ve net bir Captcha AI iş akışıyla BLS CAPTCHA Görüntü Sıralaması ve I...

Apr 25, 2026