Join And Get Free Trial!

So umgehen Sie reCaptcha v3 in Python mit Codebeispiel#

logoNextCaptcha
August 01,2024

Überblick#

Durch die Automatisierung von Website-Interaktionen können Tests und sich wiederholende Aufgaben erheblich rationalisiert werden. Ein häufig auftretendes Problem ist jedoch die reCAPTCHA-Erkennung, die darauf abzielt, zwischen menschlichen Benutzern und Bots zu unterscheiden. In dieser Anleitung erfahren Sie, wie Sie reCAPTCHA v3-Herausforderungen mit Python und dem Dienst NextCaptcha lösen, der menschliche Löser verwendet, um diese CAPTCHAs auf ethische und legale Weise zu handhaben.

Vorbereitung#

Bevor Sie beginnen, müssen Sie:
  • Registrieren Sie sich für ein NextCaptcha-Konto: Gehen Sie zu NextCaptcha und melden Sie sich an, um Ihren API-Schlüssel zu erhalten.

  • Installieren Sie die erforderlichen Python-Pakete: Stellen Sie sicher, dass Sie requests installiert. Sie können es mit pip installieren, falls Sie es noch nicht haben:

      pip install requests

Den Sitekey finden#

Um ein reCAPTCHA zu lösen, benötigen Sie den Site-Key, der im HTML der Seite eingebettet ist, auf der das reCAPTCHA verwendet wird. So finden Sie ihn:
  • Navigieren Sie zur Seite mit dem reCAPTCHA.

  • Überprüfen Sie die Quelle der Seite: Klicken Sie mit der rechten Maustaste auf die Seite und wählen Sie „Untersuchen“ oder „Seitenquelle anzeigen“.

  • Suchen Sie nach dem Site-Schlüssel: Suche nach data-sitekey Attribut im HTML. Es sieht ungefähr so aus:

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

    Kopier das YOUR_SITE_KEY Wert.

Lösen des Captchas#

Da Sie nun den Site-Schlüssel haben, können Sie die NextCaptcha-API verwenden, um die reCAPTCHA-Herausforderung zu lösen.
  • Senden Sie eine Anfrage an NextCaptcha, um das reCAPTCHA v3 zu lösen:

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

  • Umfrage zur Lösung:

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

Absenden des gelösten Captchas#

Nachdem Sie das reCAPTCHA-Token erhalten haben, können Sie es zusammen mit dem Formular oder der Anfrage übermitteln, für die die CAPTCHA-Lösung erforderlich war. Hier ist ein Beispiel, wie Sie das Formular übermitteln könnten:
# 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)
 

Vollständiger Code zur automatischen reCaptcha-Lösung#

Wenn Sie alle Schritte kombinieren, sehen Sie hier den vollständigen Code.:

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)
Wenn Sie dieser Anleitung folgen, können Sie den Prozess zum Lösen von reCAPTCHA v3-Herausforderungen automatisieren und dabei die Nutzungsbedingungen der Websites einhalten, mit denen Sie interagieren.