Книга: Информационные операции в сети Интернет

3.2.3. Автоматическое преодоление защиты от роботов

3.2.3. Автоматическое преодоление защиты от роботов

Виртуальные специалисты-[ро]боты, кроме языка людей, нескольких естественных национальных языков, на которых ими собирается информация, должны хорошо знать язык разметки гипертекста html. Ибо поле битвы для них — это не только люди, которых надо кормить спамом, но и сайты, которые надо изучить, проиндексировать, забанить, заблокировать, скачать. Робот должен знать, кто перед ним: пользователь, за которого идет сражение, или такой же робот, который принес спам или пришел скачать сайт, чтобы в дальнейшем увести вслед за собой и сегодняшних посетителей.

Любой сайт, написанный на языке программирования, например, на php, сам является роботом, способным анализировать и классифицировать своих посетителей. По IP-адресу он понимает, из какой части планеты пришел посетитель, по языковым настройкам браузера он узнает о естественных национальных языках, которые предпочитает данный посетитель, по адресу перехода — откуда, с какого сайта пришел, гость.

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

А сколько уже сегодня существует сайтов с чужим «лицом» и в чем-то похожим именем? Простаки, ошибившиеся в одном символе, попадают по виду туда, куда они, вроде бы, и планировали, но на самом деле они попадают в ловушку, где из них будут выжимать знания о почтовых адресах, паролях, счетах. Даже в таком простом имени, как rambler, обычный пользователь ошибается не менее одного процента, в основном за счет нажатия близких букв на клавиатуре или из-за того, что клавиатура не переключена на нужный язык. Посетителей у rambler’a немало. Скупив близкие по начертанию доменные имена, можно легко построить хорошо раскрученный за чужой счет сайт и при этом не нарушить ни одного пункта законодательства, да еще и собирать долго-долго чужие почтовые адреса, которые потом оптом поставлять любителям спама.

Заметать свои следы от профессиональных поисковых машин и приманивать поисковые машины на приманку-обманку — сегодня одни из самых простых приемов. Суть их в следующем:

1. Провести распознавание посетителя.

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

3. Если посетитель — человек, предложить ему настоящее содержимое, порой не имеющее ничего общего с тем, которое прописали в себя поисковики.

Как видно, одной из главных задач для робота является получение ответа на вопрос: «Кто есть кто?»

Эта задача актуальна для людей, и она не менее актуальна для роботов.

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

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

• распознавание числа или слова, написанного различными шрифтами;

• распознавание числа или слова, написанного различными шрифтами на сложном фоне;

• распознавание изображения;

• решение математической задачи, типа: Сколько будет 2+3?

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

В основе построения защиты ресурсов от компьютерных программ лежит использование captcha-фильтров.

CAPTCHA ( от англ. Completely Automated Public Turingtest-to-tell Computers and Humans Apart — полностью автоматизированный публичный тест Тьюринга для различия компьютеров и людей. Основная идея теста: предложить пользователю такую задачу, которую с легкостью может решить человек, но которую несоизмеримо сложнее решить компьютерной программе[41].

Примеры изображений, используемых в CAPTCHA см. ниже.

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


Преодоление подобного рода защиты строится на решении задачи распознавания образов и состоит из нескольких этапов:

1. В силу того, что сама защита — задача по распознаванию образов, расположена на сайте, она оформлена в соответствии с правилами оформления на языке разметки html. Поэтому первым действием необходимо считать содержимое сайта, выделить часть кода, ответственную за защиту, и проанализировать его, на предмет решения поставленной задачи, т. е. речь идет о применении классического парсинга[42] и создании для этого парсера[43].

Любой парсер состоит из трех частей, которые отвечают за три отдельных процесса парсинга:

• получение контента в исходном виде. Под получением контента чаще всего подразумевается скачивание кода веб-страницы, из которой необходимо извлечь данные или контент. Одним из самых развитых решений для получения кода требуемой страницы является библиотека cURL для языка PHP;

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

• генерация результата. Завершающий этап парсинга. На нем происходит вывод или запись полученных на втором этапе данных в требуемый формат и передача результата.

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

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

Например, (www.captcha.ru/breakings/phpbb/):


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


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

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


Видно, что одинаковые символы всегда на одной высоте.

Распознавание сделать довольно легко путем прямого попиксельного сравнения каждого из символов со шрифтом.

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

Делается подобное следующим образом.

Исходные данные:

• сайт № 1, защищенный капча-фильтром, на который надо проникнуть виртуальному специалисту-[ро]боту;

• достаточно раскрученный сайт № 2, который принадлежит владельцу данного виртуального специалиста-[ро]бота.

Решение задачи:

1. Виртуальный специалист-[ро]бот обращается к сайту № 1 и парсит главную страницу, на которой находится капча-фильтр.

2. Виртуальный специалист-[ро]бот выделяет из страницы капча-фильтр и размещает его на подконтрольном сайте № 2.

3. Посетители сайта № 2 благополучно проходят капча-фильтр.

4. Виртуальный специалист-[ро]бот получает результат и передает этот результат главной странице сайта № 1.

Интересный пример сражения роботов с роботами приведен на сайте html://www.omsk777.ru. Видно, что автора публикации война с роботами захлестнула не на шутку, и он описывает достаточно подробно, на уровне языка программирования, все известные ему способы идентификации роботов роботами.

Остановимся на одном достаточно элегантном примере распознавания робота.

Вот таким тегом языка html задается ссылка на страничках сайтов, по которой посетители лихо щелкают «мышкой»:

<a href='all.php?act=fuck_you'> <img src='img/bud2.gif width-1' height='1' border='0'> </a>

Здесь Тег <a href-alLphp?act=fuck_you'> указывает адрес перехода с параметрами;

width='1' height='1' — атрибуты тега <img>, которые задают размер картинки с именем файла 'img/bud2.gif при отображении ее в виде значка перехода на экране.

Как видно, размер картинки всего один пиксель. Это означает, что посетитель-человек ее просто не увидит в силу слабости своего восприятия. А робот увидит, ибо он смотрит не на экран, а непосредственно работает с языком разметки. Робот увидит ссылку, но вряд ли подумает, что она специально для него, ибо проверять размер картинки не станет. Он торопится. И он пойдет по ссылке и начнет скачивать приготовленную для него страничку html. Но вот здесь-то его и ждет засада. Автор этого приема с сайта omsk777.ru не поленился и отомстил по полной программе, подготовив для робота маленький архив из нулей, который при разархивировании раздувается до 250 Гб. Мало не покажется. Робот-противник надолго будет занят бессмысленным делом.

Главное, как мы видим, — это узнать противника. А способов наказания существует достаточно много. Можно навесить на врага тяжелые мегабайтные файлы, можно отправить его по ссылке в какое-нибудь отвратительное место, можно загнать его в бесконечный цикл. Правда, противник тоже не полный кретин, он, получив ту или иную ссылку, тут же проверяет, а знакома ли она ему? И только в том случае, если незнакома, идет по этой дороге. Но дело-то в том, что сами ссылки всегда направлены на те или иные имена файлов, а робот-сайт, который готовит ловушку, всегда может менять имена хранимым у него файлам, используя датчик случайных чисел или дату со временем, а затем проставлять эти новые имена в ссылки для одноразового срабатывания. Пришел враг по ссылке, но пока он приходил, в эти самые мгновенья прихода, уже появился новый файл с тем же содержимым, но с другим именем. И это новое имя уже прописано в ссылке и ждет, когда его выберут: «И вечный бой!» И сбежать нельзя, потому что «работа» не закончена[44].

Допустим, используя вышеприведенные приемы, виртуальный специалист проник на сайт-объект информационной операции и разместил подготовленный заранее контент. Однако при размещении материалов на чужих ресурсах всегда надо учитывать, что хозяин (модератор) может удалить эти материалы, если они не соответствуют задачам ресурса. Рассмотрим далее способы защиты размещенных материалов от удаления или блокирования доступа к нему.

Оглавление книги


Генерация: 1.275. Запросов К БД/Cache: 3 / 1
поделиться
Вверх Вниз