Меня зовут Алексей Тощаков, я руковожу службой антифрода в Яндексе. Моя команда использует алгоритмы и данные для защиты наших сервисов и пользователей от фрода. Один из сервисов, которые мы разрабатываем — SmartCaptcha в Yandex Cloud.
В 2021 году мы уже рассказывали на Хабре про то, как изменялась и совершенствовалась наша внутренняя капча. После публикации статьи к нам стали обращаться владельцы сайтов с вопросами о том, как можно наш инструмент использовать у них. Это стало для нас сигналом, что пора взяться за разработку сервиса Yandex SmartCaptcha для внешних клиентов. Казалось бы, весь код уже написан, так что нужно только оформить лендинг и подключить биллинг. В реальности вышло сложнее — нам пришлось провести рефакторинг кода и многое изменить. Сейчас расскажу подробнее о том, что получилось в итоге.
Начало разработки: кто тут робот, а кто — человек
Первый тикет на разработку внешнего сервиса капчи появился ещё в декабре 2020 года. И уже в тот момент было понятно, что просто так это сделать не получится. Мы общались с потенциальными клиентами, узнавали об их запросах и погружались глубже в проблемы: кому-то обязательна была кастомизация внешнего вида капчи, чтобы она хорошо вписывалась в дизайн веб-страницы, кто-то хотел «невидимую капчу» — проверку, незаметную для посетителей сайта. Отдельным компаниям, у которых бизнес был построен вокруг мобильных приложений, нужна была капча для мобильных, также были запросы на добавление выбора языка.
Сервис должен не просто принимать решения о похожести пользователя на робота или человека, а работать так, чтобы одновременно защищать сайты и не раздражать людей. А значит, нам предстояло много работать как над качеством сервиса, так и над его внешним видом, сложностью и множеством других параметров.
Мы давно используем технологию капчи внутри Яндекса и, конечно, работаем с метриками для оценки качества её работы. Было важно, чтобы высокое качество работы внутреннего сервиса сохранилось и для внешнего. В теории это стандартная задача бинарной классификации. Поэтому мы использовали обычные полноту и точность, а затем искали баланс между ними.
Однако самая большая проблема — это понять, кто на самом деле робот, а кто — человек. Один раз капча может сделать это верно, а через уже пять минут «обозвать» человека роботом и заставить его вводить слова. Это всех раздражает. По нашей статистике видно, что больше половины людей проходят нашу капчу без необходимости вводить текст, им достаточно поставить галочку. Это уже показалось довольно неплохим результатом, но мы продолжили работу: улучшали качество алгоритмов, модифицировали ML-модели, работали над разделением уровня сложности капчи в зависимости от решения модели.
«Невидимая капча» и рефакторинг
Многие владельцы сайтов не хотят отвлекать внимание пользователей на дополнительные действия вроде нажатия галочки «Я не робот». При этом сама проверка на сайте нужна. Поэтому мы получали запросы на так называемую «невидимую капчу». Это способ подключения сервиса, при котором пользователь в нормальных условиях не видит кнопку «Я не робот». Окно с заданием покажут только тем, кого виджет SmartCaptcha посчитает подозрительными. Нашим следующим шагом стала работа над «невидимой» версией сервиса. В идеале пользователь не должен видеть кнопку «Я не робот». Проверка должна проходить «под капотом» (кнопки нет, но всё работает так же, как если бы сам пользователь нажал на неё). Если алгоритмы распознали вас как человека, капча действительно будет невидимой. А подозрительным пользователям будет показан блок с текстом на картинке.
Задача выглядела просто: делаем блок «Я не робот» невидимым на странице и просто программно вызываем нажатие на кнопку. Но если мы это умеем, то зачем вообще заставлять людей в каких-то случаях проходить «мучения» с вводом символов? Напрашивался ответ, что видимая капча нам и вовсе не нужна, и можно было бы оставить только невидимый вариант.
Но если пользователь подозрительный, для него после невидимого этапа неожиданно посреди страницы сайта появится окно, где его попросят ввести два слова. Для кого-то из владельцев сайтов такой вариант не подходит, потому что внезапное появления капчи вызывает недоумение и разочарование у пользователей. При этом, если рядом с кнопкой «Войти» человек видит кнопку «Я не робот», он понимает, что проходит капчу, и предложение ввести два слова с картинки в отдельном окне уже не кажется таким внезапным.
В итоге оба варианта оказались востребованы, поэтому мы решили поддерживать разные форматы капчи, чтобы клиентов была возможность выбора и гибкой настройки.
Видимый:
<script src="https://captcha-api.yandex.ru/captcha.js?render=onload&onload=onloadFunction"
defer
></script>
<script>
function onloadFunction() {
if (!window.smartCaptcha) {
return;
}
window.smartCaptcha.render('captcha-container', {
sitekey: '<Ключ_для_клиентской_части>',
callback: callback,
});
}
function callback(token) {
console.log(token);
}
</script>
<form id="form">
<div id="captcha-container"></div>
</form>
Невидимый:
<script src="https://captcha-api.yandex.ru/captcha.js?render=onload&onload=onloadFunction"
defer
></script>
<script>
function onloadFunction() {
if (!window.smartCaptcha) {
return;
}
window.smartCaptcha.render('captcha-container', {
sitekey: '<Ключ_для_клиентской_части>',
invisible: true, // Сделать капчу невидимой
callback: callback,
});
}
function callback(token) {
console.log(token);
}
function handleSubmit() {
if (!window.smartCaptcha) {
return;
}
window.smartCaptcha.execute();
}
</script>
<form id="form">
<div id="captcha-container"></div>
<input type="submit" onsubmit="handleSubmit()" />
</form>
Оба варианта для разработчика практически ничем не отличаются — в невидимом варианте капчи нужно лишь немного изменить код для её появления. Но даже такое небольшое изменение привело к частичному рефакторингу архитектуры. Дальше расскажу, почему это потребовалось.
Изначально капча представляла собой два React-приложения:
Captcha — в нём находился код для кнопки «Я не робот», формы с заданием и одного хука useCaptchaState, который содержал всю логику капчи.
Antirobot — собирался из запчастей из Captcha с необходимыми обвязками и нуждами для конкретного сервиса Яндекса.
Когда началась разработка сервиса Yandex SmartCaptcha, мы постарались переиспользовать код, который уже был написан. Например, хук useCaptchaState, помимо логики самого виджета, контролировал загрузку ресурсов, сбор фингерпринтов пользователя и использовался в Antirobot. Это привело нас к первой версии архитектуры.
Скрипт находится на стороне пользователя и загружает два iframe: один с кнопкой «Я не робот» и хуком useCaptchaState, второй — с заданием. Все это связано небольшой библиотекой поверх postMessage. В такой архитектуре логика находилась в первом iframe, а второй был придаточным — он просто отрисовывал данные, полученные из другого окна.
Архитектура прекрасно работала для видимой капчи, но абсолютно не подходила для невидимой. Нам приходилось загружать для пользователей избыточный javascript и html-код, относящиеся к кнопке «Я не робот». Появилась идея перенести useCaptchaState в iframe с заданием. В таком варианте получалась готовая невидимая капча. Если понадобится видимая, то нужно было просто дорисовать кнопку «Я не робот».
Однако и это решение было не лучшим. Мы планировали, чтобы реальные пользователи проходили капчу уже на стадии нажатия кнопки «Я не робот». Это больше 50% посетителей сайтов. Для нас неприемлемо было нагружать такое большое количество людей неиспользуемым трафиком — в худшем случае 300 КБ.
Нужно было разделить компоненты, отвечающие за поведение кнопки «Я не робот» и блока с текстовыми картинками. В результате мы отказались от хука useCaptchaState во внешней капче и перенесли всю логику в отдельный модуль. Таким образом мы грузим только то, что нужно в конкретный момент и подгружаем остальное по мере необходимости. Невидимая версия капчи стала более легковесной по сравнению со стандартным вариантом.
Кастомизация капчи
Для капчи очень важным оказался её внешний вид. Нельзя было просто выложить сервис с дизайном, который заточен под страницы Яндекса.
Хотелось попробовать малой кровью добавить кастомизацию внешнего вида. Для начала мы разработали возможность настроить произвольные CSS-токены:
{
"checkboxBackgroundColor": "none",
"checkboxBorder": "1px solid #d9d9d9",
"checkboxBorderRadius": "6px",
"checkboxFirstLetterColor": "#f00",
"checkboxPrimaryTextColor": "#000",
"checkboxSecondaryTextColor": "rgba(0, 0, 0, 0.6)",
…
}
И получили желаемый результат:
Но в наши дни отдавать пользователям сервис, настраивать внешний вид которого придётся через CSS-токены, совершенно неправильно. Это неудобно, требует от пользователя вслепую экспериментировать с различными параметрами и не даёт возможности сразу оценить визуальные изменения. Чтобы понять, как совместить гибкость возможных настроек с удобством их подбора, мы несколько раз обсудили разные варианты с партнёрами-разработчиками и нашими дизайнерами, сгруппировав в итоге CSS-токены в несколько понятных групп:
Более того, после запуска сервиса мы быстро поняли, что пользователям нужно дать пресеты. То есть несколько самых популярных настроек внешнего вида.
Выглядит гораздо удобнее, но пока ещё не идеально. Надеемся, что этот инструмент поможет привнести в мир больше стильно выглядящих капч, и они станут полноценными элементами внешнего вида сайта, а не отдельно стоящими неказистыми «заборами» перед пользователями.
Настройка сложности капчи
Теперь к самому интересному и самому раздражающему. Капча вида «введите текст с картинки» — довольно старая придумка по меркам интернета. При этом она по-прежнему выполняет свою задачу. Не обязательно заставлять пользователя выбирать фотографии львов или катеров — в меру сложный текст справится с отсеиванием ботов. Наша капча не использует готовые фото текста, сервис сам генерирует произвольные словосочетания. Именно такой текст даёт возможность поддерживать уровень распознавания человеком 85 % и затрудняет распознавание капчи ботами. Также подробно про картинки с текстом мы писали в предыдущей статье.
Как у любого технического решения, у текстовой капчи есть преимущества и недостатки. К сильным сторонам можно отнести простую и понятную формулировку задачи перед пользователем, а также легкость реализации решения, что делает её доступной широкому кругу людей. Минус в том, что повышение сложности распознавания текста роботами очень сильно коррелирует с увеличением сложности и для людей. Грубо говоря, если роботу сложно «прочитать» текст, то и у человека могут возникнуть трудности.
Нужно было дать возможность управлять этой сложностью и находить компромисс между тем, сколько роботов будет успешно справляться с распознаванием текста на картинках, и тем, насколько сложной будет жизнь реальных людей. После того, как мы взялись за эту задачу, стало понятно что можно сформировать различные кластеры картинок с учетом того, насколько сильно при распознавании текста на них ошибаются люди и роботы. Поэкспериментировав с разными разбиениями, мы пришли к неутешительным выводам. Между людьми и специально заточенными на прохождении капчи роботами сложно найти достаточную границу, которая бы делала такое разделение оправданным. Кроме того, такая кластеризация требует накопления исторических данных и не позволяет получить новые картинки здесь и сейчас.
Анализ одной только статистики по картинкам не дал хороших результатов, поэтому мы сделали шаг назад и посмотрели на аспекты работы алгоритма генерации подобных картинок. Сопоставив это с данными об успешности людей и роботов в распознавании, мы пришли к ожидаемому выводу: чем сильнее искривлен текст на картинке, тем сложнее распознать его людям и роботам. Ожидаемо, большее искривление написанного текста ухудшает его распознавание как у роботов, так и у людей, но нашлись и другие параметры, влияющие на успех.
Аналитика аналитикой, но всё же стоит иногда смотреть глазами и удостоверяться, что мы действительно делаем что-то полезное. В нашем случае получились такие картинки:
Приятно, когда ожидания совпадают с реальностью.
Капча для мобильных приложений
Среди запросов от потенциальных клиентов, как я писал выше, была и ожидаемая задача сделать капчу и для мобильных приложений. Мы решили адаптировать сервис для работы с WebView и написать подробный гайд о том, как удобно (для разработчиков и пользователей приложений) встроить капчу в мобильные приложения.
Что в итоге
В начале разработки капчи мы думали, что у нас уже есть готовый продукт, которому не хватает разве что системы для приема оплаты. Всё оказалось гораздо сложнее. Запустить и развивать внешний продукт, даже имея хорошую технологию, не так просто. Сервис SmartCaptcha отличается от внутренней капчи: мы добавили новые возможности, провели рефакторинг кода и продолжаем вносить изменения.
Тестируйте нашу капчу, делитесь мнениями в комментариях, подписывайтесь на блог и следите за новыми публикациями.
Комментарии (89)
AlexHighTower
17.05.2023 07:35+8Если бы ещё капча не возбуждалась на ipv6 от hurricane tunnel broker, то было б неплохо, но поддержка несколько раз дала понять что делать ничего не будут, чем поддакивают пользоваться сервисы Я только если совсем никак
314159abc
17.05.2023 07:35А всякие туннели/впны (читай – анонимайзеры) в любом случае будут делать профиль не похожим на общечеловеческий.
AlexHighTower
17.05.2023 07:35+3я часто вообще захожу в поиск в режиме "инкогнито", так кроме капчи ещё разражает куча переходов на sso.yandex и подобное… и это всего то при открытии ya.ru
SuperTEHb
17.05.2023 07:35+6Тоже бесит. Вот бы была лёгкая версия яндекса, где только поисковая строка и всё... Жаль, что до такого никто не додумался.
Mad__Max
17.05.2023 07:35+4Давно додумалась, была такая — располагалась по адресу ya.ru в течении многих лет.
Но после того как основной домен yandex.ruотжалипродали (вместе с Дзеном и новостным агрегатором) в прошлом году Яндекс переехал на ya.ru как основной. А супер-минималистичная версия Яндекса, которая до этого момента на этом домене висела в процессе похоже потерялась.P.S.
Возможно не потерялась, а в свою очередь тоже просто куда-то переехала? Но тогда я не знаю куда ее задвинули...
aborouhin
17.05.2023 07:35+17Ну здравствуйте от человека, который по Вашей милости регулярно OCR'ом работает :) Пара поисков товара на Я.Маркете - и здравствуй капча. Да, я захожу из-за границы. Но я захожу под своим аккаунтом, я с этим аккаунтом из этой страны (и в основном с одного и того же статического IP) захожу уже полгода. Регулярно делаю реальные покупки. Этого никак недостаточно, чтобы меня из роботов в люди зачислить?..
toshchakov Автор
17.05.2023 07:35+2Здравствуйте!
Сожалеем, что вы столкнулись с такими проблемами.
Информация про то, из какой страны заходит пользователь — это один из факторов, которые использует наша ML-модель. Это далеко не единственный фактор, который мы используем для принятия решения.Чтобы мы могли разобраться конкретно с вашей ситуацией, напишите нам в форму поддержки https://yandex.ru/support/smart-captcha/index.html#help (с указанием вашего ника и того, что вы с Хабра).
Forum3
17.05.2023 07:35+2Еще некоторые около/государственные сайты не дают заходить из других стран(в частности из Казахстана) к ним. "Очень удобно". При чем не то что капчу, сразу доступ запрещают.
Hungryee
17.05.2023 07:35С государственными сайтами это судя по всему норма. На американские госсайты вообще невозможно зайти не с американского айпи
aborouhin
17.05.2023 07:35+1Не только государственные и не только в России, увы. Интернет на глазах распадается на отдельные сегменты... У меня свой VPN с маршрутизацией (по GeoIP, спискам РКН и/или вручную настроенным перечням сайтов / AS) между тремя странами, которые мне часто нужны (ну и такая же маршрутизация на домашних роутерах), позволяет не переключаться между VPN / без VPN / другим VPN постоянно... Но это точно не к Яндексу и не в эту тему :)
KOCTALEM
17.05.2023 07:35+18Тестируйте нашу капчу
Спасибо, натестировались. Как справедливо уже заметили, перелистывание нескольких страниц результатов поиска практически гарантированно приводит к появлению запроса на капчу. И они что-то такое в свою капчу подмешивают, что прокси-сервер считает это злостной рекламой и вырезает, из-за чего капчу пройти невозможно. А поскольку сотрудников через эти прокси выходит много, подозрения яндексовского "антифрода" только крепнут!
Уж как мы с этим только не боролись... и в поддержку Яндекса писали, и настройки прокси по-всякому крутили, всё бесполезно... последнее средство -- официальное письмо на бланке компании за подписью Генерального директора о том, что в офисах компании используются такие-то статические адреса прокси-серверов, принадлежащие нашей автономной системе, пожалуйста, сделайте для них исключения в ваших фантастических алгоритмах. И вы знаете, помогло! На полгода примерно, потом капча стала мучить пользователей снова.
Поэтому наши хелпдески всем пользователям говорят -- используйте какой хотите поиск, но только не Яндекс.
Zzzz9
17.05.2023 07:35+7Если при перелистывании вылазит что-то про робота, перехожу в другой поисковик, галочку не ставлю принципиально.
Stanislavvv
17.05.2023 07:35+16Чтобы оказаться подозрительным достаточно просто быстро открывать страницы, причём, похоже, любые. Читаю я быстро, оценить, что на странице ничего нужного могу за секунду, соответственно — капча показывается примерно каждый раз, как захожу на любой сервис яндекса.
Чтобы получить постоянный 403 на яндекс.маркет — достаточно случайно зайти туда с рабочего впн до одного из дц, после чего капчу уже не предлагают, а сразу отдают 403 в данный браузер. ДЦ - в России, если что.
Данная мера (403) нихрена не помогает от всяких скраперов и т.п., так как 403 отдаётся только браузеру с соответствующей кукой, т.е. скрипт вполне себе без авторизаций и кук будет получать нужное.
техподдержка - набрана с вокзалов, причём по составу не проходили, ибо не предлагать почистить куки - это уровень первого вагона.
Вобщем, мой вывод: конкретно это — защита от честных людей.
toshchakov Автор
17.05.2023 07:35-30. Не совсем так. Для того чтобы антиробот определил подозрительное действия, берется множество факторов и одной скорости работы недостаточно. В случае SmartCaptcha клиент сам решает, когда показывать Капчу, а когда нет.
1. 403 — это уже точно не капча, это другие инструменты борьбы с роботами
2. Тут уже на стороне тех сервисов, которые применяют такую меру
3. Наши коллеги из ТП активно развиваются и вкладываются в развитие своих сотрудников. Как раз недавно была писали об этом
Wallhead
17.05.2023 07:35+3Раз вы используете ml модели, возможно они не на то натренировались? Вы же видите сколько отзывов отрицательных. Я сам кучу раз сталкивался с галками я не робот просто браузя по поисковой выдаче яндекса.
Hlad
17.05.2023 07:35+6А можно уточнить, насколько равномерные веса в этом "множестве факторов"? А то может у вас один фактор имеет вес 0,999, и ещё тысяча факторов с весом каждого 0,000001. Теоретически получается
три миллиона долларовбольше тысячи факторов, а фактически -две проститутки и старый педиквсего один.
Stanislavvv
17.05.2023 07:35+50-2. Поскольку я с таким сталкивался ТОЛЬКО на сервисах Яндекса, вывод: Яндексу не нужны более-менее продвинутые пользователи.
3. может быть и вкладываются, но это не слишком помогает в моём случае: ни первая линия поддержки, ни то, куда был эскалирован вопрос до чистки кук додумались только потребовать не использовать удобный браузер, в котором проблемы ТОЛЬКО с сервисами яндекса - это несколько не то, что ожидается от поддержки.
Для себя пока сделал следующие выводы:
как можно меньше использовать сервисы яндекса (единственный беспроблемный - почта и то, потому что писем там одно-два в неделю), проблем с ними больше, чем пользы.
по-умолчанию считать, что техподдержка яндекса не решит проблему и дешевле забить на неотвечающий сервис, чем разбираться, что там и как.
Self_Perfection
17.05.2023 07:35+8Несколько раз уже не мог пройти эту капчу. Заклинивает её в чём-то. После 3-4 попыток плюю и иду искать в duckduckgo.
Предполагаю паршиво работает с мобильным Firefox.
toshchakov Автор
17.05.2023 07:35-1SmartCaptcha, о которой я рассказывал в статье, встраивается разработчиками сервисов, и они выбирают сложность заданий исходя из своих потребностей и того, насколько критической является та или иная часть сервиса.
toshchakov Автор
17.05.2023 07:35Нам бы очень хотлось разобраться в вашей ситуации. Если не сложно, оставьте, пожалуйста, больше информации о том, что происходит, в форме с указанием вашего ника и того, что вы с Хабра.
RouR
17.05.2023 07:35+17Меня сильно раздражает ваша капча, перестал пользоваться вашим подсайтом недвижимости.
Вы попробуйте вообще сами попользоваться своими сервисами.
toshchakov Автор
17.05.2023 07:35Как настраивать капчу, решают уже владельцы ресурса. Вы можете сами настроить, как капча будет работать при наличии подозрения на автоматизацию.
SuperTEHb
17.05.2023 07:35+9И владельцы поисковика-Яндекса настроили так, что иногда им просто невозможно пользоваться.
RouR
17.05.2023 07:35+7Как настраивать капчу, решают уже владельцы ресурса.
Формально вы правы, а по сути - издевательство.
Вы отказываетесь от ответственности за ложные срабатывания.
leha_gorbunov
17.05.2023 07:35+10Это просто бесячья фиговина. Никому не порекомендую ставить на свой сайт, только клиентов потеряете. Легче самому капчу написать. К тому же скорее всего еще и шпионит за клиентами (есть четкая корреляция при входе в сбербанк онлайн в браузере, капча перестает возбуждаться, это по моим личным наблюдениям) Крайне не рекомендую для интернет-магазинов.
toshchakov Автор
17.05.2023 07:35-61) Мы только за то, чтобы появились еще алгоритмы по защите от автоматизации. Чем больше капчи, тем лучше. Но поверьте, это не простая задача!
2) Наша капча не используется в Сбербанк Онлайн, поэтому корреляция здесь случайная. В любом случае, капча не собирает никаких данных о пользователях, это исключено.
freeExec
17.05.2023 07:35+7Но постойте, вы же сами там упоминали фингерпринт пользователя, а теперь отнекиваетесь.
BlueBeard
17.05.2023 07:35+3боже упаси сотрудничать с компанией у которой "семь пятниц на неделе"
ps: о чем можно говорить, когда яндекс вебмастер рассказываем мне что не видит яндекс dns
hard_sign
17.05.2023 07:35+11На днях проходил вашу капчу минут десять. Какими словами были охарактеризованы разработчики яндекса – догадайтесь сами. Если почувствовали над офисом воронку инферно – это было оно.
А всего-то надо принимать результат ввода капчи не только как одно слово, но и как несколько слов, разделённых пробелами. Не «успервалпрочему», а «успевал прочему».
Lexicon
17.05.2023 07:35+19Одна из худших капч. У вас KPI не отказоустойчивость, как должно быть, а видимо ущерб бренду.
Капча должна защищать сервисы от нагрузок ботов, а не заставлять пользователя в обмен на операцию, занимающую у вас 5 мс тратить 10 минут времени или уходить к конкурентам.
Давно не пользуюсь многими сервиса яндекса только из-за капчи на поиске, сама мысль, что придётся тратить минуту, не справляться с капчей и потом уходить в утку натренировала мозг не пытаться открывать сервисы яндекса даже без впн
toshchakov Автор
17.05.2023 07:35KPI как раз определяет владелец сервиса. Если для него остановить роботов критичней, чем конверсия, то есть возможность так и сделать. Наоборот тоже.
Newbilius
17.05.2023 07:35+7Просто в данном случае чересчур параноидальные настройки на конкретном сервисе портят репутацию самому инструменту. Причём учитывая, что Яндексу принадлежат и сам инструмент, и сервис, который этому инструменту портит репутацию... что-то пошло не так :(
GDragon
17.05.2023 07:35+1Мне ещё интересен один простой вопрос.
Если сама компания разработчик капчи, использующая её в одном из своих сервисов, не может настроить оную так что бы не вызывать подгорание филея у пользователей...
А сторонние сервисы точно справятся?
nerlihmax
17.05.2023 07:35+2Повторюсь за другими: каждые три запроса в поисковике - капча. Это массовая и бескомпромиссная экспансия Толоки что-ли? Кстати, в саппорте лишь пожали руками: "мы научим модель не превращать поиск в толоку, когда-нибудь, может быть, извините". Причем первое время капча всплывала только из под рабочего впна. Через неделю на мой ноутбук, видимо, уже поставили "черную метку", ибо сеть уже перестала влиять
Hlad
17.05.2023 07:35+6Бгг, а вы попробуйте в Толоке что-нибудь поделать неторопливо. Я проводил эксперименты: пока задачи выполняю я сам (с хорошим интернетом, очень скоростным чтением и т.д.) - задачи валятся пачками. Посадил тестя, который на пенсии, и делает всё весьма неторопливо - через десяток заданий он получил "шадоу бан" (то есть, Толока вроде как и работает, но задач для него нет). Повторил эксперимент ещё с парой людей - аналогично
Разработчикам Яндекса просто в голову не приходит, что есть реальные люди, которых будет устраивать доход в 5-10 тысяч в месяц за многочасовое кликание мышкой в интернете, и они этих людей сразу записывают в боты. Вероятно с формулировкой "неужели вообще существуют люди, которые работать меньше, чем за триста тысяч в месяц?"
Lika_Chernigo
17.05.2023 07:35+3Интересная статья, спасибо! Мне нравятся тексты на капче Яндекса. Даже более того: один из них вдохновил меня сделать канал в телеге. Я искала что-то в Вордстате, вылезла капча с текстом «Крыша переживай». Ух, какаю бурю эмоций во мне вызвала эта подпись. Такую, что я создала тг-канал и назвала «Крыша переживай». А обложкой для него стал скриншот капчи. Так что спасибо вам за сервис :)
developer7
17.05.2023 07:35+19Ужастная капча. Пару раз сталкивался (редко пользуюсь вашими продуктами) — и честно говоря потратил на её ввод непозволительно долгое время.
И да как человек когда то разрабатывающий программы по взлому капч могу сказать, что ваша капча предназначена только для отпугивания людей, с чем она прекрасно справляется, но совершенно не способна отпугнуть бота специально сделанного под вашу капчу.
Поясню свою мысль — при взломе капч главное выделить отдельные символы, у вас это делается с лёгкостью, ничего не сделано что бы максимально склеить символы. Опять же все ваши искривления — это только сломать человеку мозг, а программа анализирует алгоритмы искривления, например если есть какие то волнистые линии или другие пиксели, и делается карта градиента искривления. А потом просто восстановление изначальной картинке по карте.
Например в вашей капче, так на вскидку ищем в символе прямую линию, смотрим наклон, отличающийся от 90% и строим карту градиента. Разумеется под каждый символ можно сделать свои индивидуальные настройки. Сколько там символов? Русский алфавит + цифры? Опять же у вас волна, поэтому искривление соседних букв должно быть минимальным. отсюда можно стразу выкидывать неправильно определённые искривления промежуточных букв. Короче куча вариантов для алгоритма.
Хотя я перемудрил. Делаем максимальное мыло. Получаем тупо искривлённую линию. А дальше просто выпрямляем эту линию. Сдвигаем пиксели всей картинки. Ну и получаем чистые нормальные символы. Далее уже нарезаем.А далее отдельные нарезанные картинки подаются на нейросеть. Ваши буквы даже простейший перцептрон будет правильно анализировать символы на лету.
Опять же фон — вы человеку хотите трудности или роботу? Ваш фон удаляется с картинки самым простейшим алгоритмом — буквы имеют чёрный цвет. Выкидываем всё что не чёрное. Это к капче из статьи. Если у вас и цветные есть (не знаю) тоже выкидываем всё что не цвет символов.
Повторяюсь — главное в капче нарезка символов и преобработка картинки (исправление искажений и другие операции из разряда фотошопа). А сама нейросеть уже не главное — справится абсолютна любая, даже самая кривая.
Upd. Ещё добавлю — чем больше всяких цветовых искажений, тем труднее для человека и проще для алгоритма. За каждый цвет можно зацепится и использовать его в алгоритме.
Например буквы одним цветом а искажения куча других — тогда просто оставляем только цвет букв, или например разноцветное месиво можно все цвета уровнять и получить почти идеальные символы. Поэтому чем меньше за что зацепится, и найти взаимосвязи тем сложнее автомату. ЧБ капчи самые идеальные. А если ещё и на эффекте шума..., но тут тоже куча вариантов. Шум можно замылить и опять же получить чёткие символы.
Flying
17.05.2023 07:35+8Перестал пользоваться Кинопоиском и Яндекс Маркетом (последнее чем ещё пользовался) именно из-за капчи.
Сейчас, кстати, стало получше, а раньше любая попытка захода на сайт через зарубежный VPN - гарантия получения капчи чуть не после каждой страницы.
Так что спасибо, но в интернете к счастью есть альтернативы.
Zheleznov
17.05.2023 07:35+9Зайти в инкогнито, вылезет капча! Перезайти в другой профиль, вылезет капча. Зайти в вордстат и что-то проверить тоже капча, даже без инкогнито. Вообще любой сервис в яндексе через инкогнито, привет капча!!! Бесит ужасно, и ничего тут не исправлено, как вылезала по 100 раз при каждом запросе в вордстате, так и вылезает! Вход через vpn снова капча...
Теперь ещё и когда поисковиком пользуешься, вечно вылезает этот надоедливый баннер, установите яндекс браузер...
Зачем???!!!
Сначала "Сделайте Яндекс поисковиком по умолчанию" ок, сделал, а теперь баннер с браузером мельтешит, месяц потерпел и вернул гугл
ABy
17.05.2023 07:35+1Интересно, как будут выкручиваться, когда нейросети начнут решать каптчу лучше людей. Или мы уже на этом этапе, просто не всем пока доступны такие инструменты?
314159abc
17.05.2023 07:35Мы уже точно на этом этапе, об этом косвенно упомянуто в статье, в комментариях выше тоже уже написали, что исправить искривление и распознать не такая уж и проблема. Инструменты такие в open-sourse пространстве есть, если захотеть – найти не проблема.
AngelNet
17.05.2023 07:35+7Я честно пытался решить капчу яндекса и писал им фидбеки пару лет назад, когда перешел на постоянное использование зарубежными VPS.
Меня дико бесил мелкий шрифт (нечитабельный для пользователя с плохим зрением как я), а также замысловатая геометрия начертания слов, после которой разобрать что либо не представлялось возможным ни роботу ни человеку со здоровыми глазами!
Капча вылазит у меня стабильно и постоянно на поиске яндекса при обычном пролистывании результатов. Как писали пользователи выше достаточно быстро кликать страницы и уже на 3/5 ой странице вылезет эта дрянь.
Порой возникает необходимость найти что-то уникальное, что гугл фильтрует, а утка не ищет вообще, затем и приходится обращаться к яндекс-поиску иначе он давно бы отправился на помойку вслед за своей почтой (которую я тоже попробовал и дропнул).p.s. Обращание к разработчикам яндекса: начните сами пользоваться своими сервисами и обязательно через VPN.
Непередаваемый user expiriens гарантирован.
p.p.s. Думать о людях, живых людях, а не роботах у вас по прежнему получается плохо, нужны испытания на "кошках" и программистах, разрабатывающих это дерьмо. (уж простите не сдержался!)
ganzmavag
17.05.2023 07:35+4О, вот у кого можно спросить. Мой типичный сценарий: пользуюсь кучей ваших сервисов, залогинен. Но порой внезапно ваша капча начинает защищать сервис от моего использования. Это что, правда выглядит как реальный сценарий, при котором просто необходимо мне что-то ограничить? Смотрю у многих так: речь не идёт о каком-то бешеном парсинге, люди просто пользуются сервисом и их принимают за роботов.
Ладно когда анонимный или новый пользователь. Но когда ваш, которого вы со всех сторон изучили - прям реально надо ему капчу совать? А то что? Что может случиться?Три-четыре клика подряд у вас серверы перегрузят?
just_login
17.05.2023 07:35+3Ещё один комментарий в копилку недовольства капчой.
Яндекс, вы своими руками отталкиваете от себя пользователей, которые сохранили лояльность к вам после переезда за границу.
Не пользуюсь ни впн, ни прокси, просто уехал, но привык пользоваться поиском и другими сервисами Яндекса. Пришлось менять привычки, поскольку сил пользоваться Яндексом уже нет - капча выбешивает. Полбеды когда она регулярно выскакивает - можно выругаться и ввести, но когда она не работает, то есть когда десятка раз подряд не хватает чтобы определить во мне человека - ничего не остаётся кроме как нажать на крестик и пойти в другое место.
Ionenice
17.05.2023 07:35+3Максимально недружелюбная капча. Иногда нравилось использовать яндекс переводчик, но впихнуть капчу на очередной ввод или перезагрузку страницы и ко всему этому капча на русском языке которая не прощает ошибок… Это просто убого, как этим можно пользоваться? Чистый ip, без vpn. Возможно в некоторых случаях проблема в ipv6, но почему это должно волновать пользователя?
mayorovp
17.05.2023 07:35Неправда, максимально недружелюбная капча — это в Epic Games Store, та где надо крутить стул.
EngineTech
17.05.2023 07:35+8В режиме инкогнито ловлю капчу уже на 3 странице поиска. Что с телефона, что с компьютера. Даже гугл не настолько ретив, поэтому извини яндекс, но твой поиск для меня закрыт.
andy_p
17.05.2023 07:35+2Пользуюсь ya.ru/archive. Капча появляется каждые 5 минут. Если сказать политкорректно, то это меня сильно затрахало.
ef_end_y
17.05.2023 07:35+10Не зря статью писали. Благодаря ей от комментаторов узнали сколько у вас проблем с вашей капчей)
bullfrog
17.05.2023 07:35Вот у меня нет кириллицы на клавиатуре. Яндекс удобен тем что автоматом переводит посиковые запросы из транслита - но капча - только по русски. И часто.
0x200AC
17.05.2023 07:35+2При попытке ввести более одного запроса в "Яндекс Картинках" или просто при переходе в них из выдачи поисковика зачастую получаю нерешаемую циклическую капчу. Но это еще полбеды. Беда в том, что иногда после ввода капчи выдача кардинально меняется, порой на совершенно нерелевантную.
И как уже выше многие писали - все чаще возникает желание закрыть вкладку и обратиться к Google.
Opaspap
17.05.2023 07:35+2А вообще есть капчи которые современные модели не могут пройти ? Ну я вот с трудом себе представляю, чтобы CLIP не мог найти автобус на картинке или текст распознать такой, который человек может распознать.
maxlilt
17.05.2023 07:35+2Теперь знаю кого "благодарить" когда блокируется на сутки отправка почты ;)
freeExec
17.05.2023 07:35+6А вы заметили как на критику капчи на самом яндексе, автор упорно дистанцируется от яндекса, и убеждает нас, что владельцы сервиса сами там должны что-то настроить.
toshchakov Автор
17.05.2023 07:35-2В статье мы описали разработку сервиса SmartCaptcha, который любой владелец сайта может использовать у себя и по своей логике показывать капчу. В том числе SmartCaptcha используется Яндексом.
AlexVWill
17.05.2023 07:35+2Простите, а для чего вообще надо использовать это убожество от Я, если Google давным-давно сделал reCAPTCHA v3, максимально дружелюбное и надежное решение? Да, оно тоже изредка глючит, и предлагает отметить или заборы или светофоры, но во 1-х там это происходит ГОРАЗДО реже, а во 2-х никакой кириллицы, которая иностранцу вообще непроходима... Пользуйтесь: https://www.google.com/recaptcha/about/
mnnoee
17.05.2023 07:35Думаю статья писалась только из-за того, чтобы узнать недовольства при юзер экспириансе. Хороший ход.
Didimus
17.05.2023 07:35Как ваша модель обучается? То есть как вы размечаете запросы, которые были от роботов? Это же почти невозможно вручную
LAutour
Чтобы оказаться подозрительным хватает уже просто перебора страниц результата поиска - раздражает жутко!!! А без перебора иногда никак, особенно если ищешь по новизне: имеющийся фильтр по времени работает довольно криво пропуская кучу старого, а выборочные сортровки результатов яндекс уже давно убрал (очень удобная вещь была).
GDragon
Причина думаю не в том что пользуется мало людей, а в том что поисковику выгодно длительное нахождение людей на страницах поиска.
Больше результатов перебирать - больше рекламы и "продвигаемых результатов" посмотрит.
LAutour
Если бы он они еще давали много перебирать - 10..20 пролистываний страниц результатов и ты кажешься яндексу подозрительным.
Mad__Max
Это еще и неплохо, меня на проверку часто и без листания страниц выдачи вообще отправляют. Если быстро что-то ищешь, с небольшими промежутками времени сделал 2-3 запроса (обычно уточнения/переформулировки исходного или дополнительного связанного с ним). На каждый запрос прокликал 3-5 ссылок из результатов (причем обычно вообще дальше 1й страницы не уходя). Все, ты наверно робот, решай КАПЧУ!
Причем, блин, мне периодически от Яндекса еще "двойная" КАПЧА достается, о которой в статье вообще не слова.
Это когда тебя при использовании поиска Яндекса заподозрили роботом, заставили решать КАПЧУ, и ты ее правильно решил с первого раза, НО вместо продолжения работы Яндекс такой: что-то ты мне все-равно подозрительным кажешься! А ну-ка решай второй раз другую теперь иначе искать ничего не дам!
P.S.
Если с учетом нулевой стадии (где текст искаженный набирать не надо, а только поставить галку "я не робот"), то КАПЧА получается тройная: 1 — ставим "я не роборт", 2 — нам не верят, вводим текст КАПЧИ, 3 — нам все-равно не верят и заставляют пройти капчу (другой ее подвариант) еще раз.
TheRaven
Какой замечательный кактус. А зачем его есть-то?
toshchakov Автор
Добрый день!
Нам очень жаль, что вы столкнулись с такими проблемами.
На подозрительные запросы мы действительно можем показать несколько челенджей в виде капчи подряд.
Для того чтобы мы могли разобраться конкретно с вашей ситуацией, напишите в форму поддержки https://yandex.ru/support/smart-captcha/index.html#help
С указанием вашего аккаунта и того, что вы с Хабра.
Stanislavvv
А 403 залогиненному и доступ после чистки кук после того, как пользовался рабочим местом с выходом в инет в том числе и из датацентров?
На мой взгляд - это больше издевательство, чем защита.
toshchakov Автор
403 — это уже точно не капча, это другие инструменты борьбы с роботами.
Hlad
Ребята, это не единичная проблема, а реально массовая, и количество плюсов к исходному комментарию - тому подтверждение. У меня, например, аналогично, из-за этого даже поставил гугл поисковиком по умолчанию. Подорожник в виде "сообщите название аккаунта, мы вам персонально всё отключим" - не поможет.
orekh
двойная капча - это ещё по божески, вот бесконечные повторы капчи от cloudflare - это средство пыток
MaFrance351
Хуже только hCaptcha с их кончеными требованиями...
GDragon
слишком быстро листаешь, рекламу не досмотрел)))
KOCTALEM
В моём случае достаточно 5 страниц. На 5-й гарантированно появляется капча, иногда даже раньше.
Didimus
Осталось сделать капчу с просмотром рекламы.
GDragon
НЕ подсказывай1111
Didimus
На рутубе уже было
GDragon
Думал про рутуб, но там это скорее элемент рекламы, а не капча.
Но да, наиболее близкое.
p.s.
Было? Вроде же всё ещё есть.
SuperTEHb
Или если решаешь в процессе поиска переформулировать запрос. Например вместо "$названиедетали чертёж" пробуешь искать по запросу "$названиедетали размер". Более того, с телефона капча иногда ни в какую не принимается!
toshchakov Автор
Важно разделять алгоритм для принятия решения о показе капчи и саму капчу. Алгоритм может быть простым, например, на любой форме смены пароля мы будем просить пройти капчу. Или же может быть сложным для поиска трафика от роботов, например, парсеров.
И каждый владелец сервиса может настраивать механики принятия решения. Но в любом случае спасибо за обратную связь, самые наши главные метрики про людей и только после контроля уровня дискомфорта наших пользователей мы делаем какие-то изменения для борьбы с роботами.
toshchakov Автор
Не совсем так. Для того чтобы оказаться подозрительным, учитывается много факторов. Кроме того, владелец сайта сам определяет, когда появляется капча. Это два разных механизма: 1) есть алгоритм, который принимает решение — показать челлендж в виде капчи или нет. Алгоритм может быть простой, типа «всегда показывать челлендж при заполнении формы» 2) капча — один из возможных челленджей.
Тут важно отметить, что в данном случае не идет речь о капче в контексте поискового портала Яндекса. Речь идет о капче как инструменте. И если для вас важно не снижать воронку, можно включить простую капчу.
tukreb
Да, меня буквально з***** это их капча каждые 2 страницы поиска, и самое ***** что не важно быстро или медленно листаешь, ровно каждые 2-3 нужно вводить капчу. У меня просто нет слов, они делают всё, чтобы пользователи не пользовались их поисковиком.
При чём это началось не совсем так уж давно, наверно 3 месяца назад.
Mad__Max
Такое у них уже давно было, еще пару лет назад. Но потом како-то попустило, прекратился этот бред, причем без каких либо действий/изменений с моей стороны и даже без жалоб в поддержку.
А последние пару месяцев действительно снова обострение старой болезни началось.
Рецидив так сказать...
micronull
Самый позорный кейс с которым постоянно сталкиваюсь, это капча на яндекс маркете при переходе на товар из стороних поисковиков.
Разумеется не буду тратить время на её разгадывание, а пойду к конкурентам - озон, wb и т.д.
Domorost
Та же проблема. Когда я все же изредка даю возможность тому, что осталось от поиска яндекса доказать мне, что он еще что-то может, то мало того что первую страницу нужно сразу игнорировать из-за массовой саморекламы яндексом своих вертикалей, так и на второй странице меня ждет не выдача, а капча.
Яндекс, я не Индус, вы мне по 0000.1 доллара за решение капчи не платите. Я просто закрываю и отправляюсь с вашего портала в нормальный поисковик.