CaptchaAI sử dụng định dạng API tương thích giúp việc chuyển đổi từ CapMonster Cloud trở nên đơn giản. Hầu hết các quá trình di chuyển chỉ yêu cầu thay đổi URL cơ sở và khóa API. Hướng dẫn này bao gồm các bước chính xác.
Những thay đổi gì
| thành phần | CapQuái Vật Đám Mây | 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 | Được mã hóa biểu mẫu (hoặc JSON) |
| Trường ID nhiệm vụ | taskId |
request (đáp lại) |
| Trường kết quả | Đối tượng solution |
request (chuỗi mã thông báo) |
Di chuyển nhanh: Thay đổi hai dòng
Nếu mã của bạn sử dụng trình bao bọc hoặc SDK thì đường dẫn nhanh nhất là thay thế URL và khóa cơ sở:
# 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 đủ: reCAPTCHA v2
Đám mây CapMonster (trước đây)
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)
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"])
Ánh xạ tham số
reCAPTCHA v2
| CapQuái Vật Đám Mây | CaptchaAI |
|---|---|
task.type: "RecaptchaV2TaskProxyless" |
method: "userrecaptcha" |
task.websiteKey |
googlekey |
task.websiteURL |
pageurl |
task.isInvisible: true |
invisible: "1" |
Cloudflare Turnstile
| CapQuái Vật Đám Mây | CaptchaAI |
|---|---|
task.type: "TurnstileTaskProxyless" |
method: "turnstile" |
task.websiteKey |
sitekey |
task.websiteURL |
pageurl |
CAPTCHA hình ảnh
| CapQuái Vật Đám Mây | CaptchaAI |
|---|---|
task.type: "ImageToTextTask" |
method: "base64" |
task.body |
body |
Di chuyển JavaScript
Đám mây CapMonster (trước đây)
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)
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;
Ánh xạ mã lỗi
| CapQuái Vật Đám Mây | 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 ý sự khác biệt về chính tả: CaptchaAI sử dụng CAPCHA_NOT_READY (không có chữ T).
Kiểm tra số dư
CapQuái Vật Đám Mây
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"])
Danh sách kiểm tra di chuyển
- [ ] Nhận khóa API CaptchaAI từcaptchaai.com
- [ ] Thay thế URL gửi:
api.capmonster.cloud/createTask→ocr.captchaai.com/in.php - [ ] Thay thế URL kết quả:
api.capmonster.cloud/getTaskResult→ocr.captchaai.com/res.php - [ ] Thay đổi xác thực:
clientKey→key - [] Thay đổi định dạng yêu cầu: Đối tượng tác vụ JSON → tham số được mã hóa biểu mẫu
- [ ] Cập nhật phân tích cú pháp phản hồi:
taskId→request,solution.gRecaptchaResponse→request - [ ] Xử lý lỗi cập nhật:
CAPTCHA_NOT_READY→CAPCHA_NOT_READY - [ ] Kiểm tra bằng một giải pháp duy nhất trước khi chuyển đổi lưu lượng sản xuất
Câu hỏi thường gặp
CaptchaAI có phải là giải pháp thay thế tạm thời cho CapMonster Cloud không?
Định dạng API khác nhau (mã hóa biểu mẫu so với JSON), nhưng các khái niệm đều giống nhau. Quá trình di chuyển thường mất 15-30 phút.
Tôi có thể chạy đồng thời cả hai dịch vụ trong quá trình di chuyển không?
Vâng. Định tuyến phần trăm lưu lượng truy cập đến CaptchaAI trong khi vẫn giữ CapMonster Cloud làm dự phòng, sau đó chuyển hoàn toàn sau khi bạn xác thực kết quả.
Chuyển sang CaptchaAI và bắt đầu giải trong vài phút
Nhận khóa API của bạn tạicaptchaai.com.