Los sitios web chinos utilizan tipos CAPTCHA que rara vez se ven en los mercados occidentales: CAPTCHA de imágenes de caracteres chinos, acertijos aritméticos en mandarín, verificaciones de diapositivas GeeTest y proveedores propietarios como Tencent CAPTCHA. Si está recopilando datos de Baidu, Taobao, portales gubernamentales o bases de datos académicas, debe manejar estos desafíos específicos de la región.
Tipos de CAPTCHA comunes en sitios web chinos
| tipo CAPTCHA | donde se usa | solucionador CaptchaAI |
|---|---|---|
| Imagen de carácter chino | Portales gubernamentales, bases de datos académicas. | Imagen/OCR con language=chi_sim |
| Aritmética en chino | Formularios de registro | Imagen/OCR |
| GeeTest v3 rompecabezas deslizante | Baidu, Bilibili, muchas plataformas importantes | GeeTest v3 |
| Hacer clic en el personaje | "Haga clic en el carácter chino en orden" | Image/OCR (modo de coordenadas) |
| reCAPTCHA v2 | Sitios chinos internacionales | reCAPTCHA v2 |
Python: CAPTCHA de imagen de caracteres chinos
Los CAPTCHA de imágenes chinas muestran caracteres como 请输入验è¯ç (ingrese el código de verificación) y requieren OCR del texto chino.
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: flujo CAPTCHA del sitio web chino
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}`);
Consejos para el scraping de sitios web chinos
| Desafío | Solución |
|---|---|
| Los caracteres se representan incorrectamente | Garantizar la codificación UTF-8 en solicitudes y respuestas. |
| Se requieren cookies de sesión | Obtener la imagen CAPTCHA dentro de la misma sesión |
| Parámetros de GeeTest en JavaScript | Extraiga gt y challenge de scripts de página o llamadas API |
| Limitación de tarifas por CDN chinos | Utilice proxies con direcciones IP chinas para una mayor confiabilidad |
| CAPTCHA se actualiza en cada carga | Descargue la imagen una vez, resuélvala y luego envíela; no la vuelva a cargar. |
Solución de problemas
| Problema | causa | Solución |
|---|---|---|
| Caracteres chinos confusos como resultado | La codificación no coincide | Asegúrese de que la respuesta esté decodificada como UTF-8 |
GeeTest challenge caducado |
El desafío tiene TTL corto | Extraiga y envíe a los pocos segundos de la carga |
| La imagen CAPTCHA devuelve texto incorrecto | Mezcla de caracteres chinos y latinos. | Configure language=2 para el reconocimiento de caracteres chinos |
| Sesión rechazada después de resolver | Cookies no mantenidas | Utilice la misma sesión para buscar CAPTCHA y enviar formularios |
| Tasa de resolución baja en sitios gubernamentales | Representación de caracteres complejos | Las imágenes CAPTCHA de mayor resolución mejoran la precisión |
Preguntas frecuentes
¿CaptchaAI admite chino simplificado y tradicional?
Sí. El solucionador Image/OCR maneja caracteres chinos simplificados (简体) y tradicionales (ç¹é«”). Configure language=2 para habilitar el reconocimiento de caracteres chinos. CaptchaAI reconoce más de 27.500 tipos de CAPTCHA de imágenes en todos los idiomas.
¿Cómo manejo GeeTest en plataformas chinas como Bilibili?
Extraiga el parámetro gt (estático por sitio) y el parámetro challenge (dinámico por sesión) del origen de la página o de un punto final de API. Envíe ambos al solucionador GeeTest de CaptchaAI. La respuesta incluye los valores challenge, validate y seccode para enviar con su solicitud.
¿Se requieren servidores proxy para los sitios web chinos?
Muchos sitios web chinos realizan comprobaciones geográficas basadas en IP. El uso de servidores proxy con direcciones IP chinas mejora las tasas de éxito. Al pasar un proxy a CaptchaAI, utilice proxies chinos residenciales para obtener mejores resultados.
Artículos relacionados
- Cómo resolver la devolución de llamada de Recaptcha V2 usando Api
- Resolviendo Captchas Ruby Captchaai Api
- Resolviendo captchas Scala Captchaai Api
Próximos pasos
Empiece a resolver CAPTCHA en sitios web chinos:obtenga su clave API CaptchaAIy manejar cualquier tipo de CAPTCHA chino.
Guías relacionadas:
- Configuración del juego de caracteres CAPTCHA de imagen en varios idiomas
- Configuración de idioma y localización CAPTCHA
- Resolver CAPTCHA de imágenes con CaptchaAI