
Adélia Cruz
Neural Network Developer

reCAPTCHA v3, el CAPTCHA invisible de Google, opera en segundo plano, analizando el comportamiento del usuario para asignar una puntuación que indica la probabilidad de actividad de bots. A diferencia de su predecesor, reCAPTCHA v2, no presenta normalmente desafíos interactivos para los usuarios. Aunque esto mejora la experiencia del usuario, introduce nuevas complejidades para la automatización web y el scraping de datos, ya que los métodos tradicionales de inyección de tokens suelen ser insuficientes o fácilmente sobrescritos.
Este artículo proporciona una guía detallada para integrar Crawl4AI, un poderoso crawler web, con CapSolver, un servicio líder para resolver CAPTCHAS, específicamente para resolver reCAPTCHA v3. Exploraremos técnicas sofisticadas, incluyendo soluciones basadas en API con enfoques de JavaScript fetch y la integración de extensiones de navegador, para garantizar una extracción de datos web fluida y confiable incluso en sitios protegidos por reCAPTCHA v3.
reCAPTCHA v3 funciona devolviendo una puntuación (entre 0.0 y 1.0) para cada solicitud sin interacción del usuario. Una puntuación de 0.0 indica una alta probabilidad de actividad de bots, mientras que 1.0 sugiere un usuario humano. Los sitios web utilizan esta puntuación para decidir si permiten la acción, presentan un desafío o bloquean la solicitud. La naturaleza invisible de reCAPTCHA v3 significa:
fetch o XMLHttpRequest.Las capacidades avanzadas de inteligencia artificial de CapSolver son cruciales para obtener tokens válidos de reCAPTCHA v3 con altas puntuaciones. Al combinarse con el control robusto del navegador de Crawl4AI, permite a los desarrolladores superar estos desafíos y mantener flujos de datos ininterrumpidos.
💡 Bonificación exclusiva para usuarios de integración de Crawl4AI:
Para celebrar esta integración, ofrecemos un código de bonificación exclusivo del 6% —CRAWL4para todos los usuarios de CapSolver que se registren a través de este tutorial.
Simplemente ingrese el código durante el recarga en Panel de control para recibir créditos adicionales del 6% de inmediato.
Evadir reCAPTCHA v3 mediante integración de API requiere un enfoque más avanzado que v2, principalmente debido a su naturaleza invisible y verificación dinámica de tokens. La estrategia clave implica obtener el token de reCAPTCHA v3 de CapSolver y luego
enlazar el método window.fetch en el navegador para reemplazar el token original de reCAPTCHA v3 con el token proporcionado por CapSolver en el momento preciso de la verificación.
gRecaptchaResponse válido y posiblemente una puntuación más alta.js_code en CrawlerRunConfig) que sobrescribe el método window.fetch.fetch. Cuando se detecta una solicitud dirigida al punto final de verificación de reCAPTCHA v3 (por ejemplo, /recaptcha-v3-verify.php), el código modifica la solicitud para incluir el token proporcionado por CapSolver en lugar de cualquier token generado por la página misma.El siguiente código de Python demuestra esta técnica avanzada para integrar la API de CapSolver con Crawl4AI para resolver reCAPTCHA v3. Este ejemplo utiliza la página de demostración de reCAPTCHA v3.
import asyncio
import capsolver
from crawl4ai import *
# TODO: configure su configuración
api_key = "CAP-xxxxxxxxxxxxxxxxxxxxx" # su clave de API de capsolver
site_key = "6LdKlZEpAAAAAAOQjzC2v_d36tWxCl6dWsozdSy9" # clave del sitio de su sitio objetivo
site_url = "https://recaptcha-demo.appspot.com/recaptcha-v3-request-scores.php" # URL de la página de su sitio objetivo
page_action = "examples/v3scores" # acción de la página de su sitio objetivo
captcha_type = "ReCaptchaV3TaskProxyLess" # tipo de CAPTCHA de su sitio objetivo
capsolver.api_key = api_key
async def main():
browser_config = BrowserConfig(
verbose=True,
headless=False,
use_persistent_context=True,
)
# obtener token de reCAPTCHA usando el SDK de capsolver
solution = capsolver.solve({
"type": captcha_type,
"websiteURL": site_url,
"websiteKey": site_key,
"pageAction": page_action,
})
token = solution["gRecaptchaResponse"]
print("token de reCAPTCHA:", token)
async with AsyncWebCrawler(config=browser_config) as crawler:
await crawler.arun(
url=site_url,
cache_mode=CacheMode.BYPASS,
session_id="session_captcha_test"
)
js_code = """
const originalFetch = window.fetch;
window.fetch = function(...args) {
if (typeof args[0] === \'string\' && args[0].includes(\'/recaptcha-v3-verify.php\')) {
const url = new URL(args[0], window.location.origin);
url.searchParams.set(\'action\', \""" + token + """\");
args[0] = url.toString();
document.querySelector(\".token\").innerHTML = \"fetch(\\'/recaptcha-v3-verify.php?action=examples/v3scores&token="""+token+"""\')\";
console.log(\'Fetch URL enlazado:\', args[0]);
}
return originalFetch.apply(this, args);
};
"""
wait_condition = """() => {
return document.querySelector(\".step3:not(.hidden)\");
}"""
run_config = CrawlerRunConfig(
cache_mode=CacheMode.BYPASS,
session_id="session_captcha_test",
js_code=js_code,
js_only=True,
wait_for=f"js:{wait_condition}"
)
result_next = await crawler.arun(
url=site_url,
config=run_config,
)
print(result_next.markdown)
if __name__ == "__main__":
asyncio.run(main())
Análisis del código:
solve de CapSolver: El método capsolver.solve se llama con el tipo ReCaptchaV3TaskProxyLess, websiteURL, websiteKey y, lo más importante, pageAction. El parámetro pageAction es crucial para reCAPTCHA v3, ya que ayuda a CapSolver a comprender el contexto del reCAPTCHA en la página y generar un token más preciso.fetch de JavaScript: El js_code es el núcleo de esta solución. Redefine window.fetch. Cuando se realiza una solicitud fetch a /recaptcha-v3-verify.php, el script la intercepta, modifica la URL para incluir el token proporcionado por CapSolver en el parámetro action y luego permite que la fetch original continúe. Esto asegura que el servidor reciba el token de alta puntuación de CapSolver.wait_for: La wait_condition asegura que Crawl4AI espere a que un elemento específico (.step3:not(.hidden)) se haga visible, indicando que el proceso de verificación de reCAPTCHA v3 se completó con éxito y que la página avanzó.Para reCAPTCHA v3, usar la extensión de navegador de CapSolver puede simplificar el proceso de integración, especialmente cuando el objetivo es aprovechar las capacidades automáticas de resolución de la extensión. La extensión está diseñada para detectar y resolver reCAPTCHA v3 en segundo plano, a menudo activada al visitar el sitio web.
user_data_dir para lanzar una instancia de navegador que mantenga la extensión de CapSolver instalada.manualSolving debe ser false (o el valor predeterminado).Este ejemplo demuestra cómo configurar Crawl4AI para usar un perfil de navegador con la extensión de CapSolver para resolver reCAPTCHA v3 automáticamente. La clave es asegurarse de que la extensión esté correctamente configurada en el user_data_dir.
import asyncio
import time
from crawl4ai import *
# TODO: configure su configuración
user_data_dir = "/browser-profile/Default1" # Asegúrese de que esta ruta esté correctamente configurada y contenga su extensión configurada
browser_config = BrowserConfig(
verbose=True,
headless=False,
user_data_dir=user_data_dir,
use_persistent_context=True,
proxy="http://127.0.0.1:13120", # Opcional: configure proxy si es necesario
)
async def main():
async with AsyncWebCrawler(config=browser_config) as crawler:
result_initial = await crawler.arun(
url="https://recaptcha-demo.appspot.com/recaptcha-v3-request-scores.php", # Use la URL de demostración de reCAPTCHA v3
cache_mode=CacheMode.BYPASS,
session_id="session_captcha_test"
)
# reCAPTCHA v3 suele resolverse automáticamente por la extensión al cargar la página.
# Es posible que necesite agregar una condición de espera o time.sleep para que el CAPTCHA se resuelva
# antes de continuar con otras acciones que dependan del token.
time.sleep(30) # Ejemplo de espera, ajuste según sea necesario para que la extensión funcione
# Continúe con otras operaciones de Crawl4AI después de que se haya resuelto el CAPTCHA
# Por ejemplo, verifique elementos o contenido que aparezcan después de una verificación exitosa
# print(result_initial.markdown) # Puede inspeccionar el contenido de la página después de la espera
if __name__ == "__main__":
asyncio.run(main())
Análisis del código:
user_data_dir: Similar a la integración de extensión de reCAPTCHA v2, este parámetro es crítico para que Crawl4AI use un perfil de navegador con una extensión de CapSolver previamente instalada y configurada. La extensión resolverá entonces la resolución de reCAPTCHA v3 automáticamente.time.sleep como ejemplo general para permitir que la extensión complete sus operaciones en segundo plano. Para soluciones más robustas, considere usar la función wait_for de Crawl4AI para verificar cambios específicos en la página que indiquen una resolución exitosa de reCAPTCHA v3.Resolver reCAPTCHA v3 en el scraping web requiere un enfoque sofisticado, dada su naturaleza invisible y mecanismos de verificación dinámicos. La integración de Crawl4AI con CapSolver proporciona herramientas poderosas para superar estos desafíos. Ya sea mediante el control preciso de la integración de API con enfoques de JavaScript fetch o la automatización simplificada ofrecida por la extensión de navegador, los desarrolladores pueden garantizar que sus operaciones de scraping web sean eficientes e ininterrumpidas.
Al aprovechar las capacidades de resolución de reCAPTCHA v3 de alta precisión de CapSolver y el control avanzado del navegador de Crawl4AI, puede mantener altas tasas de éxito en la extracción de datos de sitios protegidos por este CAPTCHA avanzado. Esta sinergia permite a los desarrolladores construir sistemas más robustos y confiables para la recolección automatizada de datos web.
¿Enfrentando errores como "reCAPTCHA Clave de sitio inválida" o "token de reCAPTCHA inválido"? Descubre las causas comunes, soluciones paso a paso y consejos de solución de problemas para resolver los errores de verificación de reCAPTCHA. Aprende cómo solucionar el error de verificación de reCAPTCHA, por favor intente de nuevo.

Aprende a resolver reCAPTCHA v2 usando Python y API. Este guía completa cubre métodos con y sin proxy con código listo para producción para automatización.
