Яндекс капча Smart Captcha

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

Начиная с понедельника, мы получаем множество сообщений о том, что Яндекс опубликовал новую, ни на что не похожую, как и всё, что делает Яндекс, капчу "Я не робот", которая самим Яндексом названа Smart Captcha.
Почитать о ней можно на официальной странице: Smart Captcha.

Поначалу, конечно, мы испугались: Яндекс заставит отрабатывать JS, проверяя на какой странице он воспроизводится а значит придётся эту капчу отдавать в десктопные боты работников, подменяя заголовки браузера и контент страницы, как это происходит с ReCaptcah Enterprise или Arkose Labs.

Мы долго надеялись что это очередной временный эксперимент Яндекса и откладывали разбор на потом. Но сейчас вечер пятницы и капча всё ещё не пропала. Штош. Начинаем исследование!

яндекс капча

Делаем несколько подряд запросов в Яндекс, получаем капчу, смотрим в код страницы:
яндекс капча

Так. По коду - при клике на чекбокс у нас отправится POST на /checkcaptcha, содержащий параметры: key, rdata, d, k.
Ок, делаем из консоли этот запрос и… Гм. И всё. В ответ мы получили результаты поиска.

яндекс капча

Т.е. всё, что нам нужно сделать, это:

  1. При попадании на страницу https://yandex.ru/showcaptcha распарсить ее и вытащить данные формы
  2. Отправить запрос к https://yandex.ru/checkcaptcha с данными формы
  3. Решить обычную капчу, если Яндекс вам ее покажет

Дальнейшие тесты показали, что после поста в /checkcaptcha иногда можно получить классическую капчу Яндекс поиска (в рукапче мы её называем Яндекс V2):

яндекс капча

Мы запросили комментарий у кота анонимного неработника яндекса, типа какой смысл в этой капче, вот его ответ:
яндекс капча

Шутки-шутками, а Яндекс не останавливается в работе над капчей и начал что-то подозревать. По всей видимости, вскоре они при прохождении этой "Smart"-капчи будут полноценно анализировать профиль пользователя, и на основе анализа устанавливать сложность задачи (меня не покидает ощущение дежавю, где-то я эти принципы уже встречал).