Join And Get Free Trial!

Come bypassare reCaptcha v3 in Python con esempio di codice#

logoNextCaptcha
August 01,2024

Panoramica#

L'automazione delle interazioni con i siti Web può semplificare notevolmente i test e le attività ripetitive. Tuttavia, un problema che si verifica di frequente è il riconoscimento di reCAPTCHA, che mira a distinguere tra utenti umani e bot. Questa guida ti mostrerà come risolvere le sfide di reCAPTCHA v3 utilizzando Python e il servizio NextCaptcha, che utilizza risolutori umani per gestire questi CAPTCHA in modo etico e legale.

Preparazione#

Prima di iniziare, dovrai:
  • Registrati per un account NextCaptcha: Vai su NextCaptcha e registrati per ottenere la tua chiave API.

  • Installa i pacchetti Python necessari: Assicurati di avere requests installato. Puoi installarlo usando pip se non lo hai già:

      pip install requests

Trovare la Sitekey#

Per risolvere un reCAPTCHA, hai bisogno della chiave del sito che è incorporata nell'HTML della pagina in cui viene utilizzato il reCAPTCHA. Ecco come puoi trovarla:
  • Vai alla pagina con il reCAPTCHA.

  • Ispeziona la fonte della pagina: Fare clic con il tasto destro del mouse sulla pagina e selezionare "Ispeziona" o "Visualizza sorgente pagina".

  • Cerca la chiave del sito: Cercare il data-sitekey attributo nell'HTML. Apparirà più o meno così:

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

    Copia questo YOUR_SITE_KEY valore.

Risolvere il Captcha#

Ora che hai la chiave del sito, puoi utilizzare l'API NextCaptcha per risolvere la sfida reCAPTCHA.
  • Invia una richiesta a NextCaptcha per risolvere il 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')
     

  • Sondaggio per la soluzione:

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

Invio del Captcha risolto#

Dopo aver ottenuto il token reCAPTCHA, puoi inviarlo insieme al modulo o alla richiesta che richiedeva la soluzione CAPTCHA. Ecco un esempio di come potresti inviare il modulo:
# 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)
 

Codice completo per la risoluzione automatica di reCaptcha#

Combinando tutti i passaggi, ecco il codice 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)
Seguendo questa guida, puoi automatizzare il processo di risoluzione delle sfide reCAPTCHA v3 in un modo che rispetti i termini di servizio dei siti con cui interagisci.