Join And Get Free Trial!

Comment contourner reCaptcha v3 en Python avec un exemple de code#

logoNextCaptcha
August 01,2024

Aperçu#

L'automatisation des interactions sur les sites Web peut considérablement simplifier les tests et les tâches répétitives. Cependant, un problème récurrent est la reconnaissance reCAPTCHA, qui vise à différencier les utilisateurs humains des robots. Ce guide vous montrera comment résoudre les défis reCAPTCHA v3 à l'aide de Python et du service NextCaptcha, qui utilise des solveurs humains pour gérer ces CAPTCHA de manière éthique et légale.

Préparation#

Avant de commencer, vous aurez besoin de :
  • Inscrivez-vous pour un compte NextCaptcha: Accédez à NextCaptcha et inscrivez-vous pour obtenir votre clé API.

  • Installer les packages Python nécessaires: Assurez-vous d'avoir requests installé. Vous pouvez l'installer en utilisant pip si vous ne l'avez pas déjà :

      pip install requests

Trouver la clé de site#

Pour résoudre un reCAPTCHA, vous avez besoin de la clé du site qui est intégrée dans le code HTML de la page où le reCAPTCHA est utilisé. Voici comment vous pouvez la trouver :
  • Accédez à la page avec le reCAPTCHA.

  • Inspecter la source de la page: Faites un clic droit sur la page et sélectionnez « Inspecter » ou « Afficher la source de la page ».

  • Rechercher la clé du site: Cherchez le data-sitekey attribut dans le code HTML. Cela ressemblera à ceci :

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

    Copier ceci YOUR_SITE_KEY valeur.

Résoudre le Captcha#

Maintenant que vous disposez de la clé du site, vous pouvez utiliser l<a>API NextCaptcha</a> pour résoudre le défi reCAPTCHA.
  • Envoyez une demande à NextCaptcha pour résoudre le 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')
     

  • Sondage pour la solution:

    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}')
     

Soumission du Captcha résolu#

Après avoir obtenu le jeton reCAPTCHA, vous pouvez le soumettre avec le formulaire ou la demande nécessitant la solution CAPTCHA. Voici un exemple de la manière dont vous pouvez soumettre le formulaire :
# 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)
 

Code complet pour la résolution automatique de reCaptcha#

En combinant toutes les étapes, voici le code complet:

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)
En suivant ce guide, vous pouvez automatiser le processus de résolution des défis reCAPTCHA v3 d'une manière qui respecte les conditions de service des sites avec lesquels vous interagissez.