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

Наверняка уже почти каждый сталкивался с надписью при регистрации на каком-либо сайте: «Введите число, которое Вы видите» и искаженная картинка. Это капча (CAPTCHA, пиктокод, тикет) — графическая защита, предназначенная для различения людей и программ.

В процессе своей работы программа XRumer способна распознавать капчи, автоматически скачивая картинку и расшифровывая её. Как показала практика, на расшифровку такого рода капчей уходит не более 1-1,5 секунды, а обычно и того меньше на компьютере с процессором с рабочей частотой 1 ГГц.

Траффика на это уходит совсем немного, т.к. такие картинки «весят» не более 3-5 Кб.

Но и это ещё не всё! Новый XRumer 16.0.16 Elite теперь способен распознавать и обходить даже такие виды капчи, как ReCaptcha и DLE! А общий список распознаваемых типов увеличился более чем вдвое по сравнению с XRumer 5.0:

И это далеко не все виды, здесь не приведены совсем тривиальные капчи, которые использовались в ранних версиях форумов и до сих пор остались на многих из них. XRumer автоматически распознает тип капчи и использует соответствующий для этого типа алгоритм.

Именно самые посещаемые форумы, с высоким индексом цитирования и PR, ставят надежную защиту — в том числе и капчи. Размещение обьявлений и ссылок на таких форумах даёт огромную отдачу!

См. также:

В данном уроке мы с вами научимся обходить капчу. Капча — это такая картинка, данные из которой следует ввести в инпут, чтобы отправить форму.

Капчу устанавливают на форму, если хотят обойти ее автоматическое заполнение парсером. Однако, практически любую капчу можно обойти. Этим мы сейчас и займемся.

Как устроена капча

Чтобы обойти капчу, нужно понимать, как она устроена изнутри.

Когда мы заходим на страницу с формой — там уже есть капча или она подгружается через некоторое время.

Откуда берется эта капча? Она генерируется скриптом PHP при обращению на заданный URL, пусть для примера этот URL такой — capcha.php. Тогда в HTML коде формы для картинки капчи будет такой код: <img src=»https://rpilot62.ru/wp-content/uploads/2018/06/4631.jpg»>.

Если мы зайдем на страницу с формой, то картинка капчи автоматически подтянется со страницы capcha.php.

При этом страница capcha.php — это скрипт, который генерирует случайную строку, делает из нее картинку капчи и отдает ее в браузер.

Кроме того страница capcha.php сохраняет строку с капчей в сессию. Это нужно для того, чтобы проверить правильность ввода капчи по отправке формы.

Если обратиться на страницу capcha.php — она каждый раз будет отдавать новую капчу и, соответственно, эта новая капча будет затирать старую в сессии.

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

Итак, теперь вы знаете как устроена капча. Давайте теперь о том, как ее обойти. Для этого нужно сделать несколько запросов с помощью CURL.

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

Результатом данной операции будет картинка, ее можно сохранить в файл с помощью file_put_contents. Зачем сохранять — чтобы можно было прочитать капчу и разобрать ее каким-либо образом (для начала вручную).

Запрос на капчу обязательно следует слать через curl, а не file_get_contents, так как нам обязательно следует принимать и оправлять куки — ведь капча работает на сессиях PHP.

Итак, получаем капчу, сохраняем его в файл, разбираем эту капчу вручную и шлем второй запрос уже на страницу с формой вместе с POST данными для формы (и с разобранной капчей).

Не ошибитесь и не сделайте лишнего запроса к капче!

Использование сервисов распознавания

В предыдущем примере мы распознавали вручную, однако, чаще всего это делать нецелесообразно.

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

Как это работает: вы считываете капчу в файл, а затем используя API сервиса отправляете эту капчу на сервис. Через 3-5 секунд получаете эту капчу обратно в разобранном виде.

Стоит это удовольствие не дорого — менее одного доллара за 1000 разобранных капч.

Сервис anti-captcha

https://anti-captcha.com/ (он же antigate)

Пример кода API для PHP https://anti-captcha.com/code/base64.txt

видео?

Простые капчи

Телефоны как картинки

снять видео надо

Нейронная сеть

https://habrahabr.ru/post/63854/ разбор капчи, не нейронная сеть http://asam.by/archive/my_funn/ нейронная сеть для капчи http://xakep-archive.ru/xa/135/044/1.htm распознавание php, нейронная сеть нейронная сеть php для разбора капчи http://eax.me/captcha-recognition/ — тут хороший цикл статей НЕ PHP снять видео надо http://neuralnet.info/ — еще учебник, простой и хороший http://www.neuroproject.ru/neuro.php — учебник по нейронным сетям

Что вам делать дальше:

Приступайте к решению задач по следующей ссылке: задачи к уроку.

Когда все решите — переходите к изучению новой темы.

← Предыдущая страницаСледующая страница →

Что такое капча (captcha) и как заработать на вводе капчи?

Очень часто в интернете можно услышать такое слово как капча. Некоторые пользователи жалуются, что не могут ввести капчу, а мы даже не можем понять, о чем это они. Прочитав эту статью Вы узнаете что такое капча.

На самом деле, даже не зная что означает слово капча, каждый из нас встречается с ней постоянно. Капча — это защитный код в виде изображения. Чаще всего на сайтах нужно вводить капчу во время регистрации, отправки комментария. Или к примеру если мы сделаем несколько однотипных действий в социальной сети Вконтакте, то нас попросят ввести капчу.

Разобравшись, что такое капча, давайте ответим на следующий вопрос, зачем нужна капча? Если капча – это мера защиты, тогда от кого или чего она защищает? Как мы знаем, в интернете уже очень много программ самого разного назначения. Некоторые из этих программ помогают автоматизировать различные действия на сайтах. К примеру: оставлять спам комментарии на сайтах, добавлять друзей Вконтакте, быстро раскрутить твиттер аккаунт.

На самом деле автоматизировать можно практически любое действие человека на сайте. Но программы еще не научились считывать текст с картинок и именно поэтому на многих сайтах стали использовать капчу, в том числе и на этом. Если Вы захотите оставить комментарий к данной статье, то Вам нужно будет ввести капчу, к счастью очень легкую.

То есть капча нужна для того, чтобы защитить сайт от рассылки различного спама программами.

Виды капчи

Капчи бывают самые разнообразные. Давайте разберем самые популярные виды капчи:

  • Текстовая капча. В такой капче представлен набор букв, реже целое слово. Обычно на текстовой капче изображены латинские буквы (капча Вконтакте), реже встречаются буквы русского алфавита (капча от Яндекс).
  • Цифровая капча. В данном виде капчи изображены различные цифры. Также очень часто капча бывает смешанная, то есть состоящая из букв и цифр.
  • Образная капча. В данной капче изображены различные предметы или объекты. Для ввода такой капчи нужно выбрать опреденный предмет или группу предметов из списка.
  • Логическая капча. Данный вид капчи представлен чаще всего в виде простой математической задачки, где нужно сложить два числа и ввести сумму. Данный вид капчи использует букс SeoSprint.

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

Помогает ли капча в защите от спама?

На вопрос, помогает ли капча в защите от спама, ответ однозначный – капча помогает и во много раз уменьшает количество спама на сайтах. Однако не на 100%. Сейчас существуют сайты, на которых люди вручную разгадывают капчи и получают за это деньги. Программе же только остается отослать изображение капчи им и получить готовый ответ.

Это не означает, что капча утратила свою актуальность. Эти сервисы, по ручному распознанию капчи, платные. Хоть это и стоит недорого, но не все хотят платить за свои удобства и за эффективную работу. А от программ, которым не помогает человек в разгадывании капчи, она помогает хорошо.

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

Где заработать на вводе капчи?

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

Если в двух словах, то Вам нужно выбрать место (сайт), где зарабатывать на капче и зарегистрироваться там. Далее Вам будут присылать картинки с капчей и полем для ввода. И за ввод капч Вы будете зарабатывать деньги. Это очень простой способ заработка в интернете, который поможет получать дополнительные деньги.

Лучшим местом для заработка на капче является RuCaptcha. Тут Вы всегда, в любое время суток, сможете заработать. Конечно зарабатывать тут огромные деньги не получится, но на мелкие расходы пару тысяч заработать сможет каждый. Подробнее о заработке на данном проекте Вы можете ознакомиться в этой статье: как заработать в RuCaptcha?

Было интересно? Тогда поделись с друзьями!

Распознавание капчи с помощью Human Emulator

Цитата WikipediaCAPTCHA (от англ. Completely Automated Public Turing test to tell Computers and Humans Apart — полностью автоматизированный публичный тест Тьюринга для различия компьютеров и людей) — товарный знак Университета Карнеги — Меллона, в котором разработали компьютерный тест, используемый для того, чтобы определить, кем является пользователь системы: человеком или компьютером.

Данный тест широко применяется при регистрации, при добавлении сообщений, комментариев, объявлений и т.д.

Примеры капч для распознавания

В Human Emulator есть три функции для распознавания капчи:

recognize_captcha – распознать картинку с диска как капчу
recognize_by_anticaptcha – распознать капчу картинки через сервис антикапча
recognize_by_captchabot – распознать капчу картинки через сервис капчабот

recognize_captcha функция самостоятельно разгадывает 10 видов простых капч. Что за капчи и каков процент их правильного разгадывания можно посмотреть в документации к программе

recognize_by_anticaptcha и recognize_by_captchabot используют сервисы распознания antigate.com и captchabot.com. Для расширения работы с этими сервисами были добавлены объекты anticapcha() и captchabot().

Так же для ручного распознания в Хумане есть функции, которые показывают капчу в отдельном диалоге и дают вам возможность ввести капчу самому:
dlg_captcha_from_image_number – диалог ввода капчи из картинки c заданным номером
dlg_captcha_from_url – показать диалог ввода капчи из картинки по заданному урлу
dlg_captcha_from_url_exactly – показать диалог ввода капчи из картинки по заданному урлу с соотвествием урла (см. )

Приведём несколько примеров скриптов для использования различных капч.

Для начала используем функцию для распознания капч средствами Human Emulator. Для примера возьмём форму регистрации на сайте xanga.com. Этот сайт использует капчу 9 типа, которую Хуман разгадывает с 45%-м правильным разгадыванием.

Функция $image->recognize_captcha($file_path,$type); на вход принимает путь к файлу с картинкой и тип картинки. Поэтому перед тем как вызывать эту функцию нам нужно сохранить картинку в файл на диск. Для этого используем функцию $image->screenshot_by_src.

Примечание: Лучше всего работать с картинками по их src или по части их src. Для того, что бы посмотреть src картинки можно открыть информацию о ней в Инспекторе Элементов, щёлкнув на ней правой кнопкой мыши и в появившемся контекстном меню выбрать пункт “Посмотреть в инспекторе элементов” или в этом же меню можно выбрать Щёлкнуть и далее $image->click_by_src и в скрипт вставиться функция клика с полным src, из которого можно будет взять нужный кусок, который будет одинаковый при каждом обновлении страницы.

В данном случае функция будет выглядеть следующим образом: $image->screenshot_by_src(«C:\\Temp\\tmp.jpeg»,»randletters.aspx?fy»,false); Тогда функция $image->recognize_captcha(«C:\\Temp\\tmp.jpeg»,9);

Теперь добавим в этот же скрипт вызов диалога ввода капчи $str_captcha=$app->dlg_captcha_from_url_exactly(«randletters.aspx?fy»,false); и переменную-флаг для настройки работы через распознание или через диалог ввода. В итоге наш скрипт будет:

<?php $xhe_host =»127.0.0.1:7011″; // The following code is required to properly run XWeb Human Emulator require(«../../Templates/xweb_human_emulator.php»); // показывать через диалог $b_show_dlg=true; // переход на добавление объявления $browser->navigate(«http://www.xanga.com/register.aspx»); // строка с символами $str_captcha=»»; // распознать капчу if($b_show_dlg) // используя диалог $str_captcha=$app->dlg_captcha_from_url_exactly(«randletters.aspx?fy»,false); else { // сохранить картинку в файл по части src $image->screenshot_by_src(«C:\\Temp\\tmp.jpeg»,»randletters.aspx?fy»,false); // распознать картинку $str_captcha=$image->recognize_captcha(«C:\\tmp.jpeg»,9); } // задать значение в поле ввода капчи $input->set_value_by_name(‘registrationModule$txtLetters’,$str_captcha); // Quit $app->quit(); ?>

Теперь напишем скрипт, который использует сервисы распознавания antigate.com и captchabot.com. Для примера возьмём сайт с flash капчей http://snappages.com/register. В данной форме регистрации для отображения капчи используется flash объект, который проигрывает символы в flash проигрывателе. Для того что бы распознать такую каптчу, мы используем одну из функций screenshot_by_*, которая сохраняет картинку элемента на диск и затем уже будем отправлять сохранённую картинку на сервис распознания.

Примечание: К сожалению, описания функций screenshot_by_* пока нет в документации к Human Emulator. Данные функции работают для всех объектов и сохраняют их снимок на диск по заданному пути. То есть вы можете сделать фотографию любого элемента страницы, используя тот или иной атрибут элемента. Для вызова этих функций можно использовать контекстное меню элемента->пункт меню «Сохранить» и выбрать нужную функции из появившегося списка.

Для http://snappages.com/register сохранение флэш объекта будет выглядеть следующим образом:

$object->screenshot_by_name(«C:\\Temp\\tmp.jpeg»,»captchaSwf»);

, а вызов фунций для сервисов распознания:

// распознать капчу с помощью antigate.com $str_captcha=$image->recognize_by_anticaptcha(«»,»C:\\Temp\\tmp.jpeg»,$api_key,$path=’http://antigate.com’,$is_verbose = true, $rtimeout = 5, $mtimeout = 120, $is_phrase = 0, $is_regsense = 1, $is_numeric = 0, $min_len = 0, $max_len = 0); // распознать капчу с помощью captchabot.com $str_captcha =$image->recognize_by_captchabot($api_key,»C:\\Temp\\tmp.jpeg»,»»);

, где $api_key – это ключ сервиса распознания

Обернём все вызовы для распознания капчи в оператор switch и добавим флаг для выбора механизма распознавания. Теперь наш скрипт будет выглядеть следующим образом:

<?php $xhe_host =»127.0.0.1:7011″; // The following code is required to properly run XWeb Human Emulator require(«../../Templates/xweb_human_emulator.php»); // что использовать для распознания // 0 — диалог ввода каптчи // 1 — antigate.com // 2 — captchabot.com $b_use=2; // ключ антикаптчи $api_key_antg=»ваш ключ»; // ключ каптчабот $api_key_cpt=»ваш ключ»; // путь куда сохранить картинку $img_path=»C:\\Temp\\tmp.jpeg»; // переход на добавление объявления $browser->navigate(«http://snappages.com/register «); // строка с символами $str_captcha=»»; // сохраним элемент на диск $object->screenshot_by_name($img_path,»captchaSwf»); // распознать капчу switch($b_use) // используя диалог { case 0: { // показать диалог ввода каптчи $str_captcha=$app->dlg_captcha_from_url($img_path); break; } case 1: { // распознать капчу с помощью antigate.com $str_captcha=$image->recognize_by_anticaptcha(»,$img_path,$api_key_antg,$path=’http://antigate.com’,$is_verbose = true, $rtimeout = 5, $mtimeout = 120, $is_phrase = 0, $is_regsense = 1, $is_numeric = 0, $min_len = 0, $max_len = 0); break; } case 2: { // распознать с помощью captchabot $str_captcha =$image->recognize_by_captchabot($api_key_cpt,$img_path); break; } default: // показать диалог ввода каптчи $str_captcha=$app->dlg_captcha_from_url($img_path); } // задать значение капчи $input->set_value_by_name(«captcha»,$str_captcha); // Quit $app->quit(); ?>

Скрипты написаны в XHE 4.4.19 MT.

скачать примеры скриптов
Количество скачиваний: 2890

<< Другие статьи

Сегодня речь пойдет о капчах. Капча на сегодняшний день — это достаточно привычный элемент интерфейса практически каждого сайта. Капчи обычно устанавливают при отправке какого-либо комментария, поста на форуме, или при регистрации. И служат они для предотвращения спама, т.к. предполагается, что ввести такую капчу может только человек.

Но что делать, если нам необходимо программно выполнять какую-либо операцию на сайте большое количество раз и при этом вводя капчу? Конечно, можно сделать, чтобы человек вводил капчу, но ведь все-таки можно попробывать и автоматизировать распознавание капчи? Конечно, можно! Правда не все капчи поддаются распознаванию. Например такие:

И такие капчи сейчас действительно невозможно распознать, а вот попроще уже можно:

Именно такие капчи мы сейчас и научимся распознавать.

Давайте внимательно рассмотрим слабые места этой капчи:

  1. Решетка у этой капчи фиксированной формы и цвета
  2. На капче используются только цифры и они одинакового размера и шрифта
  3. Линии фиксированного цвета

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

Сначала отделим сетку. Т.к. сетка и линии (шум) оттенков серого цвета, то можно сказать что у такого пикселя R=G=B — это свойство серого цвета пикселя. Запуская двойной цикл for  с обходом от X,Y до X1, Y1 капчи и закрашивая белым цветом пиксели, у которых можно выявить равенство R=G=B мы получаем такое изображение:

Теперь мы видим, что у нас остались одиночные пиксели. В них не соблюдается правило R=G=B, т.к. они образовались в результате JPEG форматировнания. Их удалить просто: если соседние пиксели у данного пикселя белые, то и этот закрашиваем белым. В результате должно получиться:

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

Теперь, зная что всего на капче 4 цифры, мы можем определить границы каждой цифры. Найти эти границы тоже просто: мы можем запустить цикл for и слева на право, отслеживая пробелы между цифрами. С этим проблем возникнуть не должно. Получение границ нужно для отделения каждой цифры из капчи в свой TBitmap. Схематично границы цифр должны получиться так:

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

По этим эталонам мы будем сравнивать на соответствия пиксели каждой цифры (каждый TBitmap) со всеми десятью эталонами (0,1,2,3,4,5,6,7,8,9) и наиболее подхящий эталон будем присваивать. В результате мы получим каждую цифру, но уже в текстовом виде. Это и есть результат распознавания капчи. На сайте http://www.captcha.ru/breakings/ вы можете еще прочитать о способах распознавания 3 других видов капч. По принципу «отделение шума -> бинаризация -> сравнение с эталонами» устроены практически все алгоритмы распознавания капч. Надеюсь, урок оказался интересным и полезным! 😉

Добавить комментарий

Закрыть меню