CaptchaAI usa um formato de API compatível que facilita a mudança do CapMonster Cloud. A maioria das migrações exige apenas a alteração do URL base e da chave de API. Este guia cobre as etapas exatas.
O que muda
| Componente | Nuvem CapMonster | CaptchaAI |
|---|---|---|
| Enviar URL | https://api.capmonster.cloud/createTask |
https://ocr.captchaai.com/in.php |
| URL de resultado | https://api.capmonster.cloud/getTaskResult |
https://ocr.captchaai.com/res.php |
| Parâmetro da chave API | clientKey |
key |
| Formato API | Corpo JSON | Codificado em formulário (ou JSON) |
| Campo ID da tarefa | taskId |
request (em resposta) |
| Campo de resultado | Objeto solution |
request (sequência de token) |
Migração rápida: altere duas linhas
Se o seu código usa um wrapper ou SDK, o caminho com menor latência é substituir o URL base e a chave:
# 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"
Migração completa: reCAPTCHA v2
Nuvem CapMonster (antes)
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 (depois)
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"])
Mapeamento de parâmetros
reCAPTCHA v2
| Nuvem CapMonster | CaptchaAI |
|---|---|
task.type: "RecaptchaV2TaskProxyless" |
method: "userrecaptcha" |
task.websiteKey |
googlekey |
task.websiteURL |
pageurl |
task.isInvisible: true |
invisible: "1" |
Cloudflare Turnstile
| Nuvem CapMonster | CaptchaAI |
|---|---|
task.type: "TurnstileTaskProxyless" |
method: "turnstile" |
task.websiteKey |
sitekey |
task.websiteURL |
pageurl |
Imagem CAPTCHA
| Nuvem CapMonster | CaptchaAI |
|---|---|
task.type: "ImageToTextTask" |
method: "base64" |
task.body |
body |
Migração JavaScript
Nuvem CapMonster (antes)
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 (depois)
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;
Mapeamento de código de erro
| Nuvem CapMonster | Equivalente a CaptchaAI |
|---|---|
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 |
Observe a diferença ortográfica: CaptchaAI usa CAPCHA_NOT_READY (sem T).
Verificação de saldo
Nuvem CapMonster
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"])
Lista de verificação de migração
- [] Obtenha a chave API CaptchaAI decaptchaai.com
- [] Substitua o URL de envio:
api.capmonster.cloud/createTask→ocr.captchaai.com/in.php - [] Substituir URL de resultado:
api.capmonster.cloud/getTaskResult→ocr.captchaai.com/res.php - [] Alterar autenticação:
clientKey→key - [] Alterar formato de solicitação: objeto de tarefa JSON → parâmetros codificados em formulário
- [] Atualizar análise de resposta:
taskId→request,solution.gRecaptchaResponse→request - [] Tratamento de erros de atualização:
CAPTCHA_NOT_READY→CAPCHA_NOT_READY - [] Teste com uma única solução antes de mudar o tráfego de produção
Perguntas frequentes
CaptchaAI é um substituto imediato para CapMonster Cloud?
O formato da API é diferente (codificado por formulário versus JSON), mas os conceitos são os mesmos. A migração normalmente leva de 15 a 30 minutos.
Posso executar os dois serviços simultaneamente durante a migração?
Sim. Direcione uma porcentagem do tráfego para CaptchaAI enquanto mantém o CapMonster Cloud como substituto e, em seguida, mude totalmente depois de validar os resultados.
Mude para CaptchaAI e comece a resolver em minutos
Obtenha sua chave API emcaptchaai.com.