Hướng dẫn này có một mục tiêu duy nhất: đưa bạn từ con số không đến lần gọi API thành công đầu tiên và nhận về token đã giải nhanh nhất có thể. Không lý thuyết, không lan man — chỉ những bước tối thiểu và mã chạy được ngay.
Mọi loại CAPTCHA mà CaptchaAI hỗ trợ đều theo cùng một mô hình bốn bước:
- Gửi — gửi thông tin CAPTCHA tới
in.php - Lưu task ID từ response
- Polling — gọi
res.phpmỗi 5 giây cho đến khi có kết quả - Dùng token — chèn vào trang hoặc request mục tiêu
Bước 0: Lấy API key
- Đăng ký tại captchaai.com
- Mở dashboard
- Sao chép API key 32 ký tự
Tài khoản của bạn cần có thread đang hoạt động để gửi task. Nếu đang đánh giá dịch vụ, liên hệ support để xin thread dùng thử.
Bước 1: Gửi một CAPTCHA
Ví dụ này giải Cloudflare Turnstile — một trong những loại phổ biến nhất. Bạn cần hai giá trị từ trang đích:
- sitekey — khóa công khai của widget Turnstile (thuộc tính
data-sitekeyhoặc tham số script Turnstile, bắt đầu bằng0x) - pageurl — URL đầy đủ của trang nơi widget được tải
cURL
curl -X POST "https://ocr.captchaai.com/in.php" \
-d "key=YOUR_API_KEY" \
-d "method=turnstile" \
-d "sitekey=0x4AAAAAAAC3DHQFLr1GavNl" \
-d "pageurl=https://staging.example.com/qa-login" \
-d "json=1"
Python
import requests
response = requests.post("https://ocr.captchaai.com/in.php", data={
"key": "YOUR_API_KEY",
"method": "turnstile",
"sitekey": "0x4AAAAAAAC3DHQFLr1GavNl",
"pageurl": "https://staging.example.com/qa-login",
"json": 1,
})
print(response.json())
Node.js
const response = await fetch("https://ocr.captchaai.com/in.php", {
method: "POST",
headers: { "Content-Type": "application/x-www-form-urlencoded" },
body: new URLSearchParams({
key: "YOUR_API_KEY",
method: "turnstile",
sitekey: "0x4AAAAAAAC3DHQFLr1GavNl",
pageurl: "https://staging.example.com/qa-login",
json: "1",
}),
});
console.log(await response.json());
PHP
<?php
$response = file_get_contents("https://ocr.captchaai.com/in.php?" . http_build_query([
"key" => "YOUR_API_KEY",
"method" => "turnstile",
"sitekey" => "0x4AAAAAAAC3DHQFLr1GavNl",
"pageurl" => "https://staging.example.com/qa-login",
"json" => 1,
]));
echo $response;
Bước 2: Lưu task ID
Response thành công:
{
"status": 1,
"request": "71823469"
}
Trường request là ID task của bạn — sẽ cần để lấy kết quả.
Nếu status bằng 0, có điều gì đó sai. Mã lỗi nằm trong request:
| Lỗi | Ý nghĩa | Cách xử lý |
|---|---|---|
ERROR_WRONG_USER_KEY |
Sai định dạng API key | Kiểm tra 32 ký tự |
ERROR_KEY_DOES_NOT_EXIST |
Không tìm thấy key | Đối chiếu với dashboard |
ERROR_ZERO_BALANCE |
Hết thread khả dụng | Nạp thêm hoặc đợi giải phóng |
ERROR_PAGEURL |
Thiếu tham số pageurl |
Bổ sung URL đầy đủ |
ERROR_WRONG_GOOGLEKEY |
sitekey rỗng hoặc sai | Trích xuất lại sitekey (Turnstile bắt đầu bằng 0x) |
Bước 3: Polling kết quả
Đợi 15 giây, sau đó polling mỗi 5 giây đến khi có kết quả.
Python
import time
time.sleep(15)
while True:
result = requests.get("https://ocr.captchaai.com/res.php", params={
"key": "YOUR_API_KEY",
"action": "get",
"id": "71823469",
"json": 1,
}).json()
if result.get("request") == "CAPCHA_NOT_READY":
time.sleep(5)
continue
if result.get("status") == 1:
token = result["request"]
print(f"Solved! Token: {token[:60]}...")
break
raise RuntimeError(result)
Node.js
await new Promise((r) => setTimeout(r, 15000));
while (true) {
const r = await fetch(
`https://ocr.captchaai.com/res.php?key=YOUR_API_KEY&action=get&id=71823469&json=1`,
);
const data = await r.json();
if (data.request === "CAPCHA_NOT_READY") {
await new Promise((r) => setTimeout(r, 5000));
continue;
}
if (data.status === 1) {
console.log("Solved:", data.request.slice(0, 60));
break;
}
throw new Error(JSON.stringify(data));
}
Bước 4: Dùng token
Cách chèn phụ thuộc loại CAPTCHA:
- Turnstile / reCAPTCHA: ghi vào
cf-turnstile-responsehoặcg-recaptcha-response, hoặc gọi callback của trang. - OCR ảnh: đặt văn bản nhận diện được vào ô nhập câu trả lời.
- GeeTest / FunCaptcha: ghép các trường trả về theo yêu cầu của site.
Cách chèn đơn giản nhất trong trình duyệt:
document.querySelector('[name="cf-turnstile-response"]').value = token;
document.querySelector("form").submit();
Lỗi thường gặp khi mới bắt đầu
- Khoảng trắng trong API key — bỏ đi.
- Thiếu giao thức trong
pageurl— phải làhttps://.... - Polling sớm quá — đợi đủ 15 giây.
- Polling quá dồn dập — 5 giây là đủ.
- Hết thread — xem Mã lỗi API và gói thread của bạn.
Bước tiếp theo
- Cách Giải reCAPTCHA v2 Bằng API: Hướng Dẫn Từng Bước
- Cách giải Cloudflare Turnstile bằng API
- Cách giải quyết GeeTest v3 bằng API
- Image Captcha Solving Using Api