Los robots de automatización manejan tareas repetibles: envío de formularios, creación de cuentas, ingreso de datos, monitoreo. Los CAPTCHA interrumpen estos flujos de trabajo. CaptchaAI resuelve los CAPTCHA mediante programación para que sus bots se ejecuten sin intervención humana.
Escenarios comunes de automatización
| Escenario | CAPTCHA típico | Método CaptchaAI |
|---|---|---|
| Envío de formulario | reCAPTCHA v2 | method=userrecaptcha |
| Registro de cuenta | reCAPTCHA v2/v3 | method=userrecaptcha |
| Portales de entrada de datos | CAPTCHA de imagen | method=base64 |
| Reserva/reservation | Cloudflare Turnstile | method=turnstile |
| Acceso a la puerta de enlace API | Cloudflare Challenge | method=cloudflare_challenge |
Marco de bot genérico
Cree un marco de bot reutilizable para resolver 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)
Ejemplo: Bot de envío de formularios
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}")
Ejemplo: bot de flujo de trabajo de varios pasos
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"}
)
Ejemplo: Bot de entrada de datos con imagen 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))
Marco de bots de 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..."
);
Solución de problemas
| Problema | Solución |
|---|---|
| Token CAPTCHA rechazado | Use el token dentro de los 120 segundos posteriores a la resolución |
| Bot detectado a pesar de token válido | Agregue encabezados ocultos y solicite retrasos |
| El formulario requiere campos adicionales | Inspeccionar el origen del formulario en busca de campos ocultos (tokens CSRF) |
| Tarifa limitada en envíos repetidos | Agregar retrasos y rotar proxies |
Preguntas frecuentes
¿Pueden los robots de automatización manejar cualquier tipo de CAPTCHA?
Con CaptchaAI, sí. La API admite reCAPTCHA (todas las versiones), Cloudflare Turnstile, GeeTest, hCaptcha, CAPTCHA de imágenes y más.
¿Cómo ejecuto los bots 24/7?
Utilice herramientas de programación (cron, Programador de tareas, systemd) o implemente funciones en la nube. La API CaptchaAI está disponible las 24 /7 con un tiempo de actividad superior al 99,9 %.
¿Qué pasa con los bots que necesitan manejar anti-bot más allá de los CAPTCHA?
Combina CaptchaAI con navegadores stealth (undetected-chromedriver, puppeteer-extra-stealth). CaptchaAI maneja la capa CAPTCHA; las herramientas stealth se encargan de la detección de fingerprinting.
Guías relacionadas
- Inicio de sesión automatizado con CAPTCHA
- Scripts de automatización CAPTCHA
- Playwright CAPTCHA handling