Капча проверка на робота

Капча проверка на робота

Технология «капчи» (CAPTCHA) представляет собой автоматизированный тест, предназначенный для выявления машинизированных пользователей, иначе ботов.

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

Но, бывают и ситуации, когда полезный казалось бы скрипт становится слишком назойливым.

Есть предположение, что Google тренирует ИИ своих беспилотников, благодаря пользователям, вводящим капчу с картинками я не робот.

Как убрать капчу я не робот

Причины подобного поведения могут разниться, но всегда можно попытаться все исправить — действия проводим по мере исключения:

  • Отключаем и снова подключаем активное интернет-соединение. Перезагружаем роутер или модем. Таким образом может измениться IP-адрес.
  • Прибегаем к помощи VPN-сервиса. Последние бывают как платные, так и для бесплатного использования. Предусмотрены в виде расширений (дополнений) для браузеров и как отдельно-устанавливаемый софт на компьютер.
  • Просматриваем и установленные расширения. Например последняя версия Яндекс.Браузера сама отключает плагины из непроверенных источников и периодически проверяет уже инсталлированные на предмет подделки.
  • Проверяем, включен ли JavaScript в веб-обозревателе: Настройки→ Показать дополнительные настройки→ блок личные данные Настройки контента → раздел JavaScript.
  • Не забываем и про антивирусные программы – возможно компьютер стал жертвой ботнета, отсюда и недовольство CAPTCHA на генерируемый по этому адресу трафик.

Интересно, что ежедневно пользователями интернета вводится сотни миллионов «капчей». При этом не секрет, что не каждому удается ввести ее правильно с первого раза.

Откуда взялась CAPTCHA?

Технология CAPTCHA (сейчас будет страшная расшифровка: Completely Automated Public Turing Test to tell Computers and Humans Apart — «полностью автоматический тест Тьюринга, разделяющий компьютеры и людей») появилась в 2000 году.

Это была первая успешная попытка установить «фейс-контроль» для каждого посетителя сайта. Сетевые боты только начали появляться, но разработчики подготовились с ними сражаться. Бот-системы могли перегружать сайты, делая их недоступными для живых людей. Так, например, на форуме без капчи в начале нулевых можно было автоматически зарегистрировать десятки тысяч фейков и заспамить форум рекламой.

Для борьбы с такими ситуациями в американском Университете Карнеги-Меллона придумали скрипт, который требовал при доступе к сайту ввести символы с трудноразличимой картинки. Для пользователя ребус был несложный: буквы, раскиданные по изображению в хаотичном порядке и искаженные помехами, легко считывались человеком. Зато компьютерные системы распознавания текста терялись. Такой простейший барьер позволил значительно снизить нагрузку на популярные сайты, а также защитить многие порталы от фейковых регистраций и комментариев.

Читайте также:  Какой у нас населенный пункт

Как CAPTCHA стала полезной

Когда «капчу» стали использовать чересчур часто, сообщество задумалось о более полезном применении технологии. В 2007 году появилась reCAPTCHA, где вместо абстрактных картинок пользователям показывали нераспознанные компьютером слова из сканов архивных выпусков газеты The New York Times.

Аудитория теперь не расшифровывала тарабарщину, а помогала оцифровывать бумажную прессу XX века. Подтвердил, что ты человек, а заодно добавил слово.

Вскоре технологию купила Google и использовала ее для оцифровки книг.

Боты тоже развивались и научились автоматически распознавать текстовую reCAPTCHA. Тогда Google выпустила принципиально новый алгоритм проверки. Теперь вместо расшифровки слов пользователям предлагали среди девяти картинок найти те, где есть котики, дорожные знаки или, например, бананы. reCAPTCHA вновь стала эффективной, а людям не пришлось ломать глаза в попытке распознать очередное неудачно отсканированное слово из книги.

В самой новой версии reCAPTCHA человеку вообще не нужно напрягаться, достаточно поставить галочку напротив отметки «Я не робот» — алгоритм анализирует движения курсора (бот пойдет по прямому кратчайшему пути) и IP-адрес. До недавних пор reCAPTCHA работала крайне эффективно и почти незаметно для пользователей.

Однажды что-то пошло не так

С первыми ошибками в работе reCAPTCHA столкнулись пользователи смартфонов. Заходишь в строку поиска Google, но вместо результата браузер показывает графическую «капчу». где надо искать объекты на матрице изображений. Причем успешно пройти тест порой было невозможно, reCAPTCHA требовала от пользователя вновь и вновь отмечать картинки.

Вслед за Google проверка пользователя всплыла и на других сайтах. Российский интернет наполнился жалобами на операторов связи, Google и даже Роскомнадзор — пользователей раздражало, что сайты при каждом посещении начали требовать подтверждения человеческой природы.

Первое время никто, включая техподдержку сайтов и провайдеров, не мог внятно ответить на вопрос, что же случилось и как пройти проверку reCAPTCHA. Когда специалисты взялись за изучение проблемы, всплыли сразу несколько причин, по которым сервис проверки на «человечность» начал неистово сбоить.

ReCaptcha (она же всенародно любимая «капча») — одна из самых болезненных вещей, с которой может столкнуться автоматизатор тестирования на своём пути. В Сети гуляют тысячи разнообразных видео, записанных выходцами из солнечной Индии, касательно того, какими танцами с бубном возможно обмануть этого зверя. Действительно, достаточно сложно пытаться взаимодействовать с помощью запрограммированных скриптов со штукой, основная цель которой — убедиться что «вы не робот».

Читайте также:  Как на ps3 подключиться к wifi

Очень важный дисклеймер: обмануть капчу невозможно.

Если вы уже столкнулись с этой проблемой, и читаете эту статью, пытаясь нагуглить рецепт панацеи, то знайте, что его не существует. Тем более, в вашей голове уже скорее всего возникли инновационные мысли о том, чтобы сымитировать реалистичное поведение пользователя с помощью WebDriver, путём рандомного mouse overing’а элементов, кликов по инпутам, и бережно расставленных Thread.sleep(). Абсолютно точно известно, что этот подход работать не будет, не тратьте свое время попусту.

Получается, выхода нет?

Не все так пессимистично. Иногда достаточно постараться дать себе наиболее точный ответ на вопрос «Какая задача передо мной стоит?» и посмотреть на ситуацию шире. В большинстве случаев, вы поймете, что ваша цель не обмануть капчу, а обойти её, чтобы протестировать функционал, спрятанный за ней. На примере своего кейса, я поделюсь с вами найденными мною вариантами решения поставленной задачи.

Контекст: мы интегрировали часть своего продукта внутрь стороннего сервиса, и хотели мониторить, все ли в порядке на их стороне, т.к. они не занимаются покрытием third-party частей своей платформы. Чтобы получить доступ к нашему функционалу, сперва необходимо было залогиниться. Тут-то я и встретился с капчей лицом к лицу. Далее привожу все перепробованные мною варианты обхода данной проблемы.

Нерабочие

Залогиниться через Google или Facebook

Помимо классической аутентификации, присутствовали каноничные «Login with Google / Facebook». Само собой, там точно также присутствовали свои «капчи», поэтому этот вариант не помог решить проблему.

Имитация поведения пользователя

Да, я тоже это пробовал. Было забавно, но чересчур наивно.

Рабочие

Chrome / Firefox Profiles

Поговорим о первом «живом» варианте. В драйверах для этих браузеров (chromedriver / geckodriver) реализована возможность загружаться под заранее заготовленным User Profile. Он хранит в себе все сохраненные пароли, куки, сессии, и даже историю браузера и закладки. Т.е. таким образом мы попросту пропускали абсолютно неважный для нашей задачи шаг логина, и таким образом попадали сразу на страницу с объектом тестирования. Реализуется это следующим образом:

  1. Создаем «чистый» профиль браузера
  2. Вручную вводим капчу и логинимся на нужный ресурс
  3. Копируем необходимый профиль в наш проект (HOWTO для Firefox и Chrome)

После чего, нам необходимо сказать драйверу, что грузиться он должен именно с указанного профиля:

Читайте также:  Как сделать ранг в excel

Этот подход хорошо показал себя при тестировании на локальной машине с установленным браузером и обычными gecko-/cromedriver’ами, но возникли проблемы при запуске на Jenkins. Мы поднимаем Selenium хаб и ноды внутри Kubernetes кластера, поэтому мы столкнулись с неприятностями в виде слишком долгого по времени маунта директории внутрь контейнера (чистый профиль в среднем весит около 25 MB, что немало), а так же некоторых проблем с CRUD правами браузера, который не мог вносить изменения в профайл в рантайме, и падал с “unknown error: failed to write prefs file” эксепшеном. Ко всему прочему, апдейтить профайл после достижения куками и сессиями своих Expiration Dates достаточно неудобно, да и не хотелось держать в проекте огромную папку с внутренностями профиля, поэтому в конечном итоге окончательным был выбран следующий вариант.

Cookies

“А ларчик просто открывался” — именно так можно было охарактеризовать ситуацию, после того, как мы просто добавили полученные вручную куки в драйвер. Алгоритм действий максимально прост и не зависит от выбранного браузера:

  1. Логинимся вручную
  2. Через Network смотрим Request Headers -> Cookie которые посылает наш браузер

Добавляем их в наши тесты следующим образом:

Очевидный минус этого подхода — необходимость вручную менять куки после истечения их срока валидности. Но, в виду того что на тестируемой платформе этот срок составляет 3 месяца — мы и выбрали это решение.

А если мне не нужно логиниться?

А как же ситуация, когда речь идет не о авторизации и сессиях, а о совершении какого-либо одноразового действия (e.g. оформление заказа из корзины, регистрация нового пользователя и т.п.)? Здесь ситуация еще хуже. Два варианта которые я смог обнаружить, это:

  1. Договориться с вашими разработчиками о предоставлении вам некого workaround’а. Google предоставляет такую возможность, но помните, что вы осознанно делаете небольшую дыру в security.
  2. Воспользоваться сторонними платными сервисами, которые принимают с вашей стороны скриншот капчи, пытаются его декодировать, и отправляют вам расшифрованное значение. Сам я такой способ не пробовал и полностью рекомендовать его не могу.

Подведем итоги

Как вы могли убедиться — безвыходных ситуаций не бывает. Однако, будет глупо отрицать, что у абсолютно всех вышеперечисленных вариантов есть свои, достаточно весомые, минусы, так что выбор остается за вами.

Ссылка на основную публикацию
Какие комбинации клавиш необходимы для получения символов
Здравствуйте! Вы никогда не задумывались, сколько порой приходится тратить времени на обычные операции: выделить что-то мышкой, скопировать, затем вставить в...
Как удалить файл php
Как удалить файл с моего сервера с помощью PHP если файл находится в другой директории? вот мой макет страницы: projects/backend/removeProjectData.php...
Как удалить файл если он используется
Не редко встречаются ситуации, когда нужно удалить файл, но Windows сообщает, что файл занят другим процессом. Это может быть важный...
Какие компрессоры стоят в холодильниках бирюса
С появлением широкого ассортимента импортного холодильного оборудования бытовая техника отечественного производства постепенно отошла на второй план. Однако ошибочно думать, что...
Adblock detector