Cómo integrar Camoufox con CapSolver para la resolución de CAPTCHA sin interrupciones

Aloísio Vítor
Image Processing Expert
16-Dec-2025
TL;DR: Usa Camoufox para evitar el fingerprinting del navegador y CapSolver para resolver automáticamente los CAPTCHAs como Cloudflare Turnstile y reCAPTCHA v2/v3. Juntos, permiten la automatización web estable y con comportamiento humano a escala con mínima detección y altas tasas de éxito.

Introducción
La automatización web se ha vuelto esencial para la recopilación de datos, pruebas y diversas operaciones empresariales. Sin embargo, los sitios web modernos implementan medidas anti-bot y CAPTCHAs sofisticados que pueden detener incluso los scripts de automatización más cuidadosamente elaborados.
La combinación de Camoufox y CapSolver proporciona una solución poderosa para este desafío:
- Camoufox: Un navegador anti-detección de código abierto basado en Firefox que evita la detección de bots mediante un spoofing avanzado de fingerprinting
- CapSolver: Un servicio de resolución de CAPTCHA impulsado por inteligencia artificial que maneja Cloudflare Turnstile, reCAPTCHA y más
Juntos, estos herramientas permiten una automatización web fluida que evita tanto la detección de fingerprinting como los desafíos de CAPTCHA.
Objetivos de la integración
Este guía te ayudará a lograr tres objetivos principales:
- Evitar la detección de bots - Usa la inyección de fingerprinting de Camoufox para parecer un navegador legítimo
- Resolver CAPTCHAs automáticamente - Integra la API de CapSolver para manejar desafíos de CAPTCHA sin intervención manual
- Mantener un comportamiento similar al humano - Combina movimientos de mouse humanizados con resolución inteligente de CAPTCHAs
¿Qué es Camoufox?
Camoufox es una versión personalizada minimalista de Firefox diseñada específicamente para scraping y automatización web. A diferencia de otras soluciones anti-detección que dependen de la inyección de JavaScript (que puede ser detectada), Camoufox implementa el spoofing de fingerprinting a nivel de C++ dentro del navegador mismo.
Características clave
- Inyección de fingerprinting - Spoofea propiedades de navigator, dimensiones de pantalla, WebGL, WebRTC, fuentes, etc., a nivel nativo
- Movimiento de mouse similar al humano - Algoritmo integrado para interacciones realistas
- Integración con BrowserForge - Genera fingerprints que imitan distribuciones de dispositivos del mundo real
- Soporte GeoIP - Calcula automáticamente zona horaria, configuración regional y geolocalización basado en la IP del proxy
- Soporte para complementos de Firefox - Carga extensiones personalizadas incluyendo bloqueadores de anuncios
Instalación
bash
# Instalar el paquete de Python
pip install -U camoufox[geoip]
# Descargar el navegador Camoufox
camoufox fetch
Uso básico
python
from camoufox.sync_api import Camoufox
with Camoufox(humanize=True) as browser:
page = browser.new_page()
page.goto("https://example.com")
¿Qué es CapSolver?
CapSolver es un servicio de resolución automática de CAPTCHA impulsado por inteligencia artificial que soporta una amplia gama de tipos de CAPTCHA. Proporciona una API sencilla que te permite enviar desafíos de CAPTCHA y recibir soluciones en segundos.
Tipos de CAPTCHA soportados
- Cloudflare Turnstile - El desafío anti-bot más común en la actualidad
- reCAPTCHA v2 - Variantes basadas en imágenes e invisibles
- reCAPTCHA v3 - Verificación basada en puntuación
- AWS WAF - CAPTCHA de Amazon Web Services
- Y muchos más...
Comenzar con CapSolver
- Regístrese en capsolver.com
- Agregue fondos a su cuenta
- Obtenga su clave de API desde el panel de control
Bonus: Use el código
CAMOUFOXal registrarse para recibir créditos adicionales!
Desafíos previos a la integración
Antes de combinar Camoufox con CapSolver, la automatización web enfrentaba varios problemas:
| Desafío | Impacto |
|---|---|
| Detección de fingerprinting de navegador | Los scripts se bloqueaban antes de llegar al contenido |
| Desafíos de CAPTCHA | Se requería resolución manual, interrumpiendo la automatización |
| Sistemas de reputación de IP | Los proxies se marcaban y prohibían rápidamente |
| Análisis de comportamiento | Patrones no humanos detectados |
La integración de Camoufox + CapSolver resuelve todos estos desafíos en un solo flujo de trabajo.
Métodos de integración
Método 1: Integración de API (Recomendado)
El enfoque de integración de API te da control total sobre el proceso de resolución de CAPTCHA y funciona con cualquier tipo de CAPTCHA.
Requisitos de configuración
bash
pip install camoufox[geoip] httpx
Patrón de integración principal
python
import asyncio
import httpx
from camoufox.async_api import AsyncCamoufox
CAPSOLVER_API_KEY = "SU_CLAVE_DE_API"
CAPSOLVER_API = "https://api.capsolver.com"
async def create_task(task_payload: dict) -> str:
"""Crear una tarea de resolución de CAPTCHA y devolver el ID de la tarea."""
async with httpx.AsyncClient() as client:
response = await client.post(
f"{CAPSOLVER_API}/createTask",
json={
"clientKey": CAPSOLVER_API_KEY,
"task": task_payload
}
)
result = response.json()
if result.get("errorId") != 0:
raise Exception(f"Error de CapSolver: {result.get('errorDescription')}")
return result["taskId"]
async def get_task_result(task_id: str, max_attempts: int = 120) -> dict:
"""Esperar el resultado de la tarea hasta que se resuelva o se agote el tiempo."""
async with httpx.AsyncClient() as client:
for _ in range(max_attempts):
response = await client.post(
f"{CAPSOLVER_API}/getTaskResult",
json={
"clientKey": CAPSOLVER_API_KEY,
"taskId": task_id
}
)
result = response.json()
if result.get("status") == "ready":
return result["solution"]
elif result.get("status") == "failed":
raise Exception(f"Tarea fallida: {result.get('errorDescription')}")
await asyncio.sleep(1)
raise TimeoutError("La resolución de CAPTCHA expiró")
async def solve_captcha(task_payload: dict) -> dict:
"""Completar el flujo de resolución de CAPTCHA."""
task_id = await create_task(task_payload)
return await get_task_result(task_id)
Método 2: Extensión del navegador
También puedes usar la extensión de CapSolver con Camoufox para un enfoque más pasivo.
Pasos de instalación
- Descargue la extensión de CapSolver desde capsolver.com/en/extension
- Extraiga los archivos de la extensión
- Cargue la extensión en Camoufox:
python
from camoufox.sync_api import Camoufox
with Camoufox(
addons=["/ruta/a/la-extensión-capsolver"],
headless=False # Las extensiones requieren modo con interfaz
) as browser:
page = browser.new_page()
# La extensión detectará y resolverá automáticamente los CAPTCHAs
Ejemplos de código
Ejemplo 1: Resolver Cloudflare Turnstile
Cloudflare Turnstile es uno de los desafíos de CAPTCHA más comunes. Así es como lo resuelves:
python
import asyncio
from camoufox.async_api import AsyncCamoufox
CAPSOLVER_API_KEY = "SU_CLAVE_DE_API"
CAPSOLVER_API = "https://api.capsolver.com"
async def solve_turnstile(site_key: str, page_url: str) -> str:
"""Resolver Cloudflare Turnstile y devolver el token."""
import httpx
async with httpx.AsyncClient() as client:
# Crear la tarea
response = await client.post(
f"{CAPSOLVER_API}/createTask",
json={
"clientKey": CAPSOLVER_API_KEY,
"task": {
"type": "AntiTurnstileTaskProxyLess",
"websiteURL": page_url,
"websiteKey": site_key,
}
}
)
task_id = response.json()["taskId"]
# Esperar el resultado
while True:
result = await client.post(
f"{CAPSOLVER_API}/getTaskResult",
json={
"clientKey": CAPSOLVER_API_KEY,
"taskId": task_id
}
)
data = result.json()
if data.get("status") == "ready":
return data["solution"]["token"]
await asyncio.sleep(1)
async def main():
target_url = "https://example.com/página-protegida"
turnstile_site_key = "0x4XXXXXXXXXXXXXXXXX" # Encuentre esto en el código fuente de la página
async with AsyncCamoufox(
humanize=True,
headless=False,
os="windows"
) as browser:
page = await browser.new_page()
await page.goto(target_url)
# Esperar a que se cargue Turnstile
await page.wait_for_selector('input[name="cf-turnstile-response"]', timeout=10000)
# Resolver el CAPTCHA
token = await solve_turnstile(turnstile_site_key, target_url)
print(f"Obtuve el token de Turnstile: {token[:50]}...")
# Inyectar el token
await page.evaluate(f'''
document.querySelector('input[name="cf-turnstile-response"]').value = "{token}";
// También establecer el callback oculto si está presente
const callback = document.querySelector('[data-callback]');
if (callback) {{
const callbackName = callback.getAttribute('data-callback');
if (window[callbackName]) {{
window[callbackName]('{token}');
}}
}}
''')
# Enviar el formulario
await page.click('button[type="submit"]')
await page.wait_for_load_state("networkidle")
print("¡Turnstile evadido con éxito!")
if __name__ == "__main__":
asyncio.run(main())
Ejemplo 2: Resolver reCAPTCHA v2
python
import asyncio
from camoufox.async_api import AsyncCamoufox
CAPSOLVER_API_KEY = "SU_CLAVE_DE_API"
CAPSOLVER_API = "https://api.capsolver.com"
async def solve_recaptcha_v2(site_key: str, page_url: str) -> str:
"""Resolver reCAPTCHA v2 y devolver el token."""
import httpx
async with httpx.AsyncClient() as client:
# Crear la tarea
response = await client.post(
f"{CAPSOLVER_API}/createTask",
json={
"clientKey": CAPSOLVER_API_KEY,
"task": {
"type": "ReCaptchaV2TaskProxyLess",
"websiteURL": page_url,
"websiteKey": site_key,
}
}
)
result = response.json()
if result.get("errorId") != 0:
raise Exception(f"Error: {result.get('errorDescription')}")
task_id = result["taskId"]
# Esperar el resultado
while True:
result = await client.post(
f"{CAPSOLVER_API}/getTaskResult",
json={
"clientKey": CAPSOLVER_API_KEY,
"taskId": task_id
}
)
data = result.json()
if data.get("status") == "ready":
return data["solution"]["gRecaptchaResponse"]
elif data.get("status") == "failed":
raise Exception(f"Falló: {data.get('errorDescription')}")
await asyncio.sleep(2)
async def main():
target_url = "https://example.com/iniciar-sesión"
recaptcha_site_key = "6LcXXXXXXXXXXXXXXXXXXXXXXXXX" # Encuentre en el código fuente de la página
async with AsyncCamoufox(
humanize=True,
headless=False,
os=["windows", "macos"] # Selección aleatoria de sistema operativo
) as browser:
page = await browser.new_page()
await page.goto(target_url)
# Rellenar campos del formulario con pausas humanas
await page.fill('input[name="nombre_de_usuario"]', "[email protected]")
await asyncio.sleep(0.5) # Pausa similar a la humana
await page.fill('input[name="contraseña"]', "contraseña123")
# Resolver el CAPTCHA
print("Resolviendo reCAPTCHA v2...")
token = await solve_recaptcha_v2(recaptcha_site_key, target_url)
print(f"Obtuve el token: {token[:50]}...")
# Inyectar el token en el campo de respuesta de reCAPTCHA
await page.evaluate(f'''
document.getElementById('g-recaptcha-response').innerHTML = '{token}';
document.getElementById('g-recaptcha-response').style.display = 'block';
''')
# Enviar el formulario
await page.click('button[type="submit"]')
await page.wait_for_load_state("networkidle")
print("¡Inicio de sesión exitoso!")
if __name__ == "__main__":
asyncio.run(main())
Ejemplo 3: Resolver reCAPTCHA v3
reCAPTCHA v3 es basado en puntuación y no requiere interacción del usuario. Debe especificar el parámetro de acción.
python
import asyncio
from camoufox.async_api import AsyncCamoufox
CAPSOLVER_API_KEY = "SU_CLAVE_DE_API"
CAPSOLVER_API = "https://api.capsolver.com"
async def solve_recaptcha_v3(
site_key: str,
page_url: str,
action: str = "verify",
min_score: float = 0.7
) -> str:
"""Resolver reCAPTCHA v3 con acción y puntuación mínima especificados."""
import httpx
async with httpx.AsyncClient() as client:
response = await client.post(
f"{CAPSOLVER_API}/createTask",
json={
"clientKey": CAPSOLVER_API_KEY,
"task": {
"type": "ReCaptchaV3TaskProxyLess",
"websiteURL": page_url,
"websiteKey": site_key,
"pageAction": action,
"minScore": min_score
}
}
)
result = response.json()
if result.get("errorId") != 0:
raise Exception(f"Error: {result.get('errorDescription')}")
task_id = result["taskId"]
while True:
result = await client.post(
f"{CAPSOLVER_API}/getTaskResult",
json={
"clientKey": CAPSOLVER_API_KEY,
"taskId": task_id
}
)
data = result.json()
if data.get("status") == "ready":
return data["solution"]["gRecaptchaResponse"]
elif data.get("status") == "failed":
raise Exception(f"Falló: {data.get('errorDescription')}")
await asyncio.sleep(1)
async def main():
target_url = "https://example.com/buscar"
recaptcha_v3_key = "6LcXXXXXXXXXXXXXXXXXXXXXXXXX"
async with AsyncCamoufox(
humanize=2.0, # Máximo 2 segundos de movimientos humanizados
headless=True, # Puede ejecutarse en modo sin interfaz para v3
geoip=True, # Detectar geolocalización automáticamente desde el proxy
) as browser:
page = await browser.new_page()
await page.goto(target_url)
# Resolver reCAPTCHA v3 con acción "buscar"
print("Resolviendo reCAPTCHA v3...")
token = await solve_recaptcha_v3(
recaptcha_v3_key,
target_url,
action="buscar",
min_score=0.9 # Solicitar una alta puntuación
)
# Ejecutar la devolución de llamada con el token
await page.evaluate(f'''
// Enviar token a través de la devolución de llamada del sitio
grecaptcha.execute('{recaptcha_v3_key}', {action: 'search'})
.then(function(tokenOriginal) {
// Reemplazar con nuestro token resuelto
submitSearch('{token}');
});
''')
print("¡reCAPTCHA v3 evadido!")
if name == "main":
asyncio.run(main())
---
## Mejores prácticas
### 1. Rotación de proxies con GeoIP
Utiliza la función GeoIP de Camoufox para que las huellas dactilares coincidan automáticamente con la ubicación de tu proxy:
```python
async with AsyncCamoufox(
geoip=True, # Detectar automáticamente desde la IP del proxy
proxy={
"server": "http://proxy.example.com:8080",
"username": "user",
"password": "pass"
}
) as browser:
# La huella dactilar coincidirá con la ubicación geográfica del proxy
pass
2. Consistencia de las huellas dactilares
Mantén las huellas dactilares consistentes dentro de una sesión pero rotalas entre sesiones:
python
from browserforge.fingerprints import Screen
# Limitar a tamaños de pantalla comunes
screen = Screen(
min_width=1280,
max_width=1920,
min_height=720,
max_height=1080
)
async with AsyncCamoufox(
os="windows",
screen=screen,
) as browser:
pass
3. Límites de velocidad
Evita activar límites de velocidad añadiendo retrasos:
python
import random
async def retrasoHumano():
"""Retraso aleatorio para imitar el comportamiento humano."""
await asyncio.sleep(random.uniform(1.0, 3.0))
# Usar entre acciones
await page.click('button')
await retrasoHumano()
await page.fill('input', 'texto')
4. Manejo de errores
Siempre implementa un manejo adecuado de errores para la resolución de CAPTCHA:
python
async def resolverConReintento(payloadTarea: dict, maxReintentos: int = 3) -> dict:
"""Resolver CAPTCHA con lógica de reintento."""
for intento in range(maxReintentos):
try:
return await resolverCAPTCHA(payloadTarea)
except TimeoutError:
if intento < maxReintentos - 1:
print(f"Tiempo de espera agotado, reintentando... ({intento + 1}/{maxReintentos})")
await asyncio.sleep(5)
else:
raise
except Exception as e:
if "saldo" in str(e).lower():
raise # No reintentar errores de saldo
if intento < maxReintentos - 1:
await asyncio.sleep(2)
else:
raise
Bonus: ¡Empieza hoy mismo!
¿Listo para potenciar tu automatización web con Camoufox y CapSolver?
Usa el código CAMOUFOX al registrarte en CapSolver para recibir créditos adicionales!

Este bono exclusivo te ayudará a comenzar con la resolución de CAPTCHA de inmediato.
Conclusión
La integración de Camoufox y CapSolver crea una herramienta poderosa para la automatización web:
- Camoufox maneja la detección de bots con suplantación de huellas dactilares a nivel nativo
- CapSolver maneja CAPTCHAs con resolución impulsada por inteligencia artificial
- Juntos permiten automatización fluida que parece completamente humana
Ya sea que estés construyendo scrapers web, sistemas de pruebas automatizadas o pipelines de recolección de datos, esta combinación ofrece la fiabilidad y el sigilo que necesitas.
Preguntas frecuentes
P: ¿Qué tipos de CAPTCHA funcionan mejor con esta integración?
R: CapSolver admite todos los tipos principales de CAPTCHA. Cloudflare Turnstile y reCAPTCHA v2/v3 tienen las tasas de éxito más altas. La integración funciona sin problemas con cualquier CAPTCHA que CapSolver admita.
P: ¿Puedo usar esto en modo headless?
R: ¡Sí! Camoufox admite el modo headless y mantiene sus capacidades de suplantación de huellas dactilares. Para reCAPTCHA v3 y CAPTCHAs basados en tokens, el modo headless funciona perfectamente. Para CAPTCHAs visibles de v2, el modo con interfaz gráfica puede dar mejores resultados.
P: ¿Cómo encuentro la clave del sitio para un CAPTCHA?
R: Búscalo en el código fuente de la página para:
- Turnstile: atributo
data-sitekeyo elementoscf-turnstile - reCAPTCHA: atributo
data-sitekeyen el divg-recaptcha
P: ¿Qué hago si la resolución de CAPTCHA falla?
R: Soluciones comunes:
- Verifica tu clave de API y tu saldo
- Asegúrate de que la clave del sitio sea correcta
- Comprueba que la URL de la página coincida con donde aparece el CAPTCHA
- Para v3, prueba ajustar el parámetro de acción y el puntaje mínimo
- Implementa lógica de reintento con retrasos
P: ¿Camoufox funciona con Selenium?
R: Camoufox está basado en Playwright, no en Selenium. Sin embargo, puedes usar el mismo patrón de integración con cualquier framework de automatización de navegadores.
Aviso de Cumplimiento: La información proporcionada en este blog es solo para fines informativos. CapSolver se compromete a cumplir con todas las leyes y regulaciones aplicables. El uso de la red de CapSolver para actividades ilegales, fraudulentas o abusivas está estrictamente prohibido y será investigado. Nuestras soluciones para la resolución de captcha mejoran la experiencia del usuario mientras garantizan un 100% de cumplimiento al ayudar a resolver las dificultades de captcha durante el rastreo de datos públicos. Fomentamos el uso responsable de nuestros servicios. Para obtener más información, visite nuestros Términos de Servicio y Política de Privacidad.
Máse

Cómo integrar Camoufox con CapSolver para la resolución de CAPTCHA sin interrupciones
Aprende cómo integrar Camoufox con CapSolver para evitar de manera confiable a gran escala Cloudflare Turnstile y reCAPTCHA.

Aloísio Vítor
16-Dec-2025

Cómo resolver CAPTCHAs en Python usando Botasaurus y CapSolver (Guía completa)
Aprende a integrar Botasaurus (marco de scraping web en Python) con la API de CapSolver para resolver automáticamente reCAPTCHA v2/v3 y Turnstile.

Aloísio Vítor
15-Dec-2025

¿Qué son los errores 402, 403, 404 y 429 en el web scraping? Una guía completa
Domine el manejo de errores de scraping web comprendiendo qué son los errores 402, 403, 404 y 429. Aprenda a corregir el error 403 Prohibido, implemente soluciones para el error 429 de limitación de tasas y maneje el código de estado 402 Requerido de pago.

Adélia Cruz
12-Dec-2025

Web Scraping Con Python: 2026 Mejores Estrategias
Aprende las tácticas top de scraping web en Python para 2026, incluyendo el manejo de contenido dinámico de JavaScript, la gestión de flujos de autenticación, resolver CAPTCHAs, identificar trampas ocultas, simular comportamiento humano, optimizar patrones de solicitud y reducir el uso de recursos en proyectos de scraping a gran escala.

Adélia Cruz
12-Dec-2025

Cómo resolver captchas al realizar scraping web con Scrapling y CapSolver
Scrapling + CapSolver permite el scraping automatizado con ReCaptcha v2/v3 y bypass de Cloudflare Turnstile.

Ethan Collins
05-Dec-2025

Raspado de web con Selenium y Python | Resolver Captcha al realizar el raspado de web
En este artículo te familiarizarás con el web scraping usando Selenium y Python, y aprenderás a resolver el Captcha involucrado en el proceso para una extracción de datos eficiente.

Rajinder Singh
04-Dec-2025

