Защита от роботов подразумевает защиту от специальных компьютерных программ, выполняющих автоматически и/или по заданному сценарию какие-либо действия через те же интерфейсы, что и обычный пользователь сети Интернет.
На сегодняшний день многие ресурсы в сети Интернет имеют защиту от роботов. Защита, как правило, построена на решении задачи из класса задач по распознаванию образов, которая легко решается человеком, но сложна для робота. На сегодняшний день используются следующие варианты:
• распознавание числа или слова, написанного различными шрифтами;
• распознавание числа или слова, написанного различными шрифтами на сложном фоне;
• распознавание изображения;
• решение математической задачи, типа: Сколько будет 2+3?
• ответ на вопрос, который хорошо известен любому человеку, например, «Который сейчас час?», «Который сегодня день недели?» и т. п.
В основе построения защиты ресурсов от компьютерных программ лежит использование captcha-фильтров.
CAPTCHA ( от англ. Completely Automated Public Turingtest-to-tell Computers and Humans Apart — полностью автоматизированный публичный тест Тьюринга для различия компьютеров и людей. Основная идея теста: предложить пользователю такую задачу, которую с легкостью может решить человек, но которую несоизмеримо сложнее решить компьютерной программе [41] Википедия [точка доступа: http://ru.wikipedia.org/wiki/CAPTCHA ]
.
Примеры изображений, используемых в CAPTCHA см. ниже.
Могут также применяться другие, плохо алгоритмизируемые задачи, основанные на логике мышления человека, например: капчи, где необходимо выставить картинки в определенной последовательности, собрать пазл, выбрать один из предложенных вариантов решения задачи, добавить недостающий элемент в картинку, а также капчи, основанные на распознавании речи и движении мыши по определенному маршруту.
Преодоление подобного рода защиты строится на решении задачи распознавания образов и состоит из нескольких этапов:
1. В силу того, что сама защита — задача по распознаванию образов, расположена на сайте, она оформлена в соответствии с правилами оформления на языке разметки html. Поэтому первым действием необходимо считать содержимое сайта, выделить часть кода, ответственную за защиту, и проанализировать его, на предмет решения поставленной задачи, т. е. речь идет о применении классического парсинга [42] Парсинг — автоматизированный сбор контента или данных с какого-либо сайта или сервиса.
и создании для этого парсера [43] Парсер — программа, занимающаяся сбором содержимого страниц сайта, анализом, выделением данных и преобразованием данных к требуемому виду.
.
Любой парсер состоит из трех частей, которые отвечают за три отдельных процесса парсинга:
• получение контента в исходном виде. Под получением контента чаще всего подразумевается скачивание кода веб-страницы, из которой необходимо извлечь данные или контент. Одним из самых развитых решений для получения кода требуемой страницы является библиотека cURL для языка PHP;
• извлечение и преобразование данных. В этой фазе происходит извлечение требуемых данных из полученного на первом этапе кода страницы. Чаще всего для извлечения используют регулярные выражения. Также на этом этапе происходит преобразование извлеченных данных к нужному формату, если это требуется. В случае преодоления капча-фильтра, после того как данные получены, осуществляется решение задачи распознавания образа;
• генерация результата. Завершающий этап парсинга. На нем происходит вывод или запись полученных на втором этапе данных в требуемый формат и передача результата.
2. В случае удачного решения, т. е. выявления скрытого изображения и нахождения ответа, необходимо выделить часть текста, ответственного за передачу результата на сервер, и полученный результат передать через форму непосредственно на сервер, где расположена база данных с ответами. В случае правильного ответа сервер сменит страницу сайта и пропустит программу-посетителя дальше.
Распознавание каждого образа — это создание специального алгоритма распознавания, который базируется на выявленных слабостях конкретной капчи. Ниже приведем пример построения подобного рода алгоритма.
Например, ( www.captcha.ru/breakings/phpbb/):
Довольно слабая CAPTHA: фиксированный шрифт, символы легко отделяются от фона из-за хорошего контраста. Для гарантированного получения только тех пикселей, которые принадлежат надписи, достаточно выбирать пиксели темнее некоторого порога.
Читать дальше