УДК 004.932

Разработка программы для аналитики трафика веб-сайта

Очагов Никита Андреевич – студент Санкт-Петербургского государственного университета аэрокосмического приборостроения

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

Ключевые слова: анализатор, анализ, сеть, трафик, интернет.

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

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

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

Социальные сети подразделяются на следующие виды:

  • социальные закладки;
  • социальные каталоги;
  • социальные библиотеки;
  • социальные сети вебмастеров;
  • многопользовательские социальные игры;
  • геосоциальные сети;
  • профессиональные социальные сети;
  • сервисные социальные сети;
  • коммерческие социальные сети.

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

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

Методология

Основная функциональность представляемого инструмента заключается в прослушивании трафика пакетов протокола управления передачей (Traffic control protocol, TCP) по заданному интерфейсу.

Программа должна быть настроена так, чтобы принимать два аргумента командной строки, интерфейс для прослушивания и количество пакетов для прослушивания. Если они не указаны, программа прослушивает Ethernet 0 и продолжает прослушивать до тех пор, пока не будет получено прерывание. Пакеты затем разделяются для извлечения различной информации заголовка. Извлекаются заголовок Ethernet, заголовок интернет-протокола (Internet protocol, IP) и заголовок TCP, и возвращается указатель на остальную полезную нагрузку. На рисунке 1 представлен формат TCP-сегмента.

image001

Рисунок 1.

Программа должна принимать два аргумента командной строки, интерфейс для прослушивания и количество пакетов для прослушивания. Если ничего не найдено, программа прослушивает Ethernet 0 и продолжает прослушивание, пока не будет получено прерывание. Примеры пакетов для извлечения информации о заголовке цвета. Извлекаются заголовок Ethernet, заголовок Интернет-протокола (Internet Protocol, IP) и заголовок TCP, а также обратная ссылка на остальную часть полезной нагрузки.

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

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

Анализ и математическая модель

Чтобы зафиксировать время захвата пакета, время окончания и время начала захвата вычитаются и рассчитываются в миллисекундах. Общее количество захваченных пакетов делится на общее количество пакетов, чтобы найти средний размер пакета. Рассчитывается скорость передачи данных (Кбит/с) делением общей длины захваченного пакета в Кбит/с на время. В конце рассчитывается общая передача данных по следующей формуле:

image002

где: C байт – длина захваченного пакета, а n – количество захваченных пакетов.

Захват трафика на интерфейсе осуществляется с использованием библиотеки pcap, которая представляет собой портативную библиотеку C/C++ для захвата сетевого трафика. Это очень упрощенный подход, который имеет достаточно доступной документации. Есть множество руководств, объясняющих, как эффективно использовать эту библиотеку. Библиотека имеет множество предопределенных подпрограмм, которые значительно облегчают процесс захвата сетевых пакетов.

Программа настроена на прием не более трех аргументов. Пользователь может указать интерфейс и количество пакетов для прослушивания. Значения по умолчанию для обоих аргументов используются, если пользователь не указывает ни один из них. Значение по умолчанию для количества пакетов равно – 1, что означает, что программа продолжит захват пакеты, пока не будет получено прерывание, а для интерфейса Ethernet 0.

Процесс захвата начинается с инициализации прослушивающего устройства. Если пользователь предоставит интерфейс, программа инициализирует прослушивание этого порта, если нет, то выдаст ошибку. После инициализации устройства pcap открывает его для прослушивания сетевого трафика. Как только это будет успешно сделано, фильтр инициализируется для захвата только тех пакетов, которые необходимы для анализа сеансов просмотра. Для реализации этим инициализированным фильтром является TCP, поскольку все HTTP-запросы GET и POST выполняются с использованием TCP. После этого программа может начать захват пакетов из сети.

Следующим шагом является разделение прослушанных пакетов и извлечение соответствующей информации. Поскольку пакет содержит заголовки Ethernet, IP и TCP, сначала необходимо создать структуры для всех этих различных типов заголовков. Подпрограмма pcap "pcap_loop()" используется для непрерывного прослушивания пакетов по сети. Количество пакетов для прослушивания либо предоставляется пользователем, либо бесконечно. Эта процедура при получении пакета передает указатель на пакет функции обработки пакетов. Функция обработки пакетов начинает сопоставлять байты, на которые указывает указатель, со структурами, начиная со структуры заголовка Ethernet, структуры заголовка IP и затем структуры заголовка TCP. Указатель на часть полезной нагрузки TCP-пакета передается другой функции, которая анализирует полезную нагрузку для поиска объектов.

Функция синтаксического анализа пакетов проверяет первые несколько символов полезной нагрузки, чтобы определить, является ли пакет HTTP-запросом или ответом. Если пакет представляет собой запрос, первые 300 символов пакета сохраняются в имени файла HTTPheader.txt. Это делается для отслеживания всех сделанных запросов и проверки соответствия захваченных пакетов ответа этим запросам. Если пакет находится в ответе, тип объекта, размер объекта, порт и IP-адрес отправителя записываются в другой файл с разделителями табуляции с именем objecttype.txt. Анализ ответов проверяет наличие кодов состояния следующим образом:

  • 200 – объект был найден, и запрос был выполнен.
  • 204 – нет содержимого: объект был отправлен обратно.
  • 304 – не изменено: последняя копия объекта уже кэширована.
  • 404 – не найдено: не найдено объектов, соответствующих ссылке в запросе.

Подсчет для всех этих типов объектов должен сохраняться и отображается после завершения программы. Эти подсчеты также записываются в файл с именем Traffic_out.txt.

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

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

При переходе на более сложные веб-страницы с большим количеством объектов вы можете заметить несоответствия.

Каждый раз, когда счетчики неравны, количество запросов увеличивается в среднем примерно на 1 или 2. Единственное объяснение состоит в том, что некоторые объекты запрашиваются более одного раза из-за потери предыдущего запроса или ответа. Через HTTPheader.txt можно отслеживать наличие повторных запросов, и в большинстве случаев именно так и происходит. Но сложно с уверенностью сказать, что так во всех случаях, потому что в случае сложных веб-страниц слишком много запросов на просмотр.

После того, как веб-инструмент соберет необходимую информацию о каждом объекте, такую как: тип (например, изображение/JPEG), размер, TCP-порт, используемый для загрузки этого объекта, и IP-адрес веб-сервера, на котором размещен этот объект, общие данные сохраняется в одном файле "objecttype.txt". Файл можно рассматривать как набор строк, каждая строка содержит один объект со своей информацией. Базовая структура файла позволяет анализатору быстро просканировать файл и рассчитать необходимую и вычислять требуемую статистику. Анализатор в основном объединяет объекты, созданные с одного и того же веб-сервера и имеющие одинаковый IP-адрес. Таким образом, каждый отдельный IP-адрес будет иметь свою собственную статистику, такую как: количество содержимого изображений, текстовых объектов и других элементов. Поэтому синтаксический анализатор можно легко расширить, чтобы он был более специфичным для типа объекта, например, содержимое изображения может быть JPEG, GIF или PNG.

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

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

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

Список литературы

  1. Шлаян Н., Качру П., Ваду С. «Байесовский анализатор безопасности с использованием нескольких источников данных об авариях», IEEE Conf. Intel. Трансп. Система. Материалы, ITSC, 2011, – C. 151-156. – DOI: 10.1109/ITSC.2011.6083122.
  2. Пракаш Т., Каккар М., Патель К. «Геоидентификация веб-пользователей с помощью журналов с использованием ELK стек», Proc. 2016, 6-е вступление. Конф. Облачная система. Большие данные англ. Confluence, 2016. – C. 606-610. – DOI: 10.1109/CONFLUENCE.2016.7508191.
  3. Болябкин М.В. Разработка и внедрение общего анализатора SQL // Международный журнал гуманитарных и естественных наук, 2022. – № 1-1 (64). – С. 55-61. – DOI 10.24412/2500-1000-2022-1-1-55-61. – EDN PRDDVT.
  4. Чейз А.Х. Анализ производительности VoIP в беспроводных сетях // Международный журнал компьютерных сетей и беспроводной связи (IJCNWC), 2017. – № 7. – № 4. – № 1-5.
  5. Габдуллин А.Ш., Инкинин И.Ф., Сафиуллина Л.Х. Анализ сетевого трафика // Вектор развития управленческих подходов в цифровой экономике, 2020. – № 2. – С. 36-40.
  6. Хун Н.К., Хун П.К., Тан И.К., Мутувелу Н., Сенг Л.С. «Влияние использования прогнозируемого сетевого трафика для передачи данных», Int. Conf. Adv. Common. Технол. ICACT, 2011. – С. 1199-1204.
  7. Кумар М., Мину М. «Анализ поведения посетителей из веб-журнала с использованием web log expert».
  8. Аронов В.Ю. Анализ характеристик сетевого трафика с помощью специализированных программ // Проблемы техники и технологии телекоммуникаций. Оптические технологии в телекоммуникациях, 2018. – С. 104- 105.
  9. Вандюк Дж. К. CMS Drupal: Руководство по разработке системы управления сайтом. – М.: Диалектика, 2018. – 976 c.
  10. Вандюк Дж. К. CMS Drupal. Руководство по разработке системы управления сайтом. – М.: Вильямс, 2015. – 400 c.

Интересная статья? Поделись ей с другими: