Как решить проблему reCAPTCHA с помощью Python и Selenium
Как решить проблему reCAPTCHA с помощью Python и Selenium
Nikolai Smirnov
Software Development Lead
25-Jul-2024
CAPTCHA стала важной линией защиты в нашей повседневной онлайн-деятельности. Будь то вход в аккаунт, отправка формы или совершение онлайн-платежа, CAPTCHA работает за кулисами, чтобы обеспечить нашу безопасность. Однако CAPTCHA иногда может стать препятствием для автоматизации, затрудняя прогресс в автоматизированном тестировании, сборе данных и эффективности. Так как же обойти эти сложные проблемы CAPTCHA законным и разумным способом? В этой статье мы рассмотрим, как решить reCAPTCHA с помощью Python и Selenium, предоставляя разработчикам и специалистам по данным эффективный путь к решению.
Что такое reCAPTCHA?
reCAPTCHA - это служба безопасности, разработанная Google для защиты веб-сайтов от спама и злоупотреблений. Она различает человеческих пользователей и автоматизированных ботов, обеспечивая выполнение таких взаимодействий, как отправка форм, создание аккаунтов и попытки входа в систему, реальными людьми. reCAPTCHA использует различные задачи для проверки подлинности пользователя, начиная от простых флажков и заканчивая сложным распознаванием изображений.
Устали от постоянных неудач при попытке полностью решить раздражающую капчу? Откройте для себя беспроблемное автоматическое решение капчи с помощью технологии автоматической разблокировки веб-страниц CapSolver, работающей на основе ИИ!
Получите свой Бонусный код для лучших решений капчи; CapSolver: WEBS. После его активации вы будете получать дополнительный бонус 5% после каждого пополнения счета, без ограничений.
Типы reCAPTCHA
reCAPTCHA v2 (Флажок): Пользователям предлагается флажок с надписью "Я не робот". При нажатии на флажок пользователям может быть предложено решить задачу на основе изображения, если система подозревает, что они могут быть ботом.
reCAPTCHA v2 (Невидимая): Эта версия не показывает видимого флажка. Она работает в фоновом режиме и запускает проверку только при обнаружении подозрительной активности.
reCAPTCHA v3: В отличие от предыдущих версий, reCAPTCHA v3 не прерывает пользователя проверками. Вместо этого она присваивает оценку на основе поведения пользователя, позволяя администраторам веб-сайтов определять необходимые действия.
reCAPTCHA Enterprise: Более продвинутая версия, разработанная для крупномасштабного бизнеса, обеспечивающая повышенную безопасность и настраиваемость.
Зачем решать reCAPTCHA?
Решение reCAPTCHA необходимо в определенных законных сценариях:
Автоматизированное тестирование: Разработчикам и тестировщикам может потребоваться решение reCAPTCHA для автоматизации тестирования своих веб-приложений.
Сбор данных: При сборе собственных данных или выполнении задач на сайтах, где у вас есть разрешение, решение reCAPTCHA может быть критически важным.
Доступность: Автоматизация повторяющихся задач для пользователей с ограниченными возможностями или предоставление альтернативных методов доступа может потребовать решения reCAPTCHA.
Эффективность: Автоматизация взаимодействий на веб-сайтах, использующих reCAPTCHA, может значительно повысить производительность и эффективность.
Как решить reCAPTCHA с помощью CapSolver
reCAPTCHA может создавать множество препятствий для законных задач автоматизации, таких как сбор данных, автоматизация тестирования и так далее. Поэтому для решения этих проблем раз и навсегда разработчикам рекомендуется использовать сторонний сервис решения, такой как CapSolver, который автоматически решает многие типы проблем CAPTCHA и помогает разработчикам преодолеть эти препятствия, чтобы задача выполнялась без проблем.
1. Предварительные требования
Определите целевой сайт как использующий reCAPTCHA
Обычно вы можете видеть очевидные признаки на странице
В логах запросов вы также увидите https://www.google.com/recaptcha****
Получите ключ сайта
Для V2 и V3 вы можете искать запрос /recaptcha/api2/reload?k=6LcR_okUAAAAAPYrPe-HK_0RULO1aZM15ENyM-Mf в логах запросов браузера, где k= - это значение ключа, которое нам нужно
Различайте V2 и V3
V2 и V3 имеют разные методы обработки. V2 требует распознавания изображений для выбора ответов, в то время как V3 относительно ненавязчива; Однако V3 требует предоставления Action во время проверки. На основе ранее полученного значения ключа, поищите на странице ответа, и вы найдете значение Action на странице
Вызовите сервис CapSolver
2. Различение версий reCAPTCHA
В логах запросов браузера вы можете видеть, что для V2 после запроса /recaptcha/api2/reload обычно требуется запрос /recaptcha/api2/userverify для получения токена прохождения;
Для V3 запрос /recaptcha/api2/reload может получить токен прохождения напрямую
3. Полный пример вызова API CapSolver
Python reCAPTCHA V2
pythonCopy
# pip install requests
import requests
import time
# TODO: установите вашу конфигурацию
api_key = "ВАШ_API_КЛЮЧ" # ваш api ключ от capsolver
site_key = "6Le-wvkSAAAAAPBMRTvw0Q4Muexq9bi0DJwx_mJ-" # ключ сайта вашего целевого сайта
site_url = "https://www.google.com/recaptcha/api2/demo" # url страницы вашего целевого сайта
# site_key = "6LelzS8UAAAAAGSL60ADV5rcEtK0x0lRsHmrtm62"
# site_url = "https://mybaragar.com/index.cfm?event=page.SchoolLocatorPublic&DistrictCode=BC45"
def capsolver():
payload = {
"clientKey": api_key,
"task": {
"type": 'ReCaptchaV2TaskProxyLess',
"websiteKey": site_key,
"websiteURL": site_url
}
}
res = requests.post("https://api.capsolver.com/createTask", json=payload)
resp = res.json()
task_id = resp.get("taskId")
if not task_id:
print("Не удалось создать задачу:", res.text)
return
print(f"Получен taskId: {task_id} / Получение результата...")
while True:
time.sleep(3) # задержка
payload = {"clientKey": api_key, "taskId": task_id}
res = requests.post("https://api.capsolver.com/getTaskResult", json=payload)
resp = res.json()
status = resp.get("status")
if status == "ready":
return resp.get("solution", {}).get('gRecaptchaResponse')
if status == "failed" or resp.get("errorId"):
print("Решение не удалось! ответ:", res.text)
return
token = capsolver()
print(token)
Python reCAPTCHA V3
pythonCopy
# pip install requests
import requests
import time
# TODO: установите вашу конфигурацию
api_key = "ВАШ_API_КЛЮЧ" # ваш api ключ от capsolver
site_key = "6LcR_okUAAAAAPYrPe-HK_0RULO1aZM15ENyM-Mf" # ключ сайта вашего целевого сайта
site_url = "https://antcpt.com/score_detector/" # url страницы вашего целевого сайта
def capsolver():
payload = {
"clientKey": api_key,
"task": {
"type": 'ReCaptchaV3TaskProxyLess',
"websiteKey": site_key,
"websiteURL": site_url,
"pageAction": "homepage",
}
}
res = requests.post("https://api.capsolver.com/createTask", json=payload)
resp = res.json()
task_id = resp.get("taskId")
if not task_id:
print("Не удалось создать задачу:", res.text)
return
print(f"Получен taskId: {task_id} / Получение результата...")
while True:
time.sleep(1) # задержка
payload = {"clientKey": api_key, "taskId": task_id}
res = requests.post("https://api.capsolver.com/getTaskResult", json=payload)
resp = res.json()
status = resp.get("status")
if status == "ready":
return resp.get("solution", {}).get('gRecaptchaResponse')
if status == "failed" or resp.get("errorId"):
print("Решение не удалось! ответ:", res.text)
return
# проверка оценки
def score_detector(token):
headers = {
"accept": "application/json, text/javascript, */*; q=0.01",
"accept-language": "fr-CH,fr;q=0.9",
"content-type": "application/json",
"origin": "https://antcpt.com",
"priority": "u=1, i",
"referer": "https://antcpt.com/score_detector/",
"sec-ch-ua": "\"Not/A)Brand\";v=\"8\", \"Chromium\";v=\"126\", \"Google Chrome\";v=\"126\"",
"sec-ch-ua-mobile": "?0",
"sec-ch-ua-platform": "\"macOS\"",
"sec-fetch-dest": "empty",
"sec-fetch-mode": "cors",
"sec-fetch-site": "same-origin",
"user-agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/126.0.0.0 Safari/537.36",
"x-requested-with": "XMLHttpRequest"
}
url = "https://antcpt.com/score_detector/verify.php"
data = {
"g-recaptcha-response": token
}
data = json.dumps(data, separators=(',', ':'))
response = requests.post(url, headers=headers, data=data)
print(response.json())
print(response)
token = capsolver()
print(token)
...
...
{
'success': True,
'challenge_ts': '2024-07-19T10:50:56Z',
'hostname': 'antcpt.com',
'score': 0.7,
'action': 'homepage'
}
Заключение
Решение reCAPTCHA с использованием Python, Selenium и сервисов, таких как CapSolver, предлагает эффективное решение для законных задач автоматизации. Этот подход упрощает такие процессы, как автоматизированное тестирование, сбор данных и улучшение доступности, значительно повышая эффективность.
Ключевые моменты, которые следует помнить:
Понимайте различные типы reCAPTCHA и их механизмы.
Правильно идентифицируйте версии reCAPTCHA и получайте необходимые ключи сайта.
Используйте сторонние сервисы такие как CapSolverдля упрощения процесса
Используйте предоставленные скрипты Python в качестве отправной точки для ваших конкретных потребностей.
Хотя эти методы мощные, всегда используйте их ответственно и в соответствии с условиями использования веб-сайта. По мере развития веб-безопасности, поддержание актуальности с последними методами решения CAPTCHA будет иметь решающее значение для поддержания эффективных процессов автоматизации.
Дисклеймер о соблюдении: Информация, представленная в этом блоге, предназначена только для справочных целей. CapSolver обязуется соблюдать все применимые законы и нормы. Использование сети CapSolver для незаконной, мошеннической или злоупотребляющей деятельности строго запрещено и будет расследовано. Наши решения для распознавания капчи улучшают пользовательский опыт, обеспечивая 100% соблюдение при помощи в решении трудностей с капчей в процессе сбора общедоступных данных. Мы призываем к ответственному использованию наших услуг. Для получения дополнительной информации, пожалуйста, посетите наши Условия обслуживания и Политику конфиденциальности.