
Aloísio Vítor
Image Processing Expert
Publicado Sep 12, 2024
Actualizado Sep 10, 2024 · min de lectura

Cuando se realiza el raspado web, uno de los obstáculos comunes que se pueden encontrar son los desafíos de CAPTCHA. Los sitios web a menudo usan CAPTCHA para evitar que los bots accedan a su contenido. CAPTCHA (Prueba de Turing pública completamente automatizada para distinguir entre computadoras y humanos) es una técnica ampliamente utilizada para garantizar que el usuario sea humano, no un bot automatizado.
En esta guía, discutiremos los diferentes tipos de desafíos de reCAPTCHA, cómo identificarlos utilizando herramientas y, finalmente, cómo resolver múltiples desafíos de reCAPTCHA de forma concurrente usando Python y threading.
WebScraping es el proceso de extraer datos de sitios web. A menudo se utiliza para tareas como recopilar precios de sitios web de comercio electrónico, recopilar artículos de noticias o agregar información de diversas fuentes web. El raspado implica realizar solicitudes HTTP a un sitio web y analizar los datos de la respuesta. Sin embargo, muchos sitios web utilizan CAPTCHA para evitar el acceso automatizado.
reCAPTCHA V2, este tipo de CAPTCHA es el más utilizado y aparece como un desafío de "casilla de verificación" etiquetado como "No soy un robot". Puede pedirle al usuario que seleccione ciertas imágenes para verificar que es humano.

reCAPTCHA V3 funciona en segundo plano, calificando las interacciones del usuario para detectar un comportamiento similar al de un bot. Este sistema está diseñado para evitar interrumpir la experiencia del usuario proporcionando una puntuación al sitio web, que se puede utilizar para bloquear bots o requerir pasos de verificación adicionales.
reCAPTCHA invisible es una versión más fácil de usar de reCAPTCHA v2, donde el desafío solo aparece si el sistema sospecha un comportamiento similar al de un bot.

Para identificar el tipo de CAPTCHA que se utiliza en un sitio web, puede utilizar las siguientes herramientas:
Capsolver es un servicio que le permite resolver desafíos de CAPTCHA mediante programación. Para detectar parámetros de CAPTCHA:

Una vez que haya configurado Capsolver, siga estos pasos para detectar parámetros de CAPTCHA:
El detector de CAPTCHA de Capsolver puede devolver información detallada sobre reCAPTCHA:

Parámetros clave para reCAPTCHA:
URL del sitio webClave del sitiopageActionisInvisibleisEnterpriseisSRequiredisReCaptchaV3Dominio de la APIUna vez que se detecten estos parámetros, Capsolver devolverá un objeto JSON con todos los detalles necesarios para enviar el CAPTCHA a su servicio.

Cuando trabaja en proyectos de raspado web, resolver CAPTCHA puede llevar mucho tiempo, especialmente cuando necesita resolver múltiples CAPTCHA simultáneamente. Aquí se explica cómo puede automatizar la resolución de múltiples desafíos de reCAPTCHA de forma concurrente utilizando Python.
import capsolver
import threading
capsolver.api_key = "Su clave de API de Capsolver"
PAGE_URL = "PAGE_URL"
PAGE_KEY = "PAGE_SITE_KEY"
def solve_recaptcha_v2():
solution = capsolver.solve({
"type": "ReCaptchaV2TaskProxyless",
"websiteURL": PAGE_URL,
"websiteKey": PAGE_KEY,
})
return solution
def solve_recaptcha_task(result_list, index):
result = solve_recaptcha_v2()
result_list[index] = result
def solve_multiple_recaptchas(num_tasks):
threads = []
results = [None] * num_tasks
for i in range(num_tasks):
thread = threading.Thread(target=solve_recaptcha_task, args=(results, i))
threads.append(thread)
thread.start()
for thread in threads:
thread.join()
return results
def main():
num_tasks = 10 # Número de tareas simultáneas
print(f"Resolviendo {num_tasks} tareas de reCaptcha v2 simultáneamente")
solutions = solve_multiple_recaptchas(num_tasks)
for i, solution in enumerate(solutions):
print(f"Solución {i+1}: {solution}")
if __name__ == "__main__":
main()
El proceso para resolver reCAPTCHA v3 es bastante similar a v2, pero deberá ajustar el tipo de CAPTCHA en consecuencia.
```python
import capsolver
import threading
capsolver.api_key = "Su clave de API de Capsolver"
PAGE_URL = "PAGE_URL"
PAGE_KEY = "PAGE_SITE_KEY"
def solve_recaptcha_v3():
solution = capsolver.solve({
"type": "ReCaptchaV3TaskProxyless",
"websiteURL": PAGE_URL,
"websiteKey": PAGE_KEY,
})
return solution
def solve_recaptcha_task(result_list, index):
result = solve_recaptcha_v3()
result_list[index] = result
def solve_multiple_recaptchas(num_tasks):
threads = []
results = [None] * num_tasks
for i in range(num_tasks):
thread = threading.Thread(target=solve_recaptcha_task, args=(results, i))
threads.append(thread)
thread.start()
for thread in threads:
thread.join()
return results
def main():
num_tasks = 10 # Número de tareas simultáneas
print(f"Resolviendo {num_tasks} tareas de reCaptcha v3 simultáneamente")
solutions = solve_multiple_recaptchas(num_tasks)
for i, solution in enumerate(solutions):
print(f"Solución {i+1}: {solution}")
if __name__ == "__main__":
main()
El proceso para resolver reCAPTCHA v3 es bastante similar a v2, pero deberá ajustar el tipo de CAPTCHA en consecuencia.
```python
import capsolver
import threading
capsolver.api_key = "Su clave de API de Capsolver"
PAGE_URL = "PAGE_URL"
PAGE_KEY = "PAGE_SITE_KEY"
def solve_recaptcha_v3():
solution = capsolver.solve({
"type": "ReCaptchaV3TaskProxyless",
"websiteURL": PAGE_URL,
"websiteKey": PAGE_KEY,
})
return solution
def solve_recaptcha_task(result_list, index):
result = solve_recaptcha_v3()
result_list[index] = result
def solve_multiple_recaptchas(num_tasks):
threads = []
results = [None] * num_tasks
for i in range(num_tasks):
thread = threading.Thread(target=solve_recaptcha_task, args=(results, i))
threads.append(thread)
thread.start()
for thread in threads:
thread.join()
return results
def main():
num_tasks = 10 # Número de tareas simultáneas
print(f"Resolviendo {num_tasks} tareas de reCaptcha v3 simultáneamente")
solutions = solve_multiple_recaptchas(num_tasks)
for i, solution in enumerate(solutions):
print(f"Solución {i+1}: {solution}")
if __name__ == "__main__":
main()
import capsolver
# Considere el uso de variables de entorno para información confidencial
capsolver.api_key = "Su clave de API de Capsolver"
PAGE_URL_V2 = "PAGE_URL"
PAGE_KEY_V2 = "PAGE_SITE_KEY"
PAGE_URL_V3 = "PAGE_URL"
PAGE_KEY_V3 = "PAGE_SITE_KEY"
def solve_recaptcha_v2(url, key):
solution = capsolver.solve({
"type": "ReCaptchaV2TaskProxyless",
"websiteURL": url,
"websiteKey": key,
})
return solution
def solve_recaptcha_v3(url, key):
solution = capsolver.solve({
"type": "ReCaptchaV3TaskProxyless",
"websiteURL": url,
"websiteKey": key,
"minScore": 0.5 # Ajuste la puntuación mínima si es necesario
})
return solution
def main():
print("Resolviendo reCaptcha v2")
solution_v2 = solve_recaptcha_v2(PAGE_URL_V2, PAGE_KEY_V2)
print("Solución (v2): ", solution_v2)
print("Resolviendo reCaptcha v3")
solution_v3 = solve_recaptcha_v3(PAGE_URL_V3, PAGE_KEY_V3)
print("Solución (v3): ", solution_v3)
if __name__ == "__main__":
main()
Reclame su Código de bonificación para las mejores soluciones de captcha; CapSolver: scrape. Después de canjearlo, obtendrá un bono adicional del 5% después de cada recarga, Ilimitado

Para obtener más información, lea este blog
Manejar múltiples desafíos de CAPTCHA es una habilidad importante para cualquiera que trabaje en el raspado web, especialmente a medida que los sitios web aumentan sus medidas de seguridad. Con herramientas como Capsolver y el poder del threading de Python, puede automatizar de manera eficiente la resolución de desafíos de CAPTCHA, asegurando procesos de raspado más fluidos para sus proyectos.

Aloísio Vítor
Image Processing Expert
Interpreting the visual signals behind web workflows.
SOBRE EL AUTOR
Utiliza CapSolver getToken para tareas de reCAPTCHA compatibles con una solicitud JSON documentada, un ejemplo de cURL, resultados directos y pasos claros para validar el token.

Utilice claves de prueba de reCAPTCHA en QA con entornos separados, verificaciones de validación en el backend, pruebas negativas y medidas de control de lanzamiento que mantengan las configuraciones de prueba fuera de la producción.

¿Luchas con errores de 'Tráfico inusual desde tu red de computadoras' en Google? Nuestro guía explica las causas y ofrece soluciones para resolver captchas, incluyendo consejos y un vistazo a cómo CAPSOLVER.COM puede mejorar tu experiencia de navegación al resolver automáticamente estas interrupciones.

Sigue este tutorial de Make para resolver reCAPTCHA para crear un escenario HTTP de CapSolver con createTask, getTaskResult, ramas de reintentos y verificación.
