Сниффер. Как понять, что именно пользователь сделал запрос?

Разрабатыываем сниффер сетевых пакетов. Может вытащить host из HTTP-заголовка и сохранить посещённый сайт. Но если пользователь заходит, например, на habrahabr.ru, то помимо хоста habrahabr.ru запрашивается ещё habrastorage.org (и это логично, так как часть картинок из какого-нибудь поста там хранятся) и много-много других хостов, куда пользователь даже не хотел заходить.

Вот в этом и заключается весь вопрос: как отфильтровать тот хост, куда заходит пользователь, от того, что запрашивает браузер для загрузки дополнительного контента? Более того, есть необходимость вести статистику и если произойдёт 10 запросов к одному хосту (а пользователь только-только открыл страницу), то надо сделать лишь одну запись в лог (чтобы не сбивать статистику посещения сайтов).


Был вариант смотреть время последнего запроса и если оно меньше N секунд, то не добавлять новый хост в лог, так как скорее всего это автоматический запрос. Но это костыль, так как: (а) у пользователя может быть медленное соединение, (б) не спасает от ситуации: «Откроем интернет-магазин, быстренько откроем 25-100 вкладок а потом изучим товар».


Надеюсь на хабрасообщество, так как неделя поисков в гугле, stackoverflow и подобных сайтах ничего толком не дали.

PS: Сниффер корпоративный

PPS: Если помимо сниффера надо будет применить какие-либо ещё технологии — не проблема.
  • Вопрос задан
  • 5120 просмотров
Решения вопроса 1
В полных страницах есть всякие обязательные типа «head» и «body», которых нету в подгружаемых кусочках. Может вам и определять полные страницы по тегам? Вряд ли пользователь откроет счетчик в окне, в которых обычно максимум фрейм.
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 7
@rowdyro
Первое, что в голову пришло это http_referer — в случае запроса к habrastorage.org, он будет проставлен в habrahabr.ru
Ответ написан
@rowdyro
Да, в этом случае можно фильтровать полученный пользователем html — и искать ссылки на iframe, a href… только вот с javascript шляпа. Можете по тайму запросов смотреть, вряд ли пользователь сможет кликать быстрее чем броузер грузить
Ответ написан
@egorinsk
> Сниффер корпоративный

Желаю вам благополучно провалиться с этой бессмысленной затеей.
Ответ написан
Комментировать
@hasalex
разработчик
если сниффер корпоративный, то, полагаю, проще написать что-то из:
— для клиентской стороны
1. аддон к браузеру
2. хук на мышь (плохой вариант)
3. свой браузер для корпоративного пользования
— для серверной, если у вас что-то типа прокси
1. менять хтмл, добавляя в него либо онклик обработчики
2. менять хтмл, видоизменяя в нем урлы

ну и комбинация различных вариантов, включая предложенные выше

ну это я мысли так набросал, для вариантов размышления, хотя не до конца понятна ваша задача.
Ответ написан
UZER2006
@UZER2006
Можно совместить проверку заголовков Referer и Accept. Сейчас смотрел свои заголовки, при загрузке статики или AJAX-запросах уходит отличный от обычной загрузки страницы Accept-заголовок. Также иногда появляются заголовки If-Modified-Since, Cache-control и т.д. Но тут ещё надо учесть, как ведут себя другие браузеры. Я проверял на Google Chrome последней версии.
Кроме этого даже не уверен, существуют ли ещё какие-то варианты.
Если статистика будет собираться большая и ложных срабатываний мало – можно сделать проще и на эти срабатывания закрыть глаза.
Ответ написан
xmoonlight
@xmoonlight
https://sitecoder.blogspot.com
Решение такое:
Извлекаем информацию в обратную сторону: полученный контент text/html -> ID-потока -> первый запрос к серверу после открытия потока ID (или последний редирект).
Ответ написан
mace-ftl
@mace-ftl
file.php?id=165&sid=1088c7be4e5127532d93
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы