Use Cases

CaptchaAI ile Arapça ve RTL CAPTCHA Kullanımı

Arapça, Farsça ve İbranice web siteleri, standart OCR ve metin enjeksiyonuna meydan okuyan sağdan sola (RTL) komut dosyalarıyla CAPTCHA'lar sunar. Arapça karakterler konuma (başlangıç, orta, son veya izole formlar) göre farklı şekilde bağlanır ve bu da resim CAPTCHA'sının tanınmasını zorlaştırır. Öğe konumlandırmasını etkileyen RTL sayfa düzenleriyle birleştiğinde bu sitelerin özel bir şekilde ele alınması gerekir.

RTL CAPTCHA Zorlukları

Mücadele Detay
Karakter bağlantısı Arap harfleri bitişik karakterlere göre şekil değiştirir
Sağdan sola okuma CAPTCHA'daki metin sağdan sola okunur
Karışık yön ANayırlar ve Latince metinlerin Arapça ile karışımı (çift yönlü)
Aksan işaretleri /below karakterlerin üzerindeki noktalar ve işaretler (شاين vs ساين)
RTL sayfa düzeni Form öğeleri ve CAPTCHA yerleşimi LTR'den farklıdır

Python: Arapça Resim CAPTCHA

import requests
import base64
import time

API_KEY = "YOUR_API_KEY"
SUBMIT_URL = "https://ocr.captchaai.com/in.php"
RESULT_URL = "https://ocr.captchaai.com/res.php"


def solve_arabic_captcha(image_path: str) -> str:
    """Solve an Arabic script image CAPTCHA."""
    with open(image_path, "rb") as f:
        image_b64 = base64.b64encode(f.read()).decode()

    resp = requests.post(SUBMIT_URL, data={
        "key": API_KEY,
        "method": "base64",
        "body": image_b64,
        "language": 2,          # Non-Latin character support
        "json": 1,
    }, timeout=30).json()

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

    task_id = resp["request"]
    for _ in range(24):
        time.sleep(5)
        poll = requests.get(RESULT_URL, params={
            "key": API_KEY, "action": "get", "id": task_id, "json": 1,
        }, timeout=15).json()

        if poll.get("request") == "CAPCHA_NOT_READY":
            continue
        if poll.get("status") == 1:
            return poll["request"]
        raise RuntimeError(f"Solve: {poll.get('request')}")

    raise RuntimeError("Timeout")


def solve_arabic_captcha_from_url(session: requests.Session,
                                   captcha_url: str) -> str:
    """Download and solve an Arabic CAPTCHA from a URL."""
    resp = session.get(captcha_url, timeout=15)
    image_b64 = base64.b64encode(resp.content).decode()

    submit = requests.post(SUBMIT_URL, data={
        "key": API_KEY,
        "method": "base64",
        "body": image_b64,
        "language": 2,
        "json": 1,
    }, timeout=30).json()

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

    task_id = submit["request"]
    for _ in range(24):
        time.sleep(5)
        poll = requests.get(RESULT_URL, params={
            "key": API_KEY, "action": "get", "id": task_id, "json": 1,
        }, timeout=15).json()

        if poll.get("request") == "CAPCHA_NOT_READY":
            continue
        if poll.get("status") == 1:
            return poll["request"]
        raise RuntimeError(f"Solve: {poll.get('request')}")

    raise RuntimeError("Timeout")


# --- RTL-aware form submission ---

def submit_form_with_arabic_captcha(
    form_url: str,
    captcha_url: str,
    form_data: dict,
    captcha_field: str = "captcha",
) -> requests.Response:
    """Complete an Arabic website form with CAPTCHA."""
    session = requests.Session()
    session.headers.update({
        "Accept-Language": "ar-SA,ar;q=0.9",
        "Content-Type": "application/x-www-form-urlencoded; charset=UTF-8",
    })

    # Load the form page to establish session
    session.get(form_url, timeout=15)

    # Solve the CAPTCHA
    captcha_text = solve_arabic_captcha_from_url(session, captcha_url)
    print(f"Arabic CAPTCHA solved: {captcha_text}")

    # Submit with the solved text
    form_data[captcha_field] = captcha_text
    response = session.post(form_url, data=form_data, timeout=30)

    return response


# --- Usage ---

# Simple Arabic image CAPTCHA
text = solve_arabic_captcha("arabic_captcha.png")
print(f"Arabic text: {text}")

# Form submission on Arabic site
response = submit_form_with_arabic_captcha(
    form_url="https://example.sa/registration",
    captcha_url="https://example.sa/captcha/generate",
    form_data={
        "name": "اسم المستخدم",
        "email": "user@example.com",
    },
)

JavaScript: Arapça ve RTL CAPTCHA

const API_KEY = "YOUR_API_KEY";
const SUBMIT_URL = "https://ocr.captchaai.com/in.php";
const RESULT_URL = "https://ocr.captchaai.com/res.php";
const fs = require("fs");

async function solveArabicCaptcha(imagePath) {
  const imageB64 = fs.readFileSync(imagePath, "base64");

  const body = new URLSearchParams({
    key: API_KEY,
    method: "base64",
    body: imageB64,
    language: "2",
    json: "1",
  });

  const resp = await (await fetch(SUBMIT_URL, { method: "POST", body })).json();
  if (resp.status !== 1) throw new Error(`Submit: ${resp.request}`);

  const taskId = resp.request;
  for (let i = 0; i < 24; i++) {
    await new Promise((r) => setTimeout(r, 5000));
    const url = `${RESULT_URL}?key=${API_KEY}&action=get&id=${taskId}&json=1`;
    const poll = await (await fetch(url)).json();
    if (poll.request === "CAPCHA_NOT_READY") continue;
    if (poll.status === 1) return poll.request;
    throw new Error(`Solve: ${poll.request}`);
  }
  throw new Error("Timeout");
}

// Inject CAPTCHA token into RTL page with Playwright
async function solveAndInjectRTL(page) {
  // RTL pages may position the CAPTCHA differently
  const captchaImg = await page.locator("img[id*='captcha'], img[class*='captcha']");
  const imgSrc = await captchaImg.getAttribute("src");

  // Download the image
  const buffer = await (await fetch(imgSrc)).arrayBuffer();
  const imageB64 = Buffer.from(buffer).toString("base64");

  // Solve
  const body = new URLSearchParams({
    key: API_KEY, method: "base64", body: imageB64,
    language: "2", json: "1",
  });
  const resp = await (await fetch(SUBMIT_URL, { method: "POST", body })).json();
  if (resp.status !== 1) throw new Error(`Submit: ${resp.request}`);

  const taskId = resp.request;
  for (let i = 0; i < 24; i++) {
    await new Promise((r) => setTimeout(r, 5000));
    const url = `${RESULT_URL}?key=${API_KEY}&action=get&id=${taskId}&json=1`;
    const poll = await (await fetch(url)).json();
    if (poll.request === "CAPCHA_NOT_READY") continue;
    if (poll.status === 1) {
      // Fill the input — RTL input handles text direction automatically
      await page.locator("input[name*='captcha']").fill(poll.request);
      return poll.request;
    }
    throw new Error(`Solve: ${poll.request}`);
  }
}

// Usage
const text = await solveArabicCaptcha("arabic_captcha.png");
console.log(`Arabic text: ${text}`);

Desteklenen RTL Komut Dosyaları

Senaryo Diller Örnek karakterler
Arapça Arapça, Urduca, Peştuca عربي - أبجدية
Farsça/Persian Farsça ÙØ§Ø±Ø³ÛŒ - ØØ±ÙˆÙ
İbranice İbranice ×¢×'רית - ×ותיות

Sorun giderme

Sorun Sebep Düzeltme
Çıktıda ters çevrilmiş Arapça metin İstemci RTL metnini LTR olarak görüntülüyor Çıktıyı \u202B'ye sarın (RTL yerleştirme) veya RTL uyumlu ekranı kullanın
Aksan işaretleri eksik Düşük çözünürlüklü görüntü Daha yüksek çözünürlüklü CAPTCHA görselleri kullanın
Çift yönlü metin (Arapça+sayılar) karışık BiDi algoritması tutarsız bir şekilde uygulandı Yön karakterlerini Unicode işaretleyicilerle açıkça işleyin
Form gönderimi Arapça girişle başarısız oluyor Kodlama uyuşmazlığı İçerik Türü başlığında charset=UTF-8 kullanın
CAPTCHA konumu beklenenden farklı RTL düzeni öğe konumlarını yansıtır Konuma dayalı algılama yerine CSS seçicileri kullanın

SSS

CaptchaAI bağlantılı Arap alfabesini işliyor mu?

Evet. Arapça karakterler bitişik olduklarında bağlanırlar; aynı harf, bir kelimedeki konumuna bağlı olarak farklı görünür.CaptchaAI'nin Image/OCR çözücüsü, başlangıç, orta, son ve izole harf formları dahil olmak üzere bağlantılı Arap alfabesini tanır.

Farsça CAPTCHA'ları ve Arapça CAPTCHA'ları nasıl hallederim?

Her ikisi de Arap alfabesini kullanıyor ancak ek karakterler içeriyor (Farsça'da Ù¾, Ú†, Ú˜, Ú¯ gibi). Her ikisi için de language=2 kullanın. CaptchaAI genişletilmiş karakter setini otomatik olarak tanır.

RTL sayfa düzenleri CAPTCHA algılamayı etkiler mi?

RTL düzenleri sayfayı yansıtır; formlar ve CAPTCHA'lar, LTR sayfalarına kıyasla zıt kenarlarda görünebilir. CAPTCHA öğelerini bulmak için görsel konuma güvenmek yerine CSS seçicilerini veya kimliklerini kullanın.

Sonraki Adımlar

Arapça ve RTL web sitelerindeki CAPTCHA'ları çözün —CaptchaAI API anahtarınızı alınve herhangi bir RTL karakter kümesini işleyin.

İlgili kılavuzlar:

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

İlgili Yazılar

Use Cases CAPTCHA İşleme ile Otomatik Form Gönderimi
Gerçekçi senaryolar, iş akışı tavsiyeleri ve Captcha AI kullanılarak uygulanabilir adımlarla CAPTCHA İşleme ile Otomatik Form Gönderimi için pratik kılavuz.

Gerçekçi senaryolar, iş akışı tavsiyeleri ve Captcha AI kullanılarak uygulanabilir adımlarla CAPTCHA İşleme il...

Apr 21, 2026
Integrations CaptchaAI ile QA için tarayıcı profili izolasyonu
Staging QA testlerini temiz ve tekrarlanabilir tutmak için çerezleri, storage verilerini, test hesaplarını ve CAPTCHA yapılandırmalarını tarayıcı profiline göre...

Staging QA testlerini temiz ve tekrarlanabilir tutmak için çerezleri, storage verilerini, test hesaplarını ve...

Apr 29, 2026
DevOps & Scaling CAPTCHA Çözme Altyapısı için Mavi-Yeşil Dağıtım
Üretimdeki Captcha AI iş akışlarına yönelik mimari kararları, işletim hususlarını ve otomasyon modellerini içeren CAPTCHA Çözme Altyapısı için Mavi-Yeşil Dağıtı...

Üretimdeki Captcha AI iş akışlarına yönelik mimari kararları, işletim hususlarını ve otomasyon modellerini içe...

Apr 27, 2026