Почему не вводится капча в яндекс браузере
Никто не любит капчу. Угадай слово по плохой картинке, собери пазл, отличи светофор от гидранта, сложи два числа и так далее. Формы бывают разные, но суть всегда одна: мы тратим своё время и нервы.
Чуть больше года назад моя команда взялась за модернизацию старой капчи Яндекса. Обычно в таких задачах стремятся повысить качество и полноту отсева ботов, оставив человеку шанс прорваться через капчу. Но мы зашли с другой стороны: решили сделать капчу более дружелюбной к людям, не ухудшив при этом защиту от ботов. Казалось бы, наивный подход. Но у нас получилось.
Сегодня я расскажу об этом подробнее. Вы узнаете, как мы отказались от распознавания текста и перешли к его генерации. Покажу примеры дружелюбной капчи. Расскажу о необычном опыте применения капчи в образовании. А ещё покажу текущий вариант капчи без капчи и немного поразмышляю о будущем.
Несколько слов о том, зачем нужна капча. Уверен, это и так не секрет, но историю всё же стоит начать с основ, чтобы быть на одной волне.
Капча — это инструмент, который помогает сервису понять, обратился к нему человек или робот. Это полезно, потому что роботы создают нагрузку или даже занимаются откровенным вредительством. При этом нужно показывать капчу не всем, а только тем, чьи запросы похожи на автоматические. Для этого надо проанализировать запрос. Анализ — это уже давно не просто подсчёт числа заходов с конкретного IP. Факторов для анализа намного больше, чем один. С другой стороны — сервис с нагрузкой в сотни тысяч RPS и с жёстким требованием к скорости ответа пользователю. Если снизить скорость ответа, то пострадают пользователи. Если снизить полноту выявления ботов, то в итоге опять же пострадают пользователи. Значит, нужно искать баланс между этими крайностями. И получается, всегда будут люди, которым покажут капчу.
Первые шаги
Год назад наши пользователи видели примерно такие задания:
Два слова. Одно мы знаем. Другое хотим узнать. Вряд ли я открою большой секрет, если расскажу, что капчу часто применяют для обучения компьютерного зрения. Раньше так было и у нас.
В целом ничего жуткого, да? Но могу и жути нагнать. Вот примеры более сложных (но крайне редких) вариантов:
Мы, конечно, такое вычищали. Использовали для этого как классификаторы неоднозначно читаемых картинок, так и данные о поведении пользователей (если человек даже не пытается ввести текст, то это плохой сигнал). Но и после таких изменений людям было очень сложно. Можно сказать, что старая капча отлично экономила ресурсы: её не могли пройти ни боты, ни люди. Только 35% реальных пользователей справлялись с первой попытки. Очень страшное число. Нужно было что-то менять.
Начали с анализа наиболее частых ошибок. В топе оказались знаки препинания, верхний и нижний регистр букв, лишние пробелы. Посчитали, как у ботов с этими проблемами. Оказалось, что можно безболезненно отказаться от их учёта при проверке результата. Эти элементарные, быстрые решения принесли нам с ходу +15%. Но дальше простые идеи закончились. Нужно было подойти к задачке более глобально.
Свои картинки с текстом
Поговорим о картинках. Так как их мы не генерировали, а вырезали из готовых, иногда там встречались очень необычные тексты. Их вы уже видели выше: это и перевёрнутые штрихкоды, и логарифмы. Их можно фильтровать с переменным успехом, но гибкости в работе с ними нет. Нельзя оперативно управлять сложностью, контролировать допустимый словарный запас, выбирать язык для разных стран. Если хочешь полностью контролировать качество капчи, то выход только один — генерировать картинки самостоятельно. Так мы и поступили.
Мы хотели создать капчу, которая будет существенно легче читаться людьми, но не ботами. На входе у нас есть какой-то текст и какой-то фон. Осталось понять, что нужно с ними сделать, чтобы добиться желаемого.
Наиболее эффектно, пожалуй, выглядит способ точечно искажать исходную картинку так, чтобы машина видела в ней совершенно не то, что видит человек.
Но такой подход крайне чувствителен к изменениям алгоритмов распознавания на стороне роботов. Пришлось бы мониторить их особенно тщательно и слишком часто адаптироваться. Поэтому мы подошли более консервативно.
Задачу распознавания текста нейросетями сейчас решают хорошо, причём уже далеко не только лидеры индустрии. Но трудные задачки по-прежнему встречаются. Наиболее сложные датасеты с распознаванием слов на сегодняшний день представляют собой сильно искривлённые тексты (irregular text recognition).
Это то, с чем человек справляется относительно просто. Но не робот. Этот подход мы применили и у себя. Пример такой капчи:
Выглядит проще, чем раньше? Наши пользователи тоже так считают: эту капчу легко преодолевают уже 85% пользователей. А вот ребятам, которые учатся обходить нашу капчу, работы прибавилось.
Скриншот с одного из «секретных» форумов об автоматизации
Конечно, со временем к ней адаптировались, но масштабы проблемы в итоге не больше, чем у старой капчи. При этом людям стало существенно проще.
Полезная и добрая капча
Успех с генерацией собственных картинок воодушевил нас. Мы осознали, что капче не обязательно быть исключительным злом в глазах пользователей. Она может быть такой, какой мы захотим её сделать. Например, полезной для людей.
Каждый октябрь в России отмечают День учителя. Мы решили отпраздновать его по-своему и с пользой. Собрали данные о том, в каких словах пользователи чаще всего делают ошибки. (Яндекс по понятным причинам неплохо в этом разбирается.) На базе этого словаря сгенерировали капчу, отметив те буквы, в которых люди ошибаются. Выкатили на огромную аудиторию. Ботам это ничем не помогло, а вот людям (хочется верить!) пользу принесло.
Другой пример работы с капчей, чуть ближе к концу 2020 года. Хотелось немного поднять пользователям настроение. Придумали использовать для генерации капчи не какие попало слова и фразы, а только те, что несут положительный эмоциональный заряд. Проще говоря, такие слова, которые как минимум не портят настроение ещё больше, а в идеале улучшают его.
Собрали данные с помощью толокеров. Сгенерировали. Получили капчу, которая содержала фразы «Приятных эмоций», «Вам всё по плечу», «Продуктивного дня» и подобные.
В общем, идей для работы с капчей много. Но нельзя забывать самую главную: лучшая капча — это та, которой нет.
Капча без капчи
Вернёмся в самое начало нашей истории. Там я рассказывал о том, что капчу предлагают только тем пользователям, чьи запросы в результате быстрого анализа показались нам подозрительными. Быстрый анализ отрабатывает примерно за одну (!) миллисекунду. Делать это дольше без вреда для высоконагруженного сервиса и миллионов пользователей нельзя. Это значит, что нужно использовать быстрые алгоритмы, а они не всегда самые точные. Из-за этого люди видят капчу. Как можно обойти это узкое место? Использовать промежуточный шаг!
Теперь это работает так. Если человеку не повезло попасть на страницу с капчей, то вместо капчи он видит предложение поставить галочку и подтвердить, что он не робот.
Пока пользователь ставит галочку, мы проводим дополнительный анализ с использованием более сложной ML-модели. Если всё хорошо, то возвращаем на сервис. Если «подозрительность» сохраняется, то показываем текстовую капчу.
И ещё кое-что важное. Переход от бинарных вердиктов (бот — не бот) на первом этапе к вероятностным («робот на N%») на втором позволяет нам управлять сложностью капчи! Если на втором этапе мы по-прежнему считаем запрос подозрительным, но степень уверенности в этом не такая высокая, то показываем простейшую капчу. А вот если мы уверены, что перед нами робот, то можем сложность и приподнять. Простое, но эффективное решение.
Несколько слов о значимости этого решения для людей. Выше мы радовались тому, что 85% (а не 35%, как было раньше) пользователей справляются с новой текстовой капчей с первой попытки. Но с галочкой «Я не робот» ситуация изменилась радикально: теперь более половины пользователей возвращаются в сервис вообще без необходимости разгадывать капчу! Вот такая вот капча без капчи.
За последний год мы прошли длинный путь, но идей на будущее от этого меньше не стало. Мы уже работаем над тем, чтобы получать более точные вердикты в реальном времени и без перенаправления на промежуточные страницы. И уже есть первые успехи. Один частный пример: теперь в Safari в режиме Инкогнито встретиться даже с галочкой «Я не робот» вероятность примерно в десять раз ниже, чем раньше. Кроме того, хотим пробовать новые, более добрые форматы капчи для тех случаев, когда без неё никак.
Формы капчи могут быть разные, но главное в том, чтобы относиться к людям по-человечески и уважать их время.
Сервис подбора слов помогает получить информацию о запросах пользователей Яндекса. Подробнее о работе сервиса читайте в Справке.
На этой странице мы постарались ответить на часто задаваемые вопросы, которые касаются работы сервиса.
Как убрать капчу
Капча (картинка и поле для ввода цифр) может появляться, если вы обращаетесь к сервису слишком часто, находитесь за пределами СНГ или ваш браузер не может сохранить нужный файл cookie. У нас нет технической возможности удалить капчу вручную.
Если вы убедились в том, что все настроено верно, а капча не пропадает, уменьшите количество обращений к сервису. В результате капча пропадет автоматически.
Заблокирован доступ
Ограничение доступа могло возникнуть из-за нарушения Лицензии на использование поисковой системы Яндекса или из-за заражения вашего компьютера вирусом, который создает высокую нагрузку на сервисы Яндекса.
Ознакомьтесь с текстом Лицензии на использование поисковой системы Яндекса и убедитесь, что на вашем компьютере или компьютерах вашей подсети не используются программы, нарушающие перечисленные условия. Особое внимание уделите пункту 2.3.
Обязательно проверьте свой компьютер на наличие вирусов. Это можно сделать, например, антивирусной утилитой CureIt! от Dr.Web или антивирусом «Лаборатории Касперского» . Помимо антивируса, который вы используете обычно, лучше произвести дополнительную проверку при помощи программы от другого производителя, так как все программы используют разные базы данных о вирусах.
Если вы используете доступ в интернет через общую точку Wi-Fi или какой-то другой тип связи, позволяющий нескольким компьютерам выходить в интернет с использованием одного IP-адреса, проверьте на наличие вирусов все компьютеры, объединенные одним IP.
Если вы убедились в том, что условия Лицензии не были нарушены и что компьютеры вашей подсети не заражены вирусом, подождите некоторое время.
Доступ к сервису появится автоматически в течение 14 дней. Разблокировать доступ раньше невозможно технически.
Система просит ввести логин и пароль
Сервис подбора слов доступен только авторизованным пользователям. Укажите свой логин и пароль, чтобы продолжить работу.
Какие операторы поддерживает сервис
При работе с сервисом подбора слов вы можете использовать минус-слова, минус-фразы, а также все дополнительные операторы. Операторы работают на вкладках По словам и По регионам . На вкладке История запросов работает только оператор + .
🖖 Недавно я опубликовал пост о том, как бесплатно получать ссылки с главных страниц форумов в свой телеграм @sosnovskij. Туда я публикую посты, не попадающих под формат блога. Подключайся! 🔌.
Те, кто подписан на меня в твиттере, знают, что я нет-нет, да что-нибудь опубликую о капче Яндекса - знаменитая в узких кругах страница "Ой". Любители пользоваться RDS-баром мне прекрасно поймут.
Сначала капчи были безобидными и легко разгадывались, но спустя время игра становилась все интереснее. Я задал вопросы службе поддержки, чтобы понять, как ее правильно вводить. Может быть, эта информация сэкономит кому-то время и сбережет нервы =) .
Итак, в чем, собственно, дело. Те, кто ставит в свои браузеры и часто пользуется RDS-баром (полезный и быстрый сбор основных показателей сайта) могут посчитаться Яндексом за спамером (много автоматических запросов к поисковой системе). Чтобы это предотвратить, отечественный поисковик создал страницу "Ой" с замысловатыми капчами.
Яндекс пишет, что после ввода капчи, она долго не беспокоит пользователя. Но это первое лукавство - вполне возможно, что страница с ней появится уже через 10-15 минут.
Второе лукавство — это ввод телефона.
Знает ли житель Тверской области, что его номер телефона "рекламируется" на Яндексе ? Все-таки просит указать номер телефона, правда, не свой.
Вопросы службе поддержки Яндекса
Я недавно задал следующие вопросы по поводу работы капчи, чтобы быстрее ее заполнять. Получил короткие, но емкие ответы.
2. Необходимо ли вводить спецсимволы (например, звездочка или доллар $)
Примечание: здесь я надеялся, что данные символы не учитываются, но оказалось обратное. Для нелюбителей нажимать "обновить изображение с капчей" дам ссылку на страницу в википедии со спецсимволами .
3. Нужно ли добавлять буквы, которые подразумеваются в слове. Например, видно "entral", но подразумевается "central" - нужно ввести "entral" или "central"?
Нет, нужно вводить лишь то, что видно.
4. Учитываются ли знаки препинания: точки, запятые, двоеточия и так далее?
5. Учитываются ли знаки: скобки, слеши, апострофы, знаки ударения?
Примечание. Скобку или слеш поставить не проблема, а вот с буквой по ударением у меня не получилось бы .
6. Засчитываются только 100%-ые совпадения введенной информации с картинки или процент немного ниже? Например, если я правильно ввел 12 букв (2 слова по 6 букв) и забыл поставить точку после первого (а она была на картинке). Ввод такой капчи засчитывается или система признает ее неправильно введенной и покажет другую?
Да, принимается только 100% совпадение.
7. Нужно ли ставить пробелы между словами, которые показываются на разных изображениях?
Пробелы ставить нужно.
Второе кстати . Участвуйте в конкурсе к прошлому посту (участие займет всего минуту). Высокие шансы оказаться в призовой тройке.
Также я замечал, что при многократном обновлении изображений капчи она могла просто удалиться (то есть страница "Ой" просто пропадала, а работа с Яндексом продолжалась).
Попадались ли вам интересные экземпляры? Делитесь своими отзывами и примерами в комментариях !
P.S. Может быть, кто-нибудь знает как прикрутить к этому делу антикапчу ?
Тем не менее, столкнувшись с необходимостью установить капчу в форму авторизации для очередного проекта, а так же после нескольких часов возни с сервисом reCaptcha, который генерирует на странице тонны мусорного кода, я так и не нашёл готового решения, которое бы устроило меня на сто процентов. Ну что же, если хочешь что-то сделать — сделай это сам.
В данной статье речь пойдёт о превращении простого и удобного API Яндекс — Чистый Веб в полноценную, современную и функциональную капчу. А раз уж мы заговорили о модуле авторизации, то думаю, что уместно будет показать — как наша новая капча работает в связке с модулем.
Итак, нам понадобится:
API Яндекс — Чистый Веб.
Думаю что любителям нативного js больше ничего и не понадобиться, я же использовал библиотеку jQuery
Первым делом обратимся к Yandex API, ведь сперва нам нужно получить искомую капчу. Почитав документацию пишем класс, который собственно её и отдаёт:
class_yandex_capcha.php
Последние три строки метода get_data() отдают картинку капчи представлению:
А вот собственно и представление — closed_view.php
Как видно из представления — в html коде нет тегов form, а это значит, что скорее всего для авторизации мы будем использовать AJAX.
Отправлять форму, как уже было сказано ранее, мы будем с помощью AJAX запроса в login.js
Файл module_login.php которому мы передаём данные с помощью AJAX запроса, создаёт экземпляр класса Login — основного класса используемого нами для авторизации пользователей на сайте, вызывает метод siteLogin() который возвращает данные о результате авторизации, проверив перед этим правильность комбинации логин-пароль и, что нас интересует больше всего — правильность ввода капчи.
Чтобы моя статья, которая и так уже получилась намного длиннее чем я планировал не разрасталась до совершенно громадных размеров, приведу только ту часть метода Login::siteLogin который отвечает за проверку капчи:
class_login.php
*Подумал и решил привести весь код, чтобы читателю было понятнее откуда растут ноги.
Суть проверки капчи — снова GET запрос согласно Yandex API;
Соответственно — вели верную комбинацию логин/пароль + капча прошла проверку — Ура! Мы прошли авторизацию.
Дальше, думаю будет наиболее важный момент статьи. Обращаю внимание тех, кто всё ещё читает — всё сводиться к архитектуре приложения.
Предположим пользователь ошибся при вводе капчи, либо просто не может разобрать текст на картинке и хочет её обновить.
Внимание — ему не нужно совершать никаких лишних телодвижений
В случае ошибки — введённые пользователем ранее логин и пароль сохраняются, а картинка капчи автоматически обновляется. А если пользователь решит обновить капчу — ему достаточно просто кликнуть на неё.
Вернёмся к содержимому файла login.js, и рассмотрим функцию capchaRenew()
Итак — мы просто делаем запрос к модулю module_capcha_renew.php вся функция которого сводится к тому,
чтобы переформировать капчу с помощью того же метода yandexCaptcha::get() к которому мы обращались при загрузке страницы и отдать адрес нового изображения пользователю.
В итоге — имеем полнофункциональную капчу, достаточно дружественную пользователю. А главное, в отличии от того же самого reCapcha — нет никаких iframe, весь код довольно лаконичен, и полностью находится под нашим контролем.
Что делать, если не работает reCAPTCHA?
Начнем с самого эффективного и простого в реализации. Так постепенно рассмотрим все методы, дойдя до самого последнего – сброса настроек.
Способ 1: обновляем браузер
Чтобы обновить браузеры на базе Chromium (Chrome, Opera и др.), достаточно открыть правильную страницу. Вот ссылка на нее в Хроме. Альтернативный способ – открыть основное меню браузера и выбрать там:
- Google Chrome. «Справка» – «О браузере Google Chrome».
- Opera. «Обновление & Восстановление».
- Firefox. «О Firefox».
На следующей вкладке запустится поиск актуальных версий браузера и покажется кнопка, если есть возможность его обновить.
Способ 2: отключаем VPN или прокси
Настройка VPN-сервиса может блокировать отображение определенного контента или загрузку данных с некоторых IP. Если проблема в этом, поможет временное отключение подобных служб.
Способ 3: сброс кэша IP
Если IP уже заслужил плохую репутацию и все сервисы распознают его в качестве подозрительного, сброс может помочь. Об этом свидетельствует то, что reCAPTCHA не срабатывает во всех браузерах.
Как это сделать:
- Правой кнопкой мыши жмем по Пуску и выбираем «Командная строка».
- Поочередно вводим следующие команды, после каждой нажимая Enter:
- netsh winsock reset
- netsh int ip reset
- ipconfig /release
- ipconfig /renew
Остается только перезагрузить браузер.
Способ 4: сканируем компьютер на наличие вирусов
Способ 5: сбрасываем настройки браузера
Это должно сработать у большинства пользователей, но заранее лучше включить синхронизацию данных с сервером и удалить аккаунт. Принцип сброса прост:
- Переходим в «Настройки» браузера через основное меню.
- Листаем список в самый конец, для этого придется открыть «Дополнительные настройки».
- Жмем на элемент «Восстановление настроек по умолчанию» или «Сброс».
- Подтверждаем намерение.
Теперь нужно проверить, работает ли reCAPTCHA. Скорее всего все заработало и сейчас самое время вернуть свои данные, выполнив синхронизацию с серверами.
Читайте также: