Bắt Đầu

Di chuyển từ CapMonster Cloud sang CaptchaAI

Chuyển từ CapMonster Cloud sang CaptchaAI có phải viết lại cả pipeline không? Không — chỉ đổi endpoint, tên tham số và cách parse response; logic gửi task, polling, dùng token giữ nguyên. Dưới đây là ánh xạ từng bước, kèm code Python và Node.js chạy được ngay.


CapMonster Cloud và CaptchaAI khác nhau ở đâu

Điểm khác biệt chính:

Thành phần CapMonster Cloud CaptchaAI
Gửi URL https://api.capmonster.cloud/createTask https://ocr.captchaai.com/in.php
URL kết quả https://api.capmonster.cloud/getTaskResult https://ocr.captchaai.com/res.php
Thông số khóa API clientKey key
Định dạng API Nội dung JSON Form-encoded (hoặc JSON)
Trường ID task taskId request (trong response)
Trường kết quả Đối tượng solution request (chuỗi token)

Ánh xạ tham số theo từng loại CAPTCHA

Trước khi đổi code, xem nhanh ba bảng tham số cho các loại CAPTCHA phổ biến nhất:

reCAPTCHA v2

CapMonster Cloud CaptchaAI
task.type: "RecaptchaV2TaskProxyless" method: "userrecaptcha"
task.websiteKey googlekey
task.websiteURL pageurl
task.isInvisible: true invisible: "1"

Cloudflare Turnstile

CapMonster Cloud CaptchaAI
task.type: "TurnstileTaskProxyless" method: "turnstile"
task.websiteKey sitekey
task.websiteURL pageurl

CAPTCHA hình ảnh (OCR)

CapMonster Cloud CaptchaAI
task.type: "ImageToTextTask" method: "base64"
task.body body

Ánh xạ mã lỗi giữa hai API

Hầu hết mã lỗi giữ nguyên tên:

CapMonster Cloud CaptchaAI tương ứng
ERROR_KEY_DOES_NOT_EXIST ERROR_KEY_DOES_NOT_EXIST
ERROR_ZERO_BALANCE ERROR_ZERO_BALANCE
ERROR_RECAPTCHA_TIMEOUT ERROR_CAPTCHA_UNSOLVABLE
ERROR_NO_SLOT_AVAILABLE ERROR_NO_SLOT_AVAILABLE
CAPTCHA_NOT_READY CAPCHA_NOT_READY

Lưu ý: CaptchaAI dùng CAPCHA_NOT_READY (không có chữ T) — lỗi porting phổ biến nhất, dễ khiến handler cũ ném exception nhầm khi task chỉ đang chờ xử lý.


Vì sao agency QA outsourcing tại Việt Nam hay chuyển sang CaptchaAI

Nhiều team QA outsourcing ở TP.HCM, Hà Nội chạy hàng trăm test case reCAPTCHA v2, Turnstile mỗi ngày, trả phí theo task trên CapMonster Cloud — chi phí tăng gần tuyến tính vào mùa cao điểm. CaptchaAI tính phí theo thread: BASIC ($15/tháng, 5 thread) giải không giới hạn miễn còn thread rảnh, nên chạy nhiều test suite song song không phát sinh thêm phí.


Cách nhanh nhất: chỉ cần đổi 2 dòng code

Nếu bạn đang dùng wrapper hoặc SDK bọc quanh CapMonster Cloud, cách nhanh nhất là chỉ đổi URL và key gốc — phần logic gọi hàm còn lại giữ nguyên:

# Before (CapMonster Cloud)
API_URL = "https://api.capmonster.cloud"
CLIENT_KEY = "your_capmonster_key"

# After (CaptchaAI)
SUBMIT_URL = "https://ocr.captchaai.com/in.php"
RESULT_URL = "https://ocr.captchaai.com/res.php"
API_KEY = "your_captchaai_key"

Di chuyển đầy đủ cho reCAPTCHA v2: trước và sau

Luồng đầy đủ khi gọi API trực tiếp — so sánh song song:

CapMonster Cloud (trước khi đổi)

import requests
import time

resp = requests.post("https://api.capmonster.cloud/createTask", json={
    "clientKey": "CAPMONSTER_KEY",
    "task": {
        "type": "RecaptchaV2TaskProxyless",
        "websiteURL": "https://example.com",
        "websiteKey": "6Le-SITEKEY",
    }
}).json()
task_id = resp["taskId"]

while True:
    time.sleep(5)
    result = requests.post("https://api.capmonster.cloud/getTaskResult", json={
        "clientKey": "CAPMONSTER_KEY",
        "taskId": task_id,
    }).json()
    if result["status"] == "ready":
        token = result["solution"]["gRecaptchaResponse"]
        break

CaptchaAI (sau khi đổi)

import requests
import time

resp = requests.post("https://ocr.captchaai.com/in.php", data={
    "key": "YOUR_API_KEY",
    "method": "userrecaptcha",
    "googlekey": "6Le-SITEKEY",
    "pageurl": "https://example.com",
    "json": "1",
}).json()
task_id = resp["request"]

while True:
    time.sleep(5)
    result = requests.get("https://ocr.captchaai.com/res.php", params={
        "key": "YOUR_API_KEY",
        "action": "get",
        "id": task_id,
        "json": "1",
    }).json()
    if result["status"] == 1:
        token = result["request"]
        break
    if result["request"] != "CAPCHA_NOT_READY":
        raise Exception(result["request"])

Khác biệt chính: CapMonster Cloud lồng dữ liệu trong task object, CaptchaAI dùng tham số phẳng; kết quả luôn nằm ở request, không phải solution.gRecaptchaResponse.


Chuyển phần JavaScript/Node.js sang CaptchaAI

Bản Node.js dùng axios, cùng logic:

CapMonster Cloud (trước khi đổi)

const axios = require('axios');

const resp = await axios.post('https://api.capmonster.cloud/createTask', {
  clientKey: 'CAPMONSTER_KEY',
  task: {
    type: 'RecaptchaV2TaskProxyless',
    websiteURL: 'https://example.com',
    websiteKey: '6Le-SITEKEY',
  }
});
const taskId = resp.data.taskId;

CaptchaAI (sau khi đổi)

const axios = require('axios');

const resp = await axios.post('https://ocr.captchaai.com/in.php', null, {
  params: {
    key: 'YOUR_API_KEY',
    method: 'userrecaptcha',
    googlekey: '6Le-SITEKEY',
    pageurl: 'https://example.com',
    json: 1,
  }
});
const taskId = resp.data.request;

Kiểm tra số dư tài khoản

Xác nhận số dư đúng ở cả hai bên trước khi chuyển traffic thật.

CapMonster Cloud

resp = requests.post("https://api.capmonster.cloud/getBalance", json={
    "clientKey": "CAPMONSTER_KEY"
}).json()
balance = resp["balance"]

CaptchaAI

resp = requests.get("https://ocr.captchaai.com/res.php", params={
    "key": "YOUR_API_KEY",
    "action": "getbalance",
    "json": "1",
}).json()
balance = float(resp["request"])

Checklist di chuyển từng bước

Không bỏ sót bước nào:

  • [ ] Lấy API key CaptchaAI tại captchaai.com
  • [ ] Đổi submit URL: api.capmonster.cloud/createTaskocr.captchaai.com/in.php
  • [ ] Đổi result URL: api.capmonster.cloud/getTaskResultocr.captchaai.com/res.php
  • [ ] Đổi tham số xác thực: clientKeykey
  • [ ] Đổi định dạng request: JSON task object → tham số form-encoded
  • [ ] Cập nhật parse response: taskIdrequest, solution.gRecaptchaResponserequest
  • [ ] Cập nhật xử lý lỗi: CAPTCHA_NOT_READYCAPCHA_NOT_READY
  • [ ] Test với một request đơn lẻ trước khi chuyển traffic production

Câu hỏi thường gặp

CaptchaAI tính phí theo tác vụ (task) như CapMonster Cloud không?

Không. CaptchaAI tính theo thread; BASIC ($15/tháng, 5 thread) giải không giới hạn miễn còn thread trống.

Có thể chạy song song CapMonster Cloud và CaptchaAI trong lúc test không?

Có. Định tuyến một phần traffic sang CaptchaAI, giữ CapMonster Cloud làm dự phòng, rồi chuyển hẳn sau khi đối chiếu kết quả.

Ngoài reCAPTCHA v2 và Cloudflare Turnstile, CaptchaAI còn hỗ trợ loại CAPTCHA nào?

Có — còn GeeTest v3, Cloudflare Challenge, ảnh/OCR và BLS. CaptchaAI không hỗ trợ hCaptcha và FunCaptcha (Arkose Labs); kiểm tra kỹ nếu hệ thống bạn cần hai loại này.


Sẵn sàng chuyển sang CaptchaAI?

Lấy API key tại captchaai.com và chạy thử một request reCAPTCHA v2 để đối chiếu với CapMonster Cloud.


Hướng dẫn liên quan

Os comentários estão desativados para este artigo.