Блог Олега Сердюкова

Система web-статистики Woopra и исследование её сетевой активности при помощи Wireshark

Я перепробовал несколько систем статистики посещений для сайтов. Когда-то давно пользовался анализаторами логов web-сервера Analog, Webalizer, AwStats. Но их возможности анализа были ограничены, например отслеживать возвращающихся посетителей с динамических IP-адресов было невозможно, отсев краулеров поисковых систем и прочих ботов можно было производить только вручную, да и визуальное оформление отчётов мне не нравилось. Поэтому Webalizer у меня работает до сих пор, но на его статистику я не смотрел уже больше года.

Дальше я использовал всяческие кнопки рейтингов со сбором статистики, но их наличие вступало в притиворечие с моим чувством прекрасного, и я быстро от них избавился. И наконец-то (на самом деле все методы я пробовал параллельно) я остановился на службах Google Analytics, Яндекс.Метрика и Woopra. Последняя система меня покорила всерьёз и надолго - в отличие от других систем она не только показывает активность посетителей в режиме реального времени (а у того же Google Analytics задержка на сутки), но и имеет красивый desktop-клиент, написанный на Java, что даёт возможность его запускать под Windows, MacOS и Linux.

Описывать Woopra я не буду - посмотреть её функциональность можно на сайте. Покажу свой скриншот закладки Dashboard:

Системой я пользуюсь давно и с удовольствием, но вчера @andy_shev обратил моё внимание на то, что при открытии этого блога в Opera раз в несколько секунд идёт странная сетевая активность, будто бы делается обновление страницы. Конечно же, как только зашла речь об исследовании сетевой активности, я привычно применил Wireshark, установку которого описал в статье ”Готовимся анализировать сетевой трафик при помощи Wireshark”.

Открываю сайт http://theapplegeek.ru. Запускаю Terminal.app, затем консольную утилиту tshark:

sudo tshark -i en1 -R 'http.request.method == "GET"' \
  -T fields -e frame.time -e http.host -e http.request.uri
  • sudo Для захвата трафика требуются права администратора, sudo даёт их, запрашивая пользовательский пароль. Обратите внимание, что пользователь должен иметь права на администрирование компьютера (это выставляется в настройках учётной записи), иначе sudo выдаст сообщение “username is not in the sudoers file. This incident will be reported”.
  • -i en1 Указывается интерфейс, который нужно прослушивать. Обычно en0 - ethernet, en1 - AirPort, но можно уточнить, запустив команду ifconfig. К сожалению мета-интерфейс “any”, позволяющий слушать трафик по всем интерфейсам, под MacOS не срабатывает.
  • -R … Read (display) filter, определяет, что захватывать нужно только трафик, удовлетворяющий критерию.
  • http.request.method == “GET” Критерий отбора - HTTP-запросы GET, стандартные обращения к web-серверам.
  • -T fields Выводить поля из пакетов, перечисленные далее в параметрах “-e”.
  • -e frame.time Время прихода пакета.
  • -e http.host Имя хоста (поле Host: после запроса “GET /uri HTTP/1.1).
  • -e http.request.uri URI.

Название полей можно найти в ”Display Filter Reference”, например в описании полей протокола HTTP. Второй вариант - можно захватить трафик в Wireshark, затем выделить интересующее поле, тогда в левой нижней части экрана на статус-баре будет отображено имя поля. Для того, чтобы появилась возможность захвата трафика в Wireshark, самый простой способ - его нужно запустить из Terminal.app командой “sudo wireshark”.

Вернёмся к Woopra. Отсеяв трафик других программ (dropbox, facebook и т.д.), получаем такие такие запросы:

Sep 19, 2009 19:08:19	woopra.com.woopra-ns.com	/ping/cookie=DQHSOKCE25U9U37JYSOPC9FXNR3FPOEM&idle=0&ra=1XMYR9XSLF7RF0HND2BDK1QBEH3CZ4LT
Sep 19, 2009 19:08:39	woopra.com.woopra-ns.com	/ping/cookie=DQHSOKCE25U9U37JYSOPC9FXNR3FPOEM&idle=0&ra=PVXARGWAEXFQ25WAIEF4VJYEMKX65WBW
Sep 19, 2009 19:08:41	theapplegeek.ru.woopra-ns.com		/ping/cookie=ZO50TUOUOY37S133MNWTOB42QVKN3DE9&ra=IHN8DUX5C8ZAF5S4VV1AOBA4Y8ZDF643
Sep 19, 2009 19:08:50	woopra.com.woopra-ns.com	/ping/cookie=DQHSOKCE25U9U37JYSOPC9FXNR3FPOEM&idle=0&ra=C2A88WBRW8S41PZFU9LLYZHTSCGP31C4
Sep 19, 2009 19:08:52	woopra.com.woopra-ns.com	/ping/cookie=DQHSOKCE25U9U37JYSOPC9FXNR3FPOEM&idle=0&ra=DF1OD4USZAHPQKWOO65JZTL30LMLDZL4
Sep 19, 2009 19:09:06	theapplegeek.ru.woopra-ns.com		/ping/cookie=ZO50TUOUOY37S133MNWTOB42QVKN3DE9&ra=BPE9FX2TKVLEQUZ01ZXTADRI2WSDJVJ0
Sep 19, 2009 19:09:11	woopra.com.woopra-ns.com	/ping/cookie=DQHSOKCE25U9U37JYSOPC9FXNR3FPOEM&idle=0&ra=5ENUMAPTVGCFTYTVYE5BUPJ8RDD5V0RV
Sep 19, 2009 19:09:23	woopra.com.woopra-ns.com	/ping/cookie=DQHSOKCE25U9U37JYSOPC9FXNR3FPOEM&idle=0&ra=93RKHH6CEI6EZ42K7O70DHSOM6R90JJD
Sep 19, 2009 19:09:24	woopra.com.woopra-ns.com	/ping/cookie=DQHSOKCE25U9U37JYSOPC9FXNR3FPOEM&idle=0&ra=Y16BXDE2TY94LSQD00JY9YOUMBU28FKB
Sep 19, 2009 19:09:31	theapplegeek.ru.woopra-ns.com		/ping/cookie=ZO50TUOUOY37S133MNWTOB42QVKN3DE9&ra=N08KNNMAQGODTJMP6U2M3LBW5HZZA8QZ
Sep 19, 2009 19:09:44	woopra.com.woopra-ns.com	/ping/cookie=DQHSOKCE25U9U37JYSOPC9FXNR3FPOEM&idle=0&ra=LDM2WTP08FQAIKXGGAS4OEUQR9I9F9BG
Sep 19, 2009 19:09:55	woopra.com.woopra-ns.com	/ping/cookie=DQHSOKCE25U9U37JYSOPC9FXNR3FPOEM&idle=24&ra=QB20A1LXW26Q3D65RCC4O7ZDYGE7LA8N
Sep 19, 2009 19:09:57	theapplegeek.ru.woopra-ns.com		/ping/cookie=ZO50TUOUOY37S133MNWTOB42QVKN3DE9&ra=6YM6J00Q88JJPPYASVS37H7KJSZLDL6L
Sep 19, 2009 19:09:57	woopra.com.woopra-ns.com	/ping/cookie=DQHSOKCE25U9U37JYSOPC9FXNR3FPOEM&idle=36&ra=3VFUBJWJ9YYJEKZJ9IKLGKX05V6T4FLF
Sep 19, 2009 19:10:16	woopra.com.woopra-ns.com	/ping/cookie=DQHSOKCE25U9U37JYSOPC9FXNR3FPOEM&idle=37&ra=0U415OZXXXU576SV69RZ05KQNEBO2N85
Sep 19, 2009 19:10:22	theapplegeek.ru.woopra-ns.com		/ping/cookie=ZO50TUOUOY37S133MNWTOB42QVKN3DE9&ra=V4O1MR9G6069857YPHMIRVB02SSPVEDZ
Sep 19, 2009 19:10:28	woopra.com.woopra-ns.com	/ping/cookie=DQHSOKCE25U9U37JYSOPC9FXNR3FPOEM&idle=57&ra=8L8WI1IPX8JKXUF6JSX9906Z13X0WOB2
Sep 19, 2009 19:10:30	woopra.com.woopra-ns.com	/ping/cookie=DQHSOKCE25U9U37JYSOPC9FXNR3FPOEM&idle=68&ra=57QDITV9DPDW8SORHAE27OXBW08PU0W7
Sep 19, 2009 19:10:47	theapplegeek.ru.woopra-ns.com		/ping/cookie=ZO50TUOUOY37S133MNWTOB42QVKN3DE9&ra=0CDQK2WA823UIX2IQID5SR9WVTBOJI7A
Sep 19, 2009 19:10:49	woopra.com.woopra-ns.com	/ping/cookie=DQHSOKCE25U9U37JYSOPC9FXNR3FPOEM&idle=0&ra=U03MO0VLYO3TWJJUE9VZKCW0H59A8J48

Т.е. видим, что при открытии сайта с установленной статистикой Woopra из браузера посетителя идут регулярные обращения на сервера статистики Woopra. Размер каждого пакета 256 байт, в минуту имеем порядка 4-8 запросов или же 1-2 KB трафика. Конечно же, это немного, но если посетитель заходит через дорогой GRPS, то подобные системы статистики могут нагнать достаточно много трафика.

Что же это за обращения? Ответ прост - Woopra отслеживает, находится ли посетитель на сайте, или уже ушёл с него путём регулярной отсылки “keepalive ping”. Именно так реализована функция “With Woopra, you get live track of visitors coming and going and moving through your site”.

Однако нужно признать - Woopra система хорошая и отслеживать посетилей “real-time” иначе невозможно. Детали о реализации функции можно прочитать в блоге Woopra в статье ”Long Time Visitors in Woopra Are Not Really “Stuck”, They’re Just Idle”. Каждый владелец сайта сам принимает решение, использовать такую систему, или нет. Но теперь мы благодаря Wireshark знаем об этой особенности Woopra. И, продолжая анализировать сетевую активность, будем знать и о поведении других программ.


Comments