Как обойти капчу при написании парсера на Selenium?
В общем пишу парсер на селениуме. При попытке открыть сайт вылезает капча. Причём сначала нужно указать, что ты не робот (постава галочки), а потом выбрать соотоветствующие картинки.
Я знаю, что можно как-то обмануть защиту. Но как это сделать? В интернете есть советы по этому поводу, но как-то всё размыто.
Как обойти капчу на сайте
Всем привет сижу уже 2 день над капчей,вообщем проблема такова,часто вылазит капча на сайте ,какие.
Как обойти капчу Яндекса?
Сабж. Нужно автоматически добавлять сайты в Яндекса (и в блоги.яндекса), но капча сильно мешает :(.
Автокликер, обойти капчу
Привет. Помогите для данного кода <form name="withdraw" action="page.php?cat=captcha&amp;p=send".
Как отправить капчу решенную капчу в VkNet
Вывел капчу, и хочу отправить решение при обычной кнопки отправить, но проблема в том что я не.
Обход капчи при парсинге на PHP
Чтобы обойти капчу, нужно понимать, как она устроена изнутри.
Когда мы заходим на страницу с формой — там уже есть капча или она подгружается через некоторое время.
Откуда берется эта капча? Она генерируется скриптом PHP при обращению на заданный URL, пусть для примера этот URL такой — capcha.php. Тогда в HTML коде формы для картинки капчи будет такой код: <img src=»http://old.code.mu/books/advanced/php/parsing/capcha.php»>.
Если мы зайдем на страницу с формой, то картинка капчи автоматически подтянется со страницы capcha.php.
При этом страница capcha.php — это скрипт, который генерирует случайную строку, делает из нее картинку капчи и отдает ее в браузер.
Кроме того страница capcha.php сохраняет строку с капчей в сессию. Это нужно для того, чтобы проверить правильность ввода капчи по отправке формы.
Если обратиться на страницу capcha.php — она каждый раз будет отдавать новую капчу и, соответственно, эта новая капча будет затирать старую в сессии.
Как обойти капчу
Итак, теперь вы знаете как устроена капча. Давайте теперь о том, как ее обойти. Для этого нужно сделать несколько запросов с помощью CURL.
Первый запрос должен слаться на файл с капчей. Куда его слать — видно в HTML коде формы или же можно отследить в отладчике, куда отправляются запросы.
Результатом данной операции будет картинка, ее можно сохранить в файл с помощью file_put_contents. Зачем сохранять — чтобы можно было прочитать капчу и разобрать ее каким-либо образом (для начала вручную).
Запрос на капчу обязательно следует слать через curl, а не file_get_contents, так как нам обязательно следует принимать и оправлять куки — ведь капча работает на сессиях PHP.
Итак, получаем капчу, сохраняем его в файл, разбираем эту капчу вручную и шлем второй запрос уже на страницу с формой вместе с POST данными для формы (и с разобранной капчей).
Не ошибитесь и не сделайте лишнего запроса к капче!
Использование сервисов распознавания
В предыдущем примере мы распознавали вручную, однако, чаще всего это делать нецелесообразно.
Лучше подключить специальный сервис, на котором специально обученные китайцы за копейки разбирают капчи.
Как это работает: вы считываете капчу в файл, а затем используя API сервиса отправляете эту капчу на сервис. Через 3-5 секунд получаете эту капчу обратно в разобранном виде.
Стоит это удовольствие не дорого — менее одного доллара за 1000 разобранных капч.
Сбор данных с обходом капчи посредством PYAUTOGUI, KERAS и TENSORFLOW
Существует большое количество методов для автоматического сбора и обработки больших объемов данных из веб-ресурсов. Однако иногда недоступно извлечение данных с помощью автоматизированного кода, выполняющего GET-запросы с последующим парсингом HTML-кода, и его преобразованием в необходимый формат, также, как и все смежные методы. В таких случаях на помощь может прийти эмулятор действия пользователя («кликер», «бот», «робот»).
Была поставлена следующая задача: необходимо получить информацию на определенном веб-ресурсе (упустим его наименование) на основе файла Excel со списком определенных данных (на 2000 строк). В связи с тем, что все методы автоматизированного парсинга и скрапинга невозможны, а время ограничено, обращаем внимание, что нам подойдет и эмулятор мыши и клавиатуры.
Для работы простого эмулятора нам потребуются библиотеки:
Но есть одно препятствие: ввод капчи, которая имеет вид:
На просторах интернета можно найти множество алгоритмов по работе с капчами в рамках машинного обучения, и мы воспользуемся одним из них. Ознакомиться с нашим выбором можно здесь — https://habr.com/ru/post/464337/
Нашей же задачей останется обучить уже готовый алгоритм.
Как видно из кода, для обучения модели было скачено 1000 изображений. Далее их необходимо обработать: разрезать и распределить по директориям в зависимости от чисел на изображениях. Воспользуемся кодом ниже:
Для обучения модели формируем следующую логику директории:
В dat мы разобрали числа по папкам от 0 до 9, где в каждой из папок располагается соответствующее число. Например, 0 (ноль):
В сумме получилось по 500 изображений в каждой из папок.
train_simple.py – файл для обучения модели.
И самое главное — директория output, где будет располагаться обученная модель.
Подготовительная работа выполнена, осталось обучить модель. Открываем командную строку, переходим в нашу директорию и вводим команду:
Модель для распознавания капчи обучена. Видим следующий результат:
Это означает, что на обучающем наборе достигнута верность — 98,2%, на контрольном — 97,8 % и на тестовом — 97,8 %. Ориентируемся на последнее значение. Посмотрим на визуальную интерпретацию модели в директории output файл simple_nn_plot.png:
Помним, что 100% результата не будет. В целом, распознавание 5 чисел занимает около 10 сек.
Итак, подключим файл для распознавания к нашему основному коду:
Следующая задача – выяснить все необходимые координаты для работы эмулятора мыши.
Суть проста: наводим мышкой на нужную позицию, нажимаем «пробел» и получаем нужные нам координаты. Перейдем к основному коду эмулятора:
Пишем функцию для упрощения общего кода.
Логика проста: данные из столбца нашего Excel-файла будут вноситься в поле ввода на веб-ресурсе, после – распознается и вводится капча, нажимается кнопка проверки и текстовый результат проверки вносится во второй датафрейм, формируя таким образом таблицу Excel с итоговыми данными, взятыми из веб-ресурса.
Код содержит несколько логических блока:
• Работа с полем ввода с данными из исходной таблицы Excel. DataFrame(df1) исходной таблицы Excel, где лежат данные, содержит столбец «id». Значения в столбце содержат до 10 символов. Работа кода предполагает, что берется значение из строки «i» столбца «id» в соответствии с номером круга цикла. Пока значения в столбце не закончатся, цикл не прервется.
• Работа с капчей. Создаем бесконечный цикл, условием выхода из которого будет правильный ввод капчи. Мы качаем изображение капчи, вызываем функцию из сформированного ранее модуля, далее происходит попытка ввода. Если капча введена верно, то цикл прерывается и мы переходим к следующему логическому блоку, если нет, то возвращаем в начало цикла, удаляя скаченное изображение.
• Немного о логике проверки ввода. В случае неудачного ввода, на главной странице появляется предупреждение и не пропадает, более того, текст предупреждения можно копировать. Последним и воспользуемся. Чтобы проверить введена ли капча правильно, мы ищем текст по конкретным координатам и проверяем, что там сказано, если советуют повторить попытку ввода, то, соответственно, возвращаемся в начало цикла.
• Блок извлечения данных при верном вводе капчи. Все просто: мы берем и копируем нужный нам текст по определенным координатам, сохраняя этот текст в переменные.
• Блок формирования результирующей таблице. Создается словарь с нужными нам данными. Этот словарь представляет собой одну строку в таблице.Теперь мы автоматизировали сбор данных и подключили модель машинного обучения для распознавания капчи, что позволило увеличить скорость работы в сравнении с человеческими ресурсами.
Капча при парсинге: почему появляется и как обойти?
Главная > Блог > Consulting > Капча при парсинге: почему появляется и как обойти?
Практически каждый пользователь всемирной сети, независимо от используемого устройства, рано или поздно сталкивается с капчей. Это те самые сложно читаемые символы, которые нужно ввести в текстовое поле для получения доступа к нужной информации. Но если у людей нет вопросов к тому, как обойти капчу, то у разработчиков приложений для парсинга возникают серьезные проблемы. Ведь этот инструмент позволяет распознать и заблокировать бота, тем самым остановив процесс извлечения нужных нам данных.
Что такое капча?
Расшифровка аббревиатуры CAPTCHA — Completely Automated Public Turin test to tell Computers and Humans Apart. В переводе с английского – Полностью автоматизированный общедоступный тест Тьюринга, различающий компьютер от человека. И в большинстве случаев, сталкиваясь с ним, боты парсеров попросту не знают, что делать дальше.
Ведь основная цель этого инструмента – задать вопрос или поставить задачу, справиться с которой сможет только человек. «Классический» пример – изображение с сильно искаженными символами латинского или кириллического алфавита. Для «живого» пользователя, расшифровка капчи раздражительна, но вполне возможна, в то время как машина столкнется с логической ошибкой, прекратив любые дальнейшие действия.
Впервые, тест Тьюринга в интернете ввели разработчики Google (тот самый искаженный текст). Чуть позже, медиагигант представил первую итерацию reCaptcha, где вместо букв, цифр и символов используются светофоры, автомобили, лестницы, дымоходы и т.д. Но благодаря стремительному развитию алгоритмов машинного обучения, разработчикам ботов для парсинга удалось научить робота обходить эту защиту. Поэтому в 2018 году, в Гугле объявили о запуске 2 и 3 версии рэКапчи, отличающиеся от своего прототипа:
- Требованием кликнуть на чекбокс – кнопку «отправить решение» для проверки сервисом (V2);
- Запуском при выявлении подозрительной активности (с последующим уведомлением владельца сайта, та же V2);
- Интеллектуальным анализом взаимодействия пользователя с браузером, изучением отпечатка устройства с последующей передачей информации на сервера поисковика и в админ-панель сайта (V3).
Причем именно третья создала наибольшее количество проблем и по сегодня считается «непобедимой». А владелец сайта может выбрать три варианта развития событий при выявлении подозрительной активности: запросить дополнительную аутентификацию, заблокировать пользователя или занести «сомнительный» IP-адрес в черный список. Либо просто проигнорировать предупреждение.
Основные виды и особенности ReCaptcha
Для защиты от роботов, разработчики применяют различные виды капч. Самыми распространенными считаются «классические» текстовые. В последние годы их вытеснила графика. На отдельных зарубежных ресурсах можно встретить аудиозаписи.
Чтобы понять, как они работают, разберем каждый из видов капчи в деталях.
- Текстовая. Обычно, состоит из двух частей – последовательности случайно сгенерированных символов (букв, цифр) с искажением, а также текстового поля для ввода расшифрованной информации;
- Математическая. Вариация, где вместо текста система задает простейший пример, решить который сможет даже ребенок. Считается пережитком прошлого, поскольку боты научились «видеть» графику и решать их;
- Изображения. Сервис предлагает на выбор 6-9 разных фото, требуя указать на наличие конкретного предмета – животного, автомобиля, светофора, самолета, корабля, пешеходного перехода и т.д. Либо – перетащить блок в пустоту на изображении;
- Звук. Система воспроизводит случайные слова или числа, добавляя немного фонового шума. Задача пользователя – расслышать сказанную фразу и ввести ее в текстовое поле.
И если для первых трех разработаны инструменты, осуществляющие автоматический ввод капчи, то с последним у парсеров возникают огромные проблемы. Тем не менее, из-за высокой стоимости поддержки, встречается она крайне редко.
Обход капчи во время парсинга
Цель системы защиты Captcha – исключить вероятность попадания ботов на страницы, где происходит взаимодействие с пользователями. Поэтому чаще всего, она всплывает при входе на сайт, а также в форме оплаты услуг или товаров в интернет-магазинах. Причем убрать проверку на робота практически невозможно.
Ведь нынешние итерации капчи анализируют пользователя по десяткам параметров: от используемого устройства до поведения на сайте. При обнаружении бота, IP-адрес, с которого тот направляет запрос, блокируется и заносится в черный список. В случае с парсерами, это приводит к остановке сканирования и дальнейшего извлечения нужной нам информации.
Но обойти эту проблему реально. Особенно – с прокси-серверами, «подменяющие» IP бота с заданной периодичностью. Тем не менее, это может «затормозить» процесс. Поэтому лучшее решение – избежать запуска проверки. Для этого желательно:
- Настроить бота на имитацию поведения реального человека;
- Задать правильную скорость и адекватный объем извлекаемой информации;
- Настроить user-agent, замаскировавшись под роботов поисковой системы.
А при разработке самописного скрипта, во избежание проблем, можно использовать средства обхода, встраивая их в код будущей программы. Практически все сервисы анти-капчи имеют собственные API, связующие ваше приложение с серверами, на которых они размещены. Причем часть из них бесплатна, вторые – с адекватными ценниками, в то время как третьи подкрепляют стоимость стабильностью работы приложений.
Расширения браузеров для обхода капчи
В идеале, у человека не должно возникать проблем с решением этой задачи. Тем не менее, системы могут исказить символы до неузнаваемости. Кроме того, та же reCaptcha может быть очень раздражающей, предлагая решить головоломку до 4 раз подряд, а одна ошибка заставит начать все сначала. Благо, хорошие люди придумали десятки расширений и плагинов для браузеров, способных решать капчи различной сложности, чтобы избавить раздражительных пользователей от лишних триггеров для стресса.
Buster: Captcha Solver for Humans
Абсолютно бесплатная антикапча с открытым исходным кодом. Может решать текстовые, математические, графические и звуковые задачи. Однако, работает только с reCaptcha от Google. Впрочем, для большинства пользователей этого будет вполне достаточно, т.к. практически все разработчики сайтов пользуются именно рэКапчей. Совместим со всеми популярными браузерами, поддерживающими плагины, аддоны и расширения – Chrome, Firefox, Opera.
Чтобы запустить Buster, при вылете окна капчи достаточно нажать на зеленый или оранжевый кружок. В большинстве случаев, решение одной задачи отнимает не более 30 секунд, на время ожидания скрипт «подтягивает» анимацию загрузки. Если головоломка не решена, достаточно нажать на кнопку повтора.
AntiCaptcha
Один из самых популярных сервисов решения капчи, рекомендуемый к применению большинством программистов и веб-разработчиков. В отличие от Buster, для установки потребуется внести небольшую плату, купив плагин в магазине расширений Chrome или Firefox. Успешно распознает и решает головоломки, генерируемые Google, Яндексом, FunCaptcha, GeeTest и другими системами защиты.
Чтобы запустить расширение после установки, достаточно кликнуть правой кнопкой мыши в поле ввода решения, выбрав пункт «Найти и решить Captcha». Либо использовать сочетание клавиш Ctrl (в компьютерах Apple – Command) + Shift + 6. В среднем, на решение одной задачи уходит от 5 до 20 секунд. С reCaptcha же сервис справляется за 30-60.
Recaptcha Solver
Представляет собой своеобразный «агрегатор», позволяющий пользоваться сразу несколькими сервисами (на выбор, после покупки специальных кредитов):
- DeathByCaptcha;
- 2captcha;
- ImageTypers;
- Anti-Captcha;
- BestCaptchaSolver;
- EndCaptcha.
После перевода средств вы сможете выбрать понравившуюся вам службу в раскрывающемся меню, забрав ключ её API, либо получить логин и пароль, открывающие полный доступ к одному из сервисов.
Rumola
Инструмент для работы с текстовыми и математическими капчами. Не воспринимает графические головоломки, на которых строится reCaptcha, но примечателен автоматическим обнаружением проверки с последующим её решением без вмешательства пользователя. Однако, эта опция полезна далеко не всегда, поэтому её можно отключить в настройках расширения на соответствующей странице браузера.
Алгоритм работы Rumola Captcha Solver прост: при выявлении капчи, алгоритм ставит метку на изображение и текстовое поле для ответа. Для запуска программы достаточно щелкнуть по полю левой кнопкой мыши дважды. В случае, когда плагин не смог выявить головоломку, вы можете указать на нее самостоятельно, через правую кнопку мыши, указав на изображение с загадкой и поле для введения ответа. Среднее время решения задачи – 5-10 секунд.
Rumola – платный плагин. Тем не менее, попробовать его в деле можно и бесплатно: после установки вы получаете 5 кредитов, позволяющих протестировать его на различных видах текстовой или математической капчи.