Kullanım Senaryoları

CaptchaAI ile Çin Web Sitelerindeki CAPTCHA'ları Çözme

Çince web siteleri, Batı pazarlarında nadiren görülen CAPTCHA türlerini kullanır: Çince karakterli resim CAPTCHA'ları, Mandarin dilindeki aritmetik bulmacalar, GeeTest slayt doğrulamaları ve Tencent CAPTCHA gibi özel sağlayıcılar. Baidu, Taobao, devlet portalları veya akademik veritabanlarından veri topluyorsanız, bölgeye özgü bu zorlukların üstesinden gelmeniz gerekir.

Çince Web Sitelerinde Yaygın CAPTCHA Türleri

CAPTCHA türü Nerede kullanılır CaptchaAI çözücü
Çince karakter resmi Devlet portalları, akademik veritabanları Image/OCR ile language=chi_sim
Çince Aritmetik Kayıt formları Resim/OCR
GeeTest v3 slayt bulmacası Baidu, Bilibili, birçok büyük platform GeeTest v3
Karaktere tıklama "Sırayla Çince karaktere tıklayın" Image/OCR (koordinat modu)
reCAPTCHA v2 Uluslararası Çin siteleri reCAPTCHA v2

Python: Çince Karakterli Resim CAPTCHA

Çince resim CAPTCHA'ları 请输入验è¯ç  (lütfen doğrulama kodunu girin) gibi karakterleri görüntüler ve Çince metnin OCR'sini gerektirir.

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_chinese_image_captcha(image_path: str) -> str:
    """Solve a Chinese character 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,          # 2 = Chinese characters supported
        "json": 1,
    }, timeout=30).json()

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

    task_id = resp["request"]
    start = time.monotonic()

    while time.monotonic() - start < 120:
        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 failed: {poll.get('request')}")

    raise RuntimeError("Timeout")


def solve_chinese_captcha_from_url(captcha_url: str, cookies: dict = None) -> str:
    """Download and solve a Chinese CAPTCHA from a URL."""
    session = requests.Session()
    if cookies:
        session.cookies.update(cookies)

    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")


# --- GeeTest on Chinese platforms ---

def solve_geetest_chinese(gt: str, challenge: str, pageurl: str) -> dict:
    """Solve GeeTest v3 commonly found on Baidu, Bilibili, etc."""
    resp = requests.post(SUBMIT_URL, data={
        "key": API_KEY,
        "method": "geetest",
        "gt": gt,
        "challenge": challenge,
        "pageurl": pageurl,
        "json": 1,
    }, timeout=30).json()

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

    task_id = resp["request"]
    for _ in range(36):
        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:
            # GeeTest returns challenge, validate, seccode
            return poll["request"]
        raise RuntimeError(f"Solve: {poll.get('request')}")

    raise RuntimeError("Timeout")


# Usage — Chinese government portal
text = solve_chinese_image_captcha("chinese_captcha.png")
print(f"Chinese CAPTCHA text: {text}")

# GeeTest on a Chinese platform
geetest_result = solve_geetest_chinese(
    gt="b46d1900d0a894591f1561f8c35670a7",
    challenge="dynamic_challenge_string",
    pageurl="https://www.example.cn/login",
)

JavaScript: Çince Web Sitesi CAPTCHA Akışı

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

async function solveGeeTest(gt, challenge, pageurl) {
  const body = new URLSearchParams({
    key: API_KEY,
    method: "geetest",
    gt,
    challenge,
    pageurl,
    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 < 36; 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");
}

// Usage
const text = await solveChineseImageCaptcha("chinese_captcha.png");
console.log(`Chinese text: ${text}`);

Çince Web Sitesini Kazımaya Yönelik İpuçları

Mücadele Çözüm
Karakterler yanlış işleniyor İsteklerde ve yanıtlarda UTF-8 kodlamasını sağlayın
Oturum çerezleri gerekli CAPTCHA görüntüsünü aynı oturumda getir
JavaScript'te GeeTest parametreleri gt ve challenge'yi sayfa komut dosyalarından veya API çağrılarından çıkarın
Çin CDN'leri tarafından hız sınırlaması Daha iyi güvenilirlik için Çin IP adreslerine sahip proxy'ler kullanın
CAPTCHA her yüklemede yenilenir Resmi bir kez indirin, çözün ve gönderin; yeniden yüklemeyin

Sorun giderme

Sorun Sebep Düzeltme
Sonuçta bozuk Çince karakterler Kodlama uyuşmazlığı Yanıtın kodunun UTF-8 olarak çözüldüğünden emin olun
GeeTest challenge'nin süresi doldu Mücadelenin kısa TTL'si var Yüklemeden birkaç saniye sonra çıkartın ve gönderin
Resim CAPTCHA yanlış metin döndürüyor Çince ve Latin karakterlerin karışımı Çince karakter tanıma için language=2'yi ayarlayın
Çözümden sonra oturum reddedildi Çerezler saklanmıyor CAPTCHA alma ve form gönderme için aynı oturumu kullanın
Hükümet sitelerinde düşük oranı çözme Karmaşık karakter oluşturma Daha yüksek çözünürlüklü CAPTCHA görüntüleri doğruluğu artırır

SSS

CaptchaAI basitleştirilmiş ve geleneksel Çinceyi destekliyor mu?

Evet. Image/OCR çözücü hem basitleştirilmiş (简体) hem de geleneksel (ç¹é«”) Çince karakterleri işler. Çince karakter tanımayı etkinleştirmek için language=2'yi ayarlayın. CaptchaAI, tüm dillerde 27.500'den fazla resim CAPTCHA türünü tanır.

Bilibili gibi Çin platformlarında GeeTest'i nasıl yönetirim?

gt parametresini (site başına statik) ve challenge parametresini (oturum başına dinamik) sayfa kaynağından veya bir API uç noktasından çıkarın. Her ikisini de CaptchaAI'nin GeeTest çözücüsüne gönderin. Yanıt, isteğinizle birlikte göndereceğiniz challenge, validate ve seccode değerlerini içerir.

Çince web siteleri için proxy gerekli mi?

Birçok Çin web sitesi IP tabanlı coğrafi kontroller gerçekleştirmektedir. Çin IP adreslerine sahip proxy'lerin kullanılması başarı oranlarını artırır. CaptchaAI'ye bir proxy aktarırken, en iyi sonuçları elde etmek için yerleşik Çin proxy'lerini kullanın.

İlgili Makaleler

Sonraki Adımlar

Çin web sitelerindeki CAPTCHA'ları çözmeye başlayın —CaptchaAI API anahtarınızı alınve herhangi bir Çince CAPTCHA türünü kullanın.

İlgili kılavuzlar:

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