No Image

Как обойти гугл капчу

СОДЕРЖАНИЕ
0 просмотров
11 марта 2020

в апишке гугла, как работает их рекапча и увидел, что там предусмотрено для других сайтов обращение к апи гугл на проверку g-recaptcha-response, и там требуется secret key, который известен только самому Гуглу

это не из этой темы

берешь отладчик – Хром или Селениум или Фидлер или все вместе,
смотришь что куда приходит уходит,
потом заменяешь в своем скрипте отправку на ручную и вводишь с текущего хоста,
таймауты,
добиваешься проходимости,

потом ручную меняешь на антикапчу,
не забываешь за таймауты,

Фишка гугловской рекапчи, что она сидит в коде на требуемом вам сайте. При прохождении капчи отправляется форма вместе с секретным ключом, который проверяется у гугла, что секретный ключ правильный и после этого идет обычная работа сайта.

Так что скорей всего у вас не получится "на изи", там все же специалисты не за 40к зп сидят.

У меня получалось обойти проверку на Яндексе через правильно подставленные заголовки и подмена куков, может и здесь проканает. Самое главное это ведь максимально притвориться человеком.

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

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

Если вы уже столкнулись с этой проблемой, и читаете эту статью, пытаясь нагуглить рецепт панацеи, то знайте, что его не существует. Тем более, в вашей голове уже скорее всего возникли инновационные мысли о том, чтобы сымитировать реалистичное поведение пользователя с помощью 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)

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

Этот подход хорошо показал себя при тестировании на локальной машине с установленным браузером и обычными 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. Воспользоваться сторонними платными сервисами, которые принимают с вашей стороны скриншот капчи, пытаются его декодировать, и отправляют вам расшифрованное значение. Сам я такой способ не пробовал и полностью рекомендовать его не могу.

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

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

unCAPTCHA – автоматизированная система, разработанная экспертами Мэрилендского университета, способная обойти reCAPTCHA от Google с точностью до 85 %. Им это удалось благодаря распознаванию аудио-версии подсказки для людей с ограниченными возможностями.

Метод использует уязвимость в звуковой версии reCAPTCHA — в ней произносится числовой код, который затем необходимо ввести в проверочное поле. Алгоритм применяет несколько сервисов, которые помогают определить числа — в том числе сервис Google Cloud Speech Recognition.

Читайте также:  Beeline интернет настройка подключения

Исследователи опубликовали код своего проекта на GitHub. В unCAPTCHA используются такие средства распознавания речи, как Bing Speech Recognition, IBM, Google Cloud, Google Speech Recognition, Sphinx и Wit-AI.

Принцип работы

Формат аудиокоманды представляет собой серию чисел различной длины, произнесенных на разных скоростях, акцентах и через фоновый шум. Чтобы атаковать эту капчу, звуки идентифицируются и автоматически разбиваются по частям.

Каждый бит аудиосигнала каждого числа загружается в 6 различных бесплатных онлайн-сервисов транскрипции аудио (IBM, Google Cloud, Google Recognition, Sphinx, Wit-AI, Bing Speech Recognition), и эти результаты агрегируются. После объединения наиболее вероятная строка выявляется эвристически. После этого числа последовательно набираются в капчу. При тестировании наблюдалась точность от 92% для отдельных чисел и до 85% в распознавании аудиокоманды в полном объеме.

unCAPTCHA является не первой системой подобного рода. В марте текущего года была информация об атаке с использованием ReBreakCaptcha, системы, практически идентичной unCAPTCHA.

Видео-демонстрация работы

Тесты показывают, что unCAPTCHA может решить 450 задач reCAPTCHA с точностью 85,15% за 5,42 секунды. Это меньше, чем требуется человеку для прослушивания одного звукового файла reCAPTCHA.

unCAPTCHA

Код проекта написан на python с использованием популярной библиотеки selenium и FFmpeg — набором библиотек с открытым исходным кодом, которые позволяют записывать, конвертировать и передавать цифровые аудио-сигналы.

→ Исходный код опубликован на github.

По ссылке доступно исследование от создателей утилиты.

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

Комментировать
0 просмотров
Комментариев нет, будьте первым кто его оставит

Это интересно
Adblock detector