Join And Get Free Trial!

Hoe reCaptcha v3 in Python te omzeilen met een codevoorbeeld#

logoNextCaptcha
August 01,2024

Overzicht#

Het automatiseren van website-interacties kan testen en repetitieve taken enorm stroomlijnen. Een veelvoorkomend probleem is echter reCAPTCHA-herkenning, dat erop gericht is onderscheid te maken tussen menselijke gebruikers en bots. Deze gids laat u zien hoe u reCAPTCHA v3-uitdagingen oplost met behulp van Python en de NextCaptcha-service, die menselijke oplossers gebruikt om deze CAPTCHA's op een ethische en legale manier af te handelen.

Voorbereiding#

Voordat u begint, moet u het volgende doen:
  • Meld u aan voor een NextCaptcha-account: Ga naar NextCaptcha en meld u aan om uw API-sleutel te ontvangen.

  • Installeer de benodigde Python-pakketten: Zorg ervoor dat u requests geïnstalleerd. Je kunt het installeren met pip als je het nog niet hebt:

      pip install requests

De Sitekey vinden#

Om een reCAPTCHA op te lossen, hebt u de sitesleutel nodig die is ingebed in de HTML van de pagina waar de reCAPTCHA wordt gebruikt. Hier leest u hoe u deze kunt vinden:
  • Navigeer naar de pagina met de reCAPTCHA.

  • Controleer de bron van de pagina: Klik met de rechtermuisknop op de pagina en selecteer 'Inspecteren' of 'Paginabron weergeven'.

  • Zoek naar de sitesleutel: Zoek naar de data-sitekey attribuut in de HTML. Het ziet er ongeveer zo uit:

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

    Kopieer dit YOUR_SITE_KEY waarde.

De Captcha oplossen#

Nu u de sitesleutel hebt, kunt u de NextCaptcha API gebruiken om de reCAPTCHA-uitdaging op te lossen.
  • Stuur een verzoek naar NextCaptcha om reCAPTCHA v3 op te lossen:

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

  • Enquête voor de oplossing:

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

De opgeloste captcha indienen#

Nadat u het reCAPTCHA-token hebt verkregen, kunt u het indienen samen met het formulier of verzoek dat de CAPTCHA-oplossing vereiste. Hier is een voorbeeld van hoe u het formulier kunt indienen:
# 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)
 

Volledige code voor automatische reCaptcha-oplossing#

Als je alle stappen combineert, is hier de volledige 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)
Door deze handleiding te volgen, kunt u het proces voor het oplossen van reCAPTCHA v3-uitdagingen automatiseren op een manier die voldoet aan de servicevoorwaarden van de sites waarmee u communiceert.