Wednesday, May 15, 2013

Аналитика для мобильных посетителей

Презентация, в которой описываются принципы и системы для отслеживания мобильных телефонов:

А здесь - демо версия для Spotique

7 comments:

beloglazov said...

Давно читаю ваш блог, заинтересовала тема аналитики посетителей на основе wi-fi сетей. Сделал неплохой ресерч в этом направлении и вот какие вопросы появились. Судя по этой презентации телефон может быть обнаружен только в том случае если он будет:
1) активен, т.е. не будет находится в залоченном состоянии (в режиме сна)
2) если включен wi-fi
3) если телефон еще не подключен к другой Access Point
Насколько вообще в таком случае работоспособна такая схема? Каков процент людей будет подпадать под вышеописанные правила?

С другой стороны, в более старых записях был упомянут немного другой метод - beacons frame. Здесь я тоже сделал небольшой ресерч по всем компаниям, которые делают аналогичные решения (Meraki, Libelium). Все они в своих white papers указывают на то что они ловят beacons frame. Порыв немного глубже узнал следующее.

В стандарте 802.11 Wi-Fi предусмотрели проблему с нотификациями и power-saving mode для подключаемых к сети устройств. Это реализовано с помощью так называемых management пакетов. В частности, beacon. Беконы рассылаются точкой доступа (далее Access Point - AP) с определенным интервалом. Устройство подключенное к AP принимает первый beacon, в котором прописан beacon interval. Это интервал времени с которым AP будет рассылать beacons. Обычно это значение равно 100ms, во многих AP это можно настроить (от 20 ms до 1000 ms). Получив информацию о интервале синхронизации и синхронизовав внутренний таймер по присланному в beacon пакете таймстампу девайс может погружаться в power-saving режим, просыпаясь в соответствии с заданым в beacon интервалом чтобы принять очередной beacon пакет. В каждом beacon пакете содержиться информация о том есть ли какие данные, которое устройство, подключенное к данной AP, должно получить. Если данные есть, то устройство начинает handshake, отправив для начала association request на AP. Таким образом работают своевременные пуш нотификации и устройство не высаживает батарею. Везде пишут, что устройство тоже рассылает свои beacons, т.к. содержит стандартный чип wi-fi, который соответствует спецификации 802.11 (только возможности поменять интервал скорее всего нет, точнее есть но под рутом). Но поигравшись с wireshark и своим iPhone 5 я так и не поймал ни одного beacon пакета.
Отсюда и длинные портянки гнева девелоперов о том что после обновления до iOS 6, телефон перестал пинговаться.
https://discussions.apple.com/thread/4345149?start=240&tstart=0
Очевидно, что он не будет пинговаться, т.к. он находиться в режиме sleep (power-save mode). А проснется и подключиться к сети девайс только тогда, когда будет получен beacon о том что есть новые данные на AP.
AP должен находится в режиме мониторинга. В соответствии со стандартом 802.11 wi-fi карта можно находится в одном из шести режимов, один из которых - monitor mode http://en.wikipedia.org/wiki/Monitor_mode.
Более подробно про режимы работы wi-fi чипов http://wiki.wireshark.org/CaptureSetup/WLAN.

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

Не могли бы вы как-нибудь прокомментировать эти мысли?

Coldbeans software said...

Целая заметка получилась :)
Да - это monitor mode
То, что анализируется для поиска телефона называется Wi-Fi probe request: https://www.google.ru/search?q=wi-fi+probe+request

beloglazov said...

Благодарю за ответ. Т.е. в итоге мы получаем то о чем я написал в самом начале прошлого комментария. Отлавливаться будут только те телефоны, которые:
1) активен, т.е. не будет находится в залоченном состоянии (в режиме сна)
2) если включен wi-fi
3) если телефон еще не подключен к другой Access Point
Но ведь это очень маленький % от реального количества девайсов? Вы считали эти соотношения?

Coldbeans software said...

Wi-fi должен быть включен точно; по крайней мере, Android устройства, подключенные к точке доступа Wi-Fi probe тем не менее рассылают. Проверял на реальных устройствах и Wi-Fi раутере с функцией мониторинга: http://linkstore.ru/spotique/
Про "режим сна" - не знаю. Не до конца и понимаю, честно говоря - что это. И безо всяких специальных режимов Wi-Fi probe со включенного телефона может не посылаться. И не посылается - это так. По тем данным, что видел, определяется присутствие до 70% телефонов. В собственных тестах было чуть выше, но у нас на всех устройствах точно был включен Wi-Fi

beloglazov said...

Под режимом сна я имею ввиду тот режим в который входит телефон если его не трогать через 10 - 30 секунд. Экран гаснет. Т.е. основной режим в случае если телефон не используется. В этом случае как я понимаю такой телефон не будет зафиксирован и я это проверял на андроиде и на iPhone 5. Тогда нужно наверное понять в каких местах наиболее эффективно будет работать такой вариант.

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

2) Если это ретейл, какой-нибудь молл или супермаркет, то там мотивации у посетителей держать телефоны в активном режиме (т.е. пользоваться ими) и быть подключенными к Wi-Fi, очень мала. Человек хочет быстро купить продукты и уйти. Тем не менее все компании, которые предлагают такие решения больше всего говорят про ретейл. Вот здесь совсем непонятна коммерческая ценность такого решения, потому что отлавливать он будет только несколько % посетителей.

3) Street мониторинг. То что предлагает libelium, Так же как и в пункте 2 - совсем мало людей которые идут по улице и что-то делают со смартфонам и еще более маловероятно что они что-то будут делать подключившись к Wi-Fi сети. Скорее всего это единицы тех кому надо быстро позвонить, ответить на звонок или быстро написать СМС. Каким тогда образом продвигаются такой продукт если он будет собирать только малую долю статистики?

В каком месте вы отлавливали 70%? Это получается большая часть народу в этом месте должна ходить с активными смартфонами и пользоваться ими. Это была какая-то конференция?

beloglazov said...

Вообщем главное сомнение во всей этой технологии - это практически нулевая эффективность в ретейле, в street мониторинг. И вообще, там где люди поголовно не ходят и не пользуются в активном режиме смартфонами. А таких мест, где можно было бы эффективно использовать такой мониторинг, по факту, очень мало (выставки, конференции), а с другой стороны, в этих местах нет никакой выгоды от такого мониторинга.
Другое дело в ритейле, расставив такие точки по моллу можно понимать статистику прохождения, а если это синхронизировать с чеками на кассе, то это вообще подарок для маркетологов и мерчендайзеров + можно делать хороший data mining на такой статистике. Но в ритейле как мы поняли выше эта технология будет отлавливать только несколько процентов от всех посетителей, и, соответственно, будет абсолютно неэффективной. Правильный вывод?

Coldbeans software said...

>В каком месте вы отлавливали 70%? >Это получается большая часть народу >в этом месте должна ходить с >активными смартфонами и >пользоваться ими. Это была какая-то >конференция?

аудитория (комната) в университете

>там люди ходят с включенными >телефонами, подключенными к вайфай
один из способов стимуляции - иметь активную Wi-Fi точку. Пусть она и закрыта паролем будет. Лишь от нее SSID broadcast был. Тогда и телефоны в ответ начнут с ней пробовать договариваться.

Кстати, по опыту - планшеты и телефоны ведут себя по разному.