Situs web Tiongkok menggunakan jenis CAPTCHA yang jarang terlihat di pasar Barat – CAPTCHA gambar karakter Tiongkok, teka-teki aritmatika dalam bahasa Mandarin, verifikasi slide GeeTest, dan penyedia kepemilikan seperti Tencent CAPTCHA. Jika Anda mengumpulkan data dari Baidu, Taobao, portal pemerintah, atau database akademis, Anda harus menangani tantangan spesifik wilayah ini.
Jenis CAPTCHA Umum di Situs Web China
| jenis CAPTCHA | Dimana digunakan | Pemecah CaptchaAI |
|---|---|---|
| Gambar karakter Cina | Portal pemerintah, database akademik | Gambar/OCR dengan language=chi_sim |
| Aritmatika dalam bahasa Cina | Formulir pendaftaran | Gambar/OCR |
| Teka-teki geser GeeTest v3 | Baidu, Bilibili, banyak platform utama | GeeTest v3 |
| Klik pada karakter | "Klik karakter Cina secara berurutan" | Image/OCR (mode koordinat) |
| reCAPTCHA v2 | Situs internasional Tiongkok | reCAPTCHA v2 |
Python: CAPTCHA Gambar Karakter Cina
CAPTCHA gambar berbahasa Mandarin menampilkan karakter seperti 请输入验è¯ç (harap masukkan kode verifikasi) dan memerlukan OCR teks berbahasa Mandarin.
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: Alur CAPTCHA Situs Web China
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}`);
Tip untuk Scraping Situs Web Cina
| Tantangan | Solusi |
|---|---|
| Karakter ditampilkan secara tidak benar | Pastikan pengkodean UTF-8 dalam request dan respons |
| Cookie sesi diperlukan | Ambil gambar CAPTCHA dalam sesi yang sama |
| Parameter GeeTest dalam JavaScript | Ekstrak gt dan challenge dari skrip halaman atau panggilan API |
| Pembatasan tarif oleh CDN Tiongkok | Gunakan proxy dengan alamat IP Cina untuk keandalan yang lebih baik |
| CAPTCHA disegarkan pada setiap pemuatan | Unduh gambarnya sekali, selesaikan, lalu kirimkan – jangan muat ulang |
Pemecahan Masalah
| Masalah | Penyebab | Solusi |
|---|---|---|
| Hasilnya, karakter Cina kacau | Ketidakcocokan pengkodean | Pastikan respons diterjemahkan sebagai UTF-8 |
GeeTest challenge kedaluwarsa |
Tantangan memiliki TTL pendek | Ekstrak dan kirimkan dalam hitungan detik setelah memuat |
| Gambar CAPTCHA mengembalikan teks yang salah | Campuran karakter Cina dan Latin | Atur language=2 untuk pengenalan karakter Cina |
| Sesi ditolak setelah solve | Cookie tidak dipelihara | Gunakan sesi yang sama untuk pengambilan CAPTCHA dan pengiriman formulir |
| Tingkat solve rendah di situs pemerintah | Rendering karakter yang kompleks | Gambar CAPTCHA beresolusi lebih tinggi meningkatkan akurasi |
Pertanyaan Umum
Apakah CaptchaAI mendukung bahasa Mandarin yang disederhanakan dan tradisional?
Ya. Pemecah Image/OCR menangani karakter Cina yang disederhanakan (简体) dan tradisional (ç¹é«”). Atur language=2 untuk mengaktifkan pengenalan karakter Cina. CaptchaAI mengenali lebih dari 27.500 jenis gambar CAPTCHA dalam semua bahasa.
Bagaimana cara menangani GeeTest pada platform Tiongkok seperti Bilibili?
Ekstrak parameter gt (statis per situs) dan parameter challenge (dinamis per sesi) dari sumber halaman atau endpoint API. Kirimkan keduanya ke pemecah GeeTest CaptchaAI. Responsnya mencakup nilai challenge, validate, dan seccode untuk dikirimkan bersama request Anda.
Apakah proxy diperlukan untuk situs web berbahasa Mandarin?
Banyak situs web Tiongkok melakukan pemeriksaan geografis berbasis IP. Menggunakan proxy dengan alamat IP Tiongkok meningkatkan tingkat keberhasilan. Saat meneruskan proxy ke CaptchaAI, gunakan proxy perumahan Tiongkok untuk hasil terbaik.
Artikel Terkait
- Cara Mengatasi Callback Recaptcha V2 Menggunakan Api
- Mengatasi Captcha Ruby Captchaai Api
- Mengatasi Captcha Scala Captchaai Api
Langkah Selanjutnya
Mulai selesaikan CAPTCHA di situs web Tiongkok —dapatkan kunci API CaptchaAI Andadan menangani semua jenis CAPTCHA Cina.
Panduan terkait:
- Konfigurasi Kumpulan Karakter CAPTCHA Gambar Multi-Bahasa
- Lokalisasi CAPTCHA dan Pengaturan Bahasa
- Memecahkan CAPTCHA Gambar dengan CaptchaAI