Cách giải hCaptcha tự động bằng API
Bạn Ä‘ang tìm cách giải hCaptcha để tá»± động hóa quy trình kiểm thá» (QA) form đăng nháºp, giám sát website hay thu tháºp dữ liệu được cấp phép? Câu trả lá»i ngắn gá»n: bạn không cần "click chuá»™t" thá»§ công. Thay và o đó, bạn Ä‘á»c sitekey cùng URL trang, gá»i má»™t task tá»›i API giải hcaptcha cá»§a OMOCaptcha, chá» token trả vá», rồi chèn token đó và o ô ẩn h-captcha-response để submit form. Bà i viết nà y hướng dẫn toà n bá»™ luồng token đó vá»›i code Python và Node.js hoà n chỉnh, chạy trá»±c tiếp vá»›i api.omocaptcha.com/v2.
hCaptcha là gì?
hCaptcha là má»™t dịch vụ captcha táºp trung và o quyá»n riêng tư, được xem như giải pháp thay thế cho reCAPTCHA cá»§a Google. Trước đây Cloudflare từng dùng hCaptcha là m challenge mặc định (nay đã chuyển sang Turnstile), và hCaptcha vẫn phổ biến trên rất nhiá»u website nhá» mô hình bảo vệ dữ liệu và các gói Enterprise.
Vá» mặt kỹ thuáºt, hCaptcha hoạt động dá»±a trên hai giá trị chÃnh:
- sitekey (data-sitekey): mã công khai gắn với website, nằm trong HTML của trang.
- token (h-captcha-response): chuỗi mà hCaptcha trả vỠsau khi challenge được giải, và là thứ server dùng để xác thực.
Vá»›i biến thể Enterprise, đôi khi trang còn kèm tham số rqdata (còn gá»i là enterprise payload) mà bạn cần truyá»n thêm khi tạo task.
Luồng giải hCaptcha bằng API hoạt động ra sao?
Nguyên tắc để giải hcaptcha tá»± động rất đơn giản và giống nhau cho má»i loại token captcha:
1. Äá»c thông tin: lấy websiteURL (URL trang chứa captcha) và websiteKey (chÃnh là sitekey).
2. Tạo task: gá»i POST /createTask để gá»i thông tin lên OMOCaptcha, nháºn vá» taskId.
3. Poll kết quả: gá»i POST /getTaskResult lặp lại cho tá»›i khi status trả vá» ready.
4. Inject token: Ä‘iá»n token và o ô textarea[name="h-captcha-response"] (và g-recaptcha-response nếu widget yêu cầu) rồi submit.
Toà n bá»™ HTTP status luôn là 200; thà nh công hay thất bại được quyết định bởi trưá»ng errorId (0 nghÄ©a là thà nh công), theo chuẩn envelope tương thÃch AntiCaptcha.
Lưu ý vá» task type: Và dụ dưới dùng type HCaptchaTokenTask. Äây là quy ước cho captcha dạng token; bạn hãy xác nháºn lại chuá»—i type chÃnh xác trong tà i liệu API cá»§a OMOCaptcha trước khi chạy production.
Và dụ Python (requests)
Äoạn code sau minh há»a đầy đủ cách gá»i API, poll lịch sá»± vá»›i backoff và luôn đặt timeout cho má»—i request.
import time
import requests
API_BASE = "https://api.omocaptcha.com/v2"
CLIENT_KEY = "YOUR_API_KEY"
def solve_hcaptcha(website_url: str, website_key: str, rqdata: str • None = None) -> str:
# 1) Tạo task
task = (
"type": "HCaptchaTokenTask", # Xác nháºn lại tên type trong docs OMOCaptcha
"websiteURL": website_url,
"websiteKey": website_key,
# Giữ user-agent nhất quán giữa lúc giải và lúc submit
"userAgent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36",
)
if rqdata: # hCaptcha Enterprise
task["enterprisePayload"] = ("rqdata": rqdata)
create = requests.post(
f"(API_BASE)/createTask",
json=("clientKey": CLIENT_KEY, "task": task),
timeout=30,
).json()
if create.get("errorId") != 0:
raise RuntimeError(f"createTask lá»—i: (create.get('errorCode')) - (create.get('errorDescription'))")
task_id = create["taskId"]
# 2) Poll kết quả với backoff nhẹ
delay = 3
for _ in range(24): # tối đa ~1-2 phút
time.sleep(delay)
result = requests.post(
f"(API_BASE)/getTaskResult",
json=("clientKey": CLIENT_KEY, "taskId": task_id),
timeout=30,
).json()
if result.get("errorId") != 0:
raise RuntimeError(f"getTaskResult lá»—i: (result.get('errorCode'))")
status = result.get("status")
if status == "ready":
# token thưá»ng nằm ở solution.gRecaptchaResponse vá»›i hCaptcha/reCAPTCHA
return result["solution"]["gRecaptchaResponse"]
if status == "fail":
raise RuntimeError("Task thất bại, số dư đã được hoà n lại.")
delay = min(delay + 1, 6) # tăng dần, poll lịch sự
raise TimeoutError("Hết thá»i gian chá» token hCaptcha")
if __name__ == "__main__":
token = solve_hcaptcha(
website_url="https://example.com/login",
website_key="10000000-ffff-ffff-ffff-000000000001",
)
print("hCaptcha token:", token[:40], "...")
Và dụ Node.js (fetch)
Cùng luồng đó viết bằng JavaScript/Node.js. Dùng AbortController để đảm bảo má»i request Ä‘á»u có timeout.
const API_BASE = "https://api.omocaptcha.com/v2";
const CLIENT_KEY = "YOUR_API_KEY";
async function postJSON(path, body, timeoutMs = 30000) (
const controller = new AbortController();
const t = setTimeout(() => controller.abort(), timeoutMs);
try (
const res = await fetch(`$(API_BASE)$(path)`, (
method: "POST",
headers: ( "Content-Type": "application/json" ),
body: JSON.stringify(body),
signal: controller.signal,
));
return await res.json();
) finally (
clearTimeout(t);
)
)
const sleep = (ms) => new Promise((r) => setTimeout(r, ms));
async function solveHCaptcha(websiteURL, websiteKey, rqdata) (
const task = (
type: "HCaptchaTokenTask", // Xác nháºn lại tên type trong docs OMOCaptcha
websiteURL,
websiteKey,
userAgent:
"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36",
);
if (rqdata) task.enterprisePayload = ( rqdata );
const create = await postJSON("/createTask", ( clientKey: CLIENT_KEY, task ));
if (create.errorId !== 0) (
throw new Error(`createTask lá»—i: $(create.errorCode) - $(create.errorDescription)`);
)
const taskId = create.taskId;
let delay = 3000;
for (let i = 0; i < 24; i++) (
await sleep(delay);
const result = await postJSON("/getTaskResult", (
clientKey: CLIENT_KEY,
taskId,
));
if (result.errorId !== 0) throw new Error(`getTaskResult lá»—i: $(result.errorCode)`);
if (result.status === "ready") return result.solution.gRecaptchaResponse;
if (result.status === "fail") throw new Error("Task thất bại, số dư đã hoà n lại.");
delay = Math.min(delay + 1000, 6000); // poll lịch sự
)
throw new Error("Hết thá»i gian chá» token hCaptcha");
)
solveHCaptcha("https://example.com/login", "10000000-ffff-ffff-ffff-000000000001")
.then((token) => console.log("hCaptcha token:", token.slice(0, 40), "..."))
.catch(console.error);
Chèn token và o trang
Sau khi có token, bước cuối để vượt hCaptcha là đưa nó và o DOM rồi submit. Với công cụ tự động như Playwright/Selenium:
await page.evaluate((token) => (
document.querySelector('textarea[name="h-captcha-response"]').value = token;
const g = document.querySelector('textarea[name="g-recaptcha-response"]');
if (g) g.value = token;
), token);
Nếu bạn gá»i API backend trá»±c tiếp, chỉ cần gá»i token trong tham số h-captcha-response cá»§a request.
Mẹo để tỷ lệ thà nh công cao hơn
- Giữ user-agent nhất quán: dùng cùng má»™t userAgent khi giải captcha và khi submit form. Sá»± sai lệch dá»… bị đánh dấu bất thưá»ng.
- Xá» lý rqdata cho Enterprise: nếu trang có rqdata, luôn truyá»n và o enterprisePayload. Thiếu nó token sẽ bị từ chối.
- Poll lịch sự: chỠ3-5 giây giữa các lần getTaskResult, đừng spam liên tục. Backoff nhẹ vừa nhanh vừa ổn định.
- Äúng key-binding: má»™t task bị khóa vá»›i API key đã tạo ra nó; dùng sai key sẽ trả ERROR_TASK_KEY_MISMATCH.
- Dùng token ngay: token hCaptcha có thá»i hạn ngắn (thưá»ng khoảng 2 phút), nên submit ngay sau khi nháºn.
So sánh nhanh chi phÃ
Loại captcha • Giá (USD / 1000 lượt)
hCaptcha • $0.60
reCAPTCHA v2 • $0.27
FunCaptcha (Arkose) • $0.27
GeeTest • $0.60
Cloudflare Turnstile • hỗ trợ
OMOCaptcha dùng AI thuần (không có hà ng đợi "human farm"), tốc độ giải trung bình 0.42s, độ chÃnh xác lên tá»›i 99% và rẻ hÆ¡n khoảng 20-40% so vá»›i đối thá»§ quốc tế. Xem chi tiết ở bảng giá API giải captcha (https://blog.omocaptcha.com/bang-gia-api-giai-captcha) hoặc mục pricing chÃnh thức (https://omocaptcha.com/vi#pricing).
Nếu bạn cÅ©ng cần xá» lý các loại khác, tham khảo thêm hướng dẫn cách giải reCAPTCHA (https://blog.omocaptcha.com/cach-giai-recaptcha) và giải Cloudflare Turnstile (https://blog.omocaptcha.com/giai-cloudflare-turnstile). Còn nếu Ä‘ang phân vân chá»n nhà cung cấp, Ä‘á»c bà i dịch vụ giải captcha tốt nhất (https://blog.omocaptcha.com/dich-vu-gia ... a-tot-nhat).
Lưu ý sỠdụng có trách nhiệm
Hướng dẫn nà y dà nh cho các trưá»ng hợp tá»± động hóa hợp pháp: kiểm thá» QA/regression trên form cá»§a chÃnh bạn, há»— trợ tiếp cáºn (accessibility), giám sát uptime, load testing, hay thu tháºp dữ liệu được cấp phép/hợp đồng. Hãy tôn trá»ng robots.txt, Ä‘iá»u khoản dịch vụ (ToS) và giá»›i hạn tần suất cá»§a website. Äừng dùng để tạo tà i khoản giả hà ng loạt, gian láºn hay né tránh lệnh cấm. Bạn có thể tìm hiểu thêm vá» hCaptcha tại tà i liệu chÃnh thức cá»§a hCaptcha (https://docs.hcaptcha.com/).
FAQ
Task type chÃnh xác cho hCaptcha là gì?
Và dụ trong bà i dùng HCaptchaTokenTask theo quy ước token captcha. Vì đây không phải type đã được xác nháºn cứng, bạn nên kiểm tra lại chuá»—i type chÃnh xác trong tà i liệu API cá»§a OMOCaptcha trước khi triển khai production.
Token hCaptcha nằm ở đâu trong solution?
Vá»›i hCaptcha (và reCAPTCHA), token thưá»ng nằm ở solution.gRecaptchaResponse. Má»™t số loại captcha khác trả token ở solution.token. Cứ Ä‘á»c đúng trưá»ng tương ứng sau khi status là ready.
hCaptcha Enterprise có giải được không?
ÄÆ°á»£c. Nếu trang có tham số rqdata, hãy truyá»n nó qua enterprisePayload khi tạo task. Äây là bước bắt buá»™c để token Enterprise được chấp nháºn.
Vì sao token bị từ chối dù giải thà nh công?
Nguyên nhân phổ biến nhất là user-agent không khớp giữa lúc giải và lúc submit, token hết hạn do submit quá trễ, hoặc thiếu rqdata với biến thể Enterprise.
Giá giải hcaptcha bằng python có khác Node.js không?
Không. Giá tÃnh theo số lượt giải (hCaptcha là $0.60/1000), không phụ thuá»™c ngôn ngữ. Bạn dùng hcaptcha python hay Node.js Ä‘á»u gá»i chung má»™t endpoint và chung mức giá.
Bắt đầu ngay hôm nay
Äăng ký OMOCaptcha để nháºn 1000 lượt giải miá»…n phà và tá»± động hóa hCaptcha chỉ trong và i phút vá»›i API, 6 SDK và tà i liệu đầy đủ. Nếu tá»· lệ thà nh công dưới 95%, bạn được hoà n tiá»n theo cam kết SLA.
Xem thêm hướng dẫn nhanh API giải captcha (https://blog.omocaptcha.com/huong-dan-n ... ai-captcha) để tÃch hợp trong 5 phút, hoặc truy cáºp ngay trang chá»§ OMOCaptcha (https://omocaptcha.com/vi?utm_source=bl ... um=organic). Có thắc mắc kỹ thuáºt? Email đội ngÅ© há»— trợ 24/7 tại support@omocaptcha.com.
Hướng dẫn nhanh API giải Captcha trong 5 phút
Forum rules
Mrow~!
Mrow~!
-
omocaptcharoara
Hướng dẫn nhanh API giải Captcha trong 5 phút
Last bumped by Anonymous on Sat Sep 05, 2026 7:12 am.