Las páginas de inicio de sesión son el lugar más común para encontrar CAPTCHA. Ya sea reCAPTCHA v2, v3, Turnstile o una imagen CAPTCHA, CaptchaAI resuelve el desafío mientras su automatización maneja el llenado y envío de formularios.
Tipos comunes de CAPTCHA de inicio de sesión
| CAPTCHA | Cómo aparece | Método CaptchaAI |
|---|---|---|
| reCAPTCHA v2 | Casilla de verificación o desafío antes de enviar | method=userrecaptcha |
| reCAPTCHA v3 | Puntuación invisible, bloquea a los usuarios con puntuación baja | method=userrecaptcha&version=v3 |
| Cloudflare Turnstile | Widget antes del formulario de inicio de sesión | method=turnstile |
| CAPTCHA de imagen | Imagen de texto para escribir | method=base64 |
Método 1: solicitudes HTTP (sin navegador)
Para formularios de inicio de sesión que aceptan solicitudes POST estándar:
import requests
import time
API_KEY = "YOUR_API_KEY"
def solve_recaptcha(site_key, page_url):
resp = requests.get("https://ocr.captchaai.com/in.php", params={
"key": API_KEY, "method": "userrecaptcha",
"googlekey": site_key, "pageurl": page_url
})
task_id = resp.text.split("|")[1]
for _ in range(60):
time.sleep(5)
result = requests.get("https://ocr.captchaai.com/res.php", params={
"key": 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(result.text)
raise TimeoutError()
# Login flow
session = requests.Session()
login_url = "https://staging.example.com/qa-login"
# Load login page to get cookies and site key
page = session.get(login_url)
# Extract site_key from the page HTML...
site_key = "6Le-wvkS..."
# Solve CAPTCHA
token = solve_recaptcha(site_key, login_url)
# Submit login form
resp = session.post(login_url, data={
"username": "user@example.com",
"password": "your_password",
"g-recaptcha-response": token
})
if resp.url != login_url:
print("Login successful!")
# session now has auth cookies for subsequent requests
Método 2: Selenium (Python)
Para páginas de inicio de sesión que requieren ejecución de JavaScript:
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
import requests
import time
API_KEY = "YOUR_API_KEY"
options = webdriver.ChromeOptions()
driver = webdriver.Chrome(options=options)
# Navigate to login page
driver.get("https://staging.example.com/qa-login")
wait = WebDriverWait(driver, 10)
# Fill in credentials
username_field = wait.until(EC.presence_of_element_located((By.NAME, "username")))
username_field.send_keys("user@example.com")
driver.find_element(By.NAME, "password").send_keys("your_password")
# Extract site key and solve
recaptcha = driver.find_element(By.CLASS_NAME, "g-recaptcha")
site_key = recaptcha.get_attribute("data-sitekey")
token = solve_recaptcha(site_key, driver.current_url)
# Inject token
driver.execute_script(
f"document.getElementById('g-recaptcha-response').innerHTML = '{token}';"
)
# Submit
driver.find_element(By.CSS_SELECTOR, 'button[type="submit"]').click()
wait.until(EC.url_changes(driver.current_url))
print(f"Logged in! Now at: {driver.current_url}")
Método 3: Puppeteer (Node.js)
const puppeteer = require("puppeteer");
const axios = require("axios");
const API_KEY = "YOUR_API_KEY";
async function solveRecaptcha(siteKey, pageUrl) {
const submit = await axios.get("https://ocr.captchaai.com/in.php", {
params: {
key: API_KEY,
method: "userrecaptcha",
googlekey: siteKey,
pageurl: pageUrl,
},
});
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: API_KEY, 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 () => {
const browser = await puppeteer.launch({ headless: "new" });
const page = await browser.newPage();
await page.goto("https://staging.example.com/qa-login");
// Fill credentials
await page.type("#username", "user@example.com");
await page.type("#password", "your_password");
// Get site key and solve
const siteKey = await page.$eval(".g-recaptcha", (el) =>
el.getAttribute("data-sitekey")
);
const token = await solveRecaptcha(siteKey, page.url());
// Inject and submit
await page.evaluate(
(t) => (document.getElementById("g-recaptcha-response").innerHTML = t),
token
);
await page.click('button[type="submit"]');
await page.waitForNavigation();
console.log("Logged in:", page.url());
await browser.close();
})();
Manejo de multifactor + CAPTCHA
Algunos sitios combinan CAPTCHA con autenticación multifactor:
# Step 1: Solve CAPTCHA and submit login
token = solve_recaptcha(site_key, login_url)
resp = session.post(login_url, data={
"username": "user@example.com",
"password": "your_password",
"g-recaptcha-response": token
})
# Step 2: Handle MFA page (if redirected)
if "verify" in resp.url or "mfa" in resp.url:
# Your MFA code logic here
mfa_code = get_mfa_code()
resp = session.post(resp.url, data={"code": mfa_code})
# Step 3: Verify logged in
assert "dashboard" in resp.url
Solución de problemas
| Asunto | Causa | Solución |
|---|---|---|
| Iniciar sesión regresa a la página CAPTCHA | Token caducado | Resuelva y envíe en 60 segundos |
| "Credenciales no válidas" con contraseña correcta | Falta el token CSRF | Extraiga e incluya el token CSRF de la página de inicio de sesión |
| Sesión perdida después de iniciar sesión | Las cookies no persistieron | Utilice requests.Session() o cookies del navegador |
| reCAPTCHA v3 bloquea a pesar del token | Puntuación demasiado baja | CaptchaAI optimiza para obtener puntuaciones altas; verificar el parámetro de acción |
Preguntas frecuentes
¿Puedo automatizar los inicios de sesión en cualquier sitio web?
CaptchaAI maneja el componente CAPTCHA. Su automatización debe manejar el formulario de inicio de sesión en sí (rellenar campos, enviar, administrar cookies). La legalidad depende de su autorización para acceder a la cuenta.
¿Necesito un navegador para automatizar el inicio de sesión?
No siempre. Muchas páginas de inicio de sesión aceptan solicitudes HTTP POST estándar. Utilice un navegador sólo cuando el inicio de sesión requiera la ejecución de JavaScript o interacciones complejas.
¿Cómo manejo el mantenimiento de la sesión después de iniciar sesión?
Utilice requests.Session() en Python o mantenga cookies en la instancia de su navegador. Las cookies de sesión del inicio de sesión son necesarias para todas las solicitudes autenticadas posteriores.
Guías relacionadas
- Selenium CAPTCHA con Python
- Puppeteer CAPTCHA con Node.js
- Playwright CAPTCHA handling