Os bots de automação lidam com tarefas repetíveis: envio de formulários, criação de contas, entrada de dados, monitoramento. CAPTCHAs interrompem esses fluxos de trabalho. CaptchaAI resolve CAPTCHAs programaticamente para que seus bots sejam executados sem intervenção humana.
Cenários comuns de automação
| Cenário | CAPTCHA típico | Método CaptchaAI |
|---|---|---|
| Envio de formulário | reCAPTCHA v2 | method=userrecaptcha |
| Registro de conta | reCAPTCHA v2/v3 | method=userrecaptcha |
| Portais de entrada de dados | Imagem CAPTCHA | method=base64 |
| Reserva/reservation | Cloudflare Turnstile | method=turnstile |
| Acesso ao gateway de API | Cloudflare Turnstile em staging | method=turnstile_staging |
Estrutura genérica de bot
Crie uma estrutura de bot reutilizável para solução de CAPTCHA:
import requests
import time
import logging
logger = logging.getLogger(__name__)
class CaptchaBot:
def __init__(self, api_key):
self.api_key = api_key
self.session = requests.Session()
self.session.headers.update({
"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36"
})
def solve(self, method, **params):
"""Solve any CAPTCHA type."""
params["key"] = self.api_key
params["method"] = method
resp = requests.get("https://ocr.captchaai.com/in.php", params=params)
if not resp.text.startswith("OK|"):
raise Exception(f"Submit error: {resp.text}")
task_id = resp.text.split("|")[1]
logger.info(f"Task submitted: {task_id}")
for _ in range(60):
time.sleep(5)
result = requests.get("https://ocr.captchaai.com/res.php", params={
"key": self.api_key, "action": "get", "id": task_id
})
if result.text == "CAPCHA_NOT_READY": continue
if result.text.startswith("OK|"): return result.text.split("|")[1]
raise Exception(f"Error: {result.text}")
raise TimeoutError("CAPTCHA solve timed out")
def submit_form(self, url, form_data, captcha_field="g-recaptcha-response",
site_key=None, captcha_method="userrecaptcha"):
"""Submit a form with CAPTCHA solving."""
if site_key:
if captcha_method == "userrecaptcha":
token = self.solve(captcha_method, googlekey=site_key, pageurl=url)
elif captcha_method == "turnstile":
token = self.solve(captcha_method, sitekey=site_key, pageurl=url)
form_data[captcha_field] = token
return self.session.post(url, data=form_data)
Exemplo: bot de envio de formulário
bot = CaptchaBot("YOUR_API_KEY")
# Submit a contact form protected by reCAPTCHA
result = bot.submit_form(
url="https://example.com/contact",
form_data={
"name": "John Doe",
"email": "john@example.com",
"message": "Inquiry about your service"
},
site_key="6Le-wvkS...",
captcha_method="userrecaptcha"
)
print(f"Form submitted: {result.status_code}")
Exemplo: bot de fluxo de trabalho de várias etapas
def appointment_booking_bot(date, time_slot, user_info):
bot = CaptchaBot("YOUR_API_KEY")
# Step 1: Load booking page
page = bot.session.get("https://example.com/book")
# Step 2: Select date and time
resp = bot.session.post("https://example.com/book/select", data={
"date": date,
"time": time_slot
})
# Step 3: Fill personal info with CAPTCHA
result = bot.submit_form(
url="https://example.com/book/confirm",
form_data={
"name": user_info["name"],
"email": user_info["email"],
"phone": user_info["phone"],
"date": date,
"time": time_slot
},
site_key="6Le-wvkS...",
captcha_method="userrecaptcha"
)
return result.status_code == 200
# Run
success = appointment_booking_bot(
date="2025-02-15",
time_slot="10:00",
user_info={"name": "John Doe", "email": "john@example.com", "phone": "555-0100"}
)
Exemplo: Bot de entrada de dados com imagem CAPTCHA
import base64
def data_entry_bot(entries, captcha_image_url):
bot = CaptchaBot("YOUR_API_KEY")
for entry in entries:
# Load the form page
page = bot.session.get("https://portal.example.com/entry")
# Download and solve image CAPTCHA
img = bot.session.get(captcha_image_url)
img_b64 = base64.b64encode(img.content).decode()
captcha_text = bot.solve("base64", body=img_b64)
# Submit entry
resp = bot.session.post("https://portal.example.com/entry", data={
**entry,
"captcha": captcha_text
})
logger.info(f"Entry submitted: {resp.status_code}")
time.sleep(random.uniform(2, 5))
Estrutura de bot Node.js.
const axios = require("axios");
class CaptchaBot {
constructor(apiKey) {
this.apiKey = apiKey;
}
async solve(method, params) {
params.key = this.apiKey;
params.method = method;
const submit = await axios.get("https://ocr.captchaai.com/in.php", {
params,
});
const taskId = submit.data.split("|")[1];
while (true) {
await new Promise((r) => setTimeout(r, 5000));
const result = await axios.get("https://ocr.captchaai.com/res.php", {
params: { key: this.apiKey, action: "get", id: taskId },
});
if (result.data === "CAPCHA_NOT_READY") continue;
if (result.data.startsWith("OK|")) return result.data.split("|")[1];
throw new Error(result.data);
}
}
async submitForm(url, formData, siteKey, method = "userrecaptcha") {
const token = await this.solve(method, {
googlekey: siteKey,
pageurl: url,
});
formData["g-recaptcha-response"] = token;
return axios.post(url, new URLSearchParams(formData));
}
}
// Usage
const bot = new CaptchaBot("YOUR_API_KEY");
const result = await bot.submitForm(
"https://example.com/submit",
{ name: "John", email: "john@example.com" },
"6Le-wvkS..."
);
Solução de problemas
| Problema | Correção |
|---|---|
| Token CAPTCHA rejeitado | Use o token dentro de 120 segundos após a resolução |
| Bot detectado apesar do token válido | Adicione cabeçalhos controle de QAs e solicite atrasos |
| O formulário requer campos adicionais | Inspecione a origem do formulário em busca de campos ocultos (tokens CSRF) |
| Taxa limitada em envios repetidos | Adicione atrasos e alterne proxies |
Perguntas frequentes
Os bots de automação podem lidar com qualquer tipo de CAPTCHA?
Com CaptchaAI, sim. A API oferece suporte a reCAPTCHA (todas as versões), Cloudflare Turnstile, GeeTest, hCaptcha, CAPTCHAs de imagem e muito mais. Sua estrutura de bot só precisa detectar o tipo e chamar o método correto.
Como executo bots 24/7?
Use ferramentas de agendamento (cron, Task Scheduler, systemd) ou implante em funções de nuvem. A API CaptchaAI está disponível 24/7 com 99,9%+ tempo de atividade.
E os bots que precisam lidar com anti-bots além dos CAPTCHAs?
Combine CaptchaAI com navegadores controle de QAs (undetected-chromedriver, puppeteer-extra). CaptchaAI lida com a camada CAPTCHA; ferramentas controle de QAs lidam com a detecção de impressões digitais.
Guias Relacionados
- Tratamento automatizado de CAPTCHA de login
- Scripts de automação CAPTCHA
- Manipulação de CAPTCHA do dramaturgo