Join And Get Free Trial!

Cómo evitar reCaptcha v3 en Python con un ejemplo de código#

logoNextCaptcha
August 01,2024

Descripción general#

La automatización de las interacciones con sitios web puede agilizar enormemente las pruebas y las tareas repetitivas. Sin embargo, un problema que surge con frecuencia es el reconocimiento de reCAPTCHA, que tiene como objetivo diferenciar entre usuarios humanos y bots. Esta guía le mostrará cómo resolver los desafíos de reCAPTCHA v3 utilizando Python y el servicio NextCaptcha, que utiliza solucionadores humanos para manejar estos CAPTCHA de manera ética y legal.

Preparación#

Antes de comenzar, necesitarás:
  • Regístrese para obtener una cuenta NextCaptcha: Vaya a NextCaptcha y regístrese para obtener su clave API.

  • Instalar los paquetes de Python necesarios: Asegúrese de tener requests instalado. Puedes instalarlo usando pip si aún no lo tienes:

      pip install requests

Cómo encontrar la clave del sitio#

Para resolver un reCAPTCHA, necesitas la clave del sitio que está incrustada en el HTML de la página donde se utiliza el reCAPTCHA. Aquí te mostramos cómo encontrarla:
  • Navegar a la página con el reCAPTCHA.

  • Inspeccionar el código fuente de la página: Haga clic derecho en la página y seleccione “Inspeccionar” o “Ver código fuente de la página”.

  • Buscar la clave del sitio: Busca el data-sitekey atributo en el HTML. Se verá algo como esto:

      <div class="g-recaptcha" data-sitekey="YOUR_SITE_KEY"></div>

    Copia esto YOUR_SITE_KEY valor.

Resolviendo el captcha#

Ahora que tienes la clave del sitio, puedes usar la API NextCaptcha para resolver el desafío reCAPTCHA.
  • Envíe una solicitud a NextCaptcha para resolver el reCAPTCHA v3:

    import requests
     
    # Your NextCaptcha API key
    API_KEY = 'YOUR_NextCAPTCHA_API_KEY'
     
    # The URL of the page with the reCAPTCHA
    url = 'URL_OF_THE_PAGE_WITH_RECAPTCHA'
     
    # The site key for reCAPTCHA v3
    site_key = 'YOUR_SITE_KEY'
     
    # Requesting the reCAPTCHA solution
    response = requests.post('https://api.nextcaptcha.com/createTask', data={
        "clientKey": API_KEY,
        "task": {
            "type":"RecaptchaV3TaskProxyless",
            "websiteURL":url,
            "websiteKey":site_key
        }
    })
     
    request_id = response.json().get('taskId')
     

  • Encuesta para la solución:

    import time
     
    solution = None
    while solution is None:
        time.sleep(1)  # Wait a few seconds before checking again
        response = requests.post('https://api.nextcaptcha.com/getTaskResult', data={
    		  "clientKey": "api key",
    		  "taskId": request_id
    		})
        if response.json().get('errorId') == 0:
            solution = response.json().get('solution')
     
    # The reCAPTCHA token
    recaptcha_token = solution["gRecaptchaResponse"]
    print(f'reCAPTCHA token: {recaptcha_token}')
     

Enviando el Captcha Resuelto#

Después de obtener el token reCAPTCHA, puede enviarlo junto con el formulario o la solicitud que requirió la solución CAPTCHA. A continuación, se muestra un ejemplo de cómo podría enviar el formulario:
# URL where the form is submitted
form_submit_url = 'URL_TO_SUBMIT_FORM'
 
# Form data including the reCAPTCHA token
form_data = {
    'some_form_field': 'value',
    'g-recaptcha-response': recaptcha_token
}
 
# Submit the form
response = requests.post(form_submit_url, data=form_data)
print(response.text)
 

Código completo para la resolución automática de reCaptcha#

Combinando todos los pasos, aquí está el código completo:

import requests
import time
 
# Your NextCaptcha API key
API_KEY = 'YOUR_NextCAPTCHA_API_KEY'
 
# The URL of the page with the reCAPTCHA
url = 'URL_OF_THE_PAGE_WITH_RECAPTCHA'
 
# The site key for reCAPTCHA v3
site_key = 'YOUR_SITE_KEY'
 
# Requesting the reCAPTCHA solution
response = requests.post('https://api.nextcaptcha.com/createTask', data={
    "clientKey": API_KEY,
    "task": {
        "type":"RecaptchaV3TaskProxyless",
        "websiteURL":url,
        "websiteKey":site_key
    }
})
 
task_id = response.json().get('taskId')
 
solution = None
while solution is None:
    time.sleep(1)  # Wait a few seconds before checking again
    response = requests.post('https://api.nextcaptcha.com/getTaskResult', data={
		  "clientKey": "api key",
		  "taskId": task_id
		})
    if response.json().get('errorId') == 0:
        solution = response.json().get('solution')
 
# The reCAPTCHA token
recaptcha_token = solution["gRecaptchaResponse"]
print(f'reCAPTCHA token: {recaptcha_token}')
 
# URL where the form is submitted
form_submit_url = 'URL_TO_SUBMIT_FORM'
 
# Form data including the reCAPTCHA token
form_data = {
    'some_form_field': 'value',
    'g-recaptcha-response': recaptcha_token
}
 
# Submit the form
response = requests.post(form_submit_url, data=form_data)
print(response.text)
Al seguir esta guía, puede automatizar el proceso de resolución de desafíos reCAPTCHA v3 de una manera que respete los términos de servicio de los sitios con los que interactúa.