Автоматическое решение reCAPTCHA V3 - инструкция для разработчиков и заказчиков

Опубликовано:

Представляем вам обзорную статью об обходе (автоматическом решении) reCAPTCHA V3 с помощью сервиса RuCaptcha. Она во многом повторяет предыдущие статьи про reCAPTCHA V3, но является наиболее полной инструкцией для разработчиков и заказчиков.

RuCaptcha полноценно решает reCAPTCHA V3

Мы решаем reCAPTCHA V3 с июня 2018 года. Некоторое время функционал обхода стоял в статусе Beta, что было вызвано некоторой ненадёжностью наших алгоритмов обхода V3 версии reCAPTCHA. В июне 2020 года мы нашли надёжный способ обхода и целый год его масштабировали. Сейчас мы можем решать до 5-7 миллионов V3 со score=0.9 в сутки (с доступной пиковой нагрузкой - 50.000 капч в минуту) и в течение пары месяцев планируем удвоить запас производительности, а в дальнейшем масштабировать по необходимости. Кстати, если у вас есть постоянно запущенные компьютеры, вы можете на них заработать, ничего для этого не делая, просто один раз установив расширение для браузера. Подробнее об этом можно почитать в нашей предыдущей статье: Пассивный заработок на reCAPTCHA V3.

V3 - не капча и что такое "score"

reCAPTCHA V3 не является капчей в чистом виде, а именно автоматизированным тестом тьюринга для различия компьютеров и людей. reCAPTCHA V3 — это скоринговая оценка браузера на предмет того, кто управляет браузером: человек или программа. reCAPTCHA V3 решается всегда, даже самым заспамленным браузером через публичный прокси, однако при проверке ответа сайтом, где установлена V3, сайт получит от серверов reCAPTCHA значение score от 0.1 до 0.9, где 0.1 означает "почти точно это автоматизированный браузер", а 0.9 — это "почти точно браузером управляет человек". RuCaptcha предоставляет токены, которые при проверке получают score = 0.9.

Как определить, что на странице именно ReCaptcha V3

reCAPTCHA V2: На странице есть чекбокс, где ставится галочка.
reCAPTCHA V2 Invisible: На странице нет чекбокса, но есть логотип reCAPTCHA в правом нижнем углу, и при отправке формы иногда просят выбрать картинки.
reCAPTCHA V3: На странице нет чекбокса, но есть логотип reCAPTCHA в правом нижнем углу, при отправке формы никогда не просят выбрать картинки.

Иногда сложно отличить V2 Invisible от V3. В таких случаях просто откройте консоль браузера Command+Option+C (Mac) or Control+Shift+C (Windows, Linux, Chrome OS) и на вкладке Network посмотрите, какие запросы отправляет ваш браузер к домену google.com (или recaptcha.net на некоторых сайтах).

Найдите запрос
https://www.google.com/recaptcha/api2/reload?k=

Потом поищите запрос
https://www.google.com/recaptcha/api2/userverify?k=

Первый запрос должен находиться всегда, если его не нашли, то может быть запросы идут к домену "recaptcha.net", а не "google.com", ищите, пока не найдёте. Если не нашёлся второй запрос, к userverify, то это reCAPTCHA V3. Если запрос к userverify есть, то это ReCaptchaV2 Invisible.

Как отправить капчу на rucaptcha.com и получить решение

Всё очень просто. Вам нужно сделать лишь 3 GET или POST запроса:

1. Загрузка капчи URL для запроса: http://rucaptcha.com/in.php
В теле запроса необходимо передать следующие параметры:

Параметр Значение Описание
key Ваш APIKEY
method userrecaptcha Тип капчи, указывает, что это Google reCAPTCHA
version V3 Указание версии reCAPTCHA
googlekey reCAPTCHA ключ, взятый со страницей с капчей
pageurl Адрес страницы, где грузится капча. Если капча грузится в Iframe - адрес Iframe страницы
min_score Минимальный score, необходимый для прохождения капчи от 0.1 до 0.9
action Необязательный параметр. Action капчи, если он используется на странице с капчей
json 1 Необязательный параметр. Указание нашему серверу вернуть ответ в формате JSON. По умолчанию ответ возвращается текстом.

В ответ вы получите ID капчи:

{
    "status": 1,
    "request": "50970709412"
}

Либо, если что-то пошло не так, API вернёт ошибку. Список и описание ошибок можно найти в документации API: Список ошибок при приёме капчи.

2. Получение ответа на капчу
Подождите 5 секунд и отправьте запрос на получение токена
URL для запроса: http://rucaptcha.com/res.php
В теле запроса необходимо передать следующие параметры:

Параметр Значение Описание
key Ваш APIKEY
action get Указание, что вы хотите получить результат решения капчи
id ID капчи, полученный на прошлом шаге
json 1 Необязательный параметр. Указание нашему серверу вернуть ответ в формате JSON. По умолчанию ответ возвращается текстом.

В ответ, если капча уже решена, и запрос корректен, вы получите примерно такой ответ:

{
    "status": 1,
    "request": "03AGdBq269xwqd…..5pZ_2DMHqUjg"
}

Где в поле request содержится токен, являющийся решением капчи. Его нужно использовать на странице с капчей.

Если капча ещё не решена, вы получите

{
    "status": 0,
    "request": "CAPCHA_NOT_READY"
}

В таком случае нужно подождать 3-5 секунд и повторить запрос. В настоящий момент 90% reCAPTCHA V3 на нашем сервере решаются в течение 5 секунд, максимальное время - 120 секунд. Пожалуйста, делайте как минимум трёхсекундный таймаут между запросами к res.php по одному id. Желательно - 5 секунд. Идеально - 10 секунд.

3. Уведомление о качестве токена

Это необязательный параметр. Однако мы настоятельно рекомендуем его использовать. Его использование позволит вам тратить меньше денег и получать больший процент рабочих токенов.
Мы используем уникальные для каждого заказчика AllowList и BlockList компьютеров, где решаются reCAPTCHA V3. Чтобы их заполнить, вам нужно после использования ответа прислать нам сообщение reportbad или reportgood, в зависимости от того, был ли ответ успешно принят или нет. При получении reportgood мы вносим компьютер, который дал ответ на эту капчу, в AllowList. Когда количество компьютеров онлайн в вашем AllowList достигнет 50, каждая вторая капча будет выдаваться компьютеру из этого листа. А когда накопится 500 компьютеров онлайн, то все ваши капчи будут выдаваться только компьютерам из AllowList. Если же наш ответ не сработал и вы прислали reportbad, то компьютер, выдавший этот ответ, добавляется в BlockList вашего аккаунта и не получает ваших капч продолжительное время, а вы получаете возврат средств, потраченных на непринятый ответ (обратите внимание: возвраты за reportbad не делаются, если вы не шлёте reportgood на принятые ответы).
Важно! Если вы решаете reCAPTCHA V3 на разных сайтах, то вам будет лучше создать несколько аккаунтов на rucaptcha.com, т.к. один и тот же компьютер может давать хорошие ответы reCAPTCHA V3 для одного сайта и плохие для другого. Это особенность самой reCAPTCHA V3.

URL для запроса: http://rucaptcha.com/res.php
В теле запроса необходимо передать следующие параметры:

Параметр Значение Описание
key Ваш APIKEY
id ID капчи, на которую шлётся уведомление
action reportbad reportgood reportgood - ответ был принят, reportbad - ответ не был принят
json 1 Необязательный параметр. Указание нашему серверу вернуть ответ в JSON формате. По умолчанию ответ возвращается текстом.

Как использовать полученный токен для прохождения капчи

После получения токена нужно корректно использовать его на сайте. Лучший метод понять, как это сделать, это посмотреть на то, какие запросы отправляются на сайт, когда вы работаете с ним как обычный посетитель: зайдите в DevTools браузера, нажав Ctrl+Shift+I и перейдите во вкладку Сеть\Network.

Токен обычно отправляется в параметрах POST-запроса, это может быть g-recaptcha-response как у reCAPTCHA V2, g-recaptcha-response-100000 или какой-либо другой параметр. Поэтому нужно внимательно просмотреть параметры запроса и найти, как именно передается токен, а затем сформировать аналогичный запрос.

Помните, срок жизни токена - 120 секунд с момента, как он был получен нашим компьютером. А сайт, где используется токен, получает от Google timestamp с датой и временем, когда токен начали получать.

Как узнать “googlekey” и “action”

googlekey: Зайдите на страницу с капчей и посмотрите в консоль браузера.
Найдите iframe, в котором вызывается рекапча. Можно поискать по тексту src="https://www.google.com/recaptcha/api2/anchor
В этом адресе загрузки скрипта найдите параметр k его значение и есть googlekey. Оно не меняется для каждого отдельного вебсайта, использующего защиту Google reCAPTCHA.
action: В консоли браузера на странице с капчей найдите скрипт, вызывающий метод grecaptcha.execute, параметр action передается в аргументах при вызове этого метода, его значение нужно передать в запросе к in.php при загрузке капчи. Если его нет - его передавать не надо.

Как определить необходимое значение score

При тестировании всегда запрашивайте максимальный, score=0.9. После того, как вы убедились, что с максимальным score вы проходите капчу, нужно определить минимально-допустимый score. Пришлите по 10 капч со score = 0.3, 0.5, 0.7 и 0.9 и таким образом определите, на каком score начинают решаться капчи.

Стоимость решения reCAPTCHA V3

Тип капчи Значение Score Стоимость
reCAPTCHA V3 score <= 0.3 99 руб за 1000 решений
reCAPTCHA V3 score > 0.3 160 руб за 1000 решений

Библиотеки для разработчиков

Примеры кода, а также библиотеки и модули для интеграции с нашим API вы можете найти в нашем репозитории на GitHub: