Решить ReCapcha v3
Last updated
Last updated
Элемент решает капчу формата reCAPTCHA v3 и сохраняет результат в указанную переменную. reCAPTCHA v3 — это вид капчи от Google, который основан на рейтинге человечности пользователя и не требует от пользователя выполнения каких-либо заданий.
Во многом эта капча похожа на reCAPTCHA v2, т.к. основной принцип остался тем же — пользователь получает от API reCAPTCHA токен, который отправляется в POST-запросе к сайту, а сайт верифицирует токен через API reCAPTCHA. Но при верификации токена API reCAPTCHA теперь возвращает рейтинг человечности — score
— число от 0.1 до 0.9. Получив это значение, сайт решает, как обрабатывать запрос.
Кроме того, появился новый параметр action
, который позволяет по-разному обрабатывать различные действия пользователя на сайте. При верификации токена API reCAPTCHA вернет имя действия, которое выполнил пользователь.
Как решать reCAPTCHA v3:
В первую очередь убедитесь, что на сайте действительно используется reCAPTCHA v3. Основные признаки v3:
капча не видна пользователю и не требует кликов по картинкам;
скрипт api.js загружается с параметром render=sitekey
, например: https://www.google.com/recaptcha/api.js?render=6LfZil0UAAAAAAdm1Dpzsw9q0F11-bmervx9g5fE
.
в массиве clients
конфигурационного объекта ___grecaptcha_cfg
используется индекс 100000: ___grecaptcha_cfg.clients[100000]_
.
Для решения v3 необходимо найти значения трех параметров:
sitekey — его можно найти в html в значении параметра render
при загрузке api.js, или в параметре k
в URI iframe, в который подгружается reCAPTCHA, либо в javscript, в вызове функции grecaptcha.execute
, или в конфигурационном объекте ___grecaptcha_cfg
.
action — это значение нужно искать в js-коде сайта в вызове функции grecaptcha.execute
. Пример: grecaptcha.execute('6LfZil0UAAAAAAdm1Dpzsw9q0F11-bmervx9g5fE', {action: do_something}).
Иногда его достаточно сложно найти, и требуется просмотреть все все js-файлы, подгружаемые сайтом. Кроме того, можно попробовать найти значение action
в конфигурационном объекте ___grecaptcha_cfg
, но очень часто оно может быть не задано там, а передаваться только при вызове grecaptcha.execute
— поэтому лучше просматривать js-код.
pageurl — полный URL страницы, где вы хотите решить reCAPTCHA V3.
Кроме того, нужно понять, какое значение score вам требуется. Определить извне, при каком score сайт решит, что вы человек и пропустит ваш запрос, можно только экспериментально. Самый низкий рейгинг 0.1 — робот, а самый высокий 0.9 — человек. Но многие сайты ставят пороговые значения от 0.2 до 0.5, т.к. обычный человек зачастую получает довольно низкий рейтинг.
После получения токена, нужно корректно использовать его на сайте. Лучший метод понять, как это сделать — посмотреть на то, какие запросы отправляются на сайт, когда вы работаете с ним как обычный посетитель. Большинство браузеров позволяют легко это сделать в консоли разработчика, нужная вкладка обычно называется Network.
Токен обычно отправляется в параметрах POST-запроса, это может быть g-recaptcha-response как у reCAPTCHA V2, g-recaptcha-response-100000 или какой-либо другой параметр. Поэтому нужно внимательно просмотреть параметры запроса и найти, как именно передается токен, а затем сформировать аналогичный запрос.
Установите пакет Primo.2Captcha.Linux в Primo RPA Studio версии 1.24.8.2 и выше.
Зарегистрируйтесь на сайте https://2captcha.com, чтобы получить ключ API и указать его в одноименном свойстве элемента. Учтите, что сервис платный.
Описание общих свойств элемента см. в разделе Свойства элемента.
Символ *
в названии свойства указывает на обязательность заполнения.
Ключ сайта* [String] — ключ капчи reCapcha. Пример: "6LdKlZEpAAAAAAOQjzC2v_d36tWxCl6dWsozdSy9"
.
URL* [String] — URL страницы с капчей reCAPTCHA v3.
Ключ API* [String] — ключ API.
URL API* [String] — URL API. Значение по умолчанию: "https://2captcha.com"
.
Точность [Double] — необходимая точность. По умолчанию 0.4
.
Тайм-аут [Int32] — тайм-аут. По умолчанию 20000
миллисекунд.
Результат [String] — название переменной для хранения результата разбора капчи.
Данный элемент не используется в процессе с типом Только код (Pure code).