Как обойти reCaptcha v3 в Python с примером кода#
Обзор#
Автоматизация взаимодействия с веб-сайтом может значительно упростить тестирование и выполнение повторяющихся задач. Однако часто возникающей проблемой является распознавание reCAPTCHA, которое направлено на различение пользователей-людей и ботов. Это руководство покажет вам, как решать задачи reCAPTCHA v3 с помощью Python и сервиса NextCaptcha, который использует решателей-людей для обработки этих CAPTCHA этичным и законным образом.
Подготовка#
Прежде чем начать, вам необходимо:
Зарегистрируйте учетную запись NextCaptcha : Перейдите на NextCaptcha и зарегистрируйтесь, чтобы получить свой ключ API.
Установите необходимые пакеты Python : Убедитесь, что у вас есть requests
установлен. Вы можете установить его с помощью pip, если у вас его еще нет:
pip install requests
Поиск Sitekey#
Для решения reCAPTCHA вам нужен ключ сайта, который встроен в HTML страницы, где используется reCAPTCHA. Вот как его можно найти:
Перейдите на страницу с reCAPTCHA .
Проверьте исходный код страницы : Щелкните правой кнопкой мыши по странице и выберите «Просмотреть» или «Просмотреть исходный код страницы».
Поиск ключа сайта : Ищите data-sitekey
атрибут в HTML. Это будет выглядеть примерно так:
< div class = "g-recaptcha" data-sitekey = "YOUR_SITE_KEY" ></ div >
Скопировать это YOUR_SITE_KEY
ценить.
Решение капчи#
Теперь, когда у вас есть ключ сайта, вы можете использовать
NextCaptcha API для решения задачи reCAPTCHA.
Отправка решенной капчи#
После получения токена reCAPTCHA вы можете отправить его вместе с формой или запросом, требующим решения CAPTCHA. Вот пример того, как вы можете отправить форму:
# 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)
Полный код для автоматического решения reCaptcha#
Объединяя все шаги, вот полный код:
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)
Следуя этому руководству, вы сможете автоматизировать процесс решения задач reCAPTCHA v3 таким образом, чтобы соблюдать условия обслуживания сайтов, с которыми вы взаимодействуете.