Получить уникальный статический идентификатор с устройства через веб-запрос - PullRequest
8 голосов
/ 22 июня 2011

У меня есть приложение MVC, в которое я хотел бы добавить пользовательскую статистику.Для некоторых показателей было бы неплохо иметь уникальный идентификатор для устройства.

Например, если у меня есть уникальный идентификатор для подписчика RSS, я могу отслеживать активное число подписчиков RSS.

Мне было интересно, знает ли кто-нибудь в веб-запросе что-либо, что можно использовать в качестве идентификатора, кроме IP (который, очевидно, может измениться).Что-то вроде идентификатора устройства или чего-то такого?

Спасибо,

Оливер

Ответы [ 4 ]

9 голосов
/ 04 октября 2011

Вот несколько подходов к рассмотрению.

Заголовки HTTP

Есть несколько заголовков HTTP, которые вы можете посмотреть, которые могут помочь вам идентифицировать уникального пользователя или устройство - некоторые будут ссылаться на сим-карту, другие - на устройство. Вот список, который я получил из заголовков, которые Google Adsense Mobile использует для отслеживания их рекламы:

  • x-dcmguid
  • x-up-subno
  • x-jphone-uid
  • x-em-uid

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

Некоторые другие подходы

печенье

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

 - Standard HTTP Cookies 
 - Local Shared Objects (Flash Cookies)
 - Silverlight Isolated Storage 
 - Storing cookies in RGB values of auto-generated, force-cached 
    PNGs using HTML5 Canvas tag to read pixels (cookies) back out
 - Storing cookies in Web History 
 - Storing cookies in HTTP ETags 
 - Storing cookies in Web cache 
 - window.name caching
 - Internet Explorer userData storage
 - HTML5 Session Storage 
 - HTML5 Local Storage 
 - HTML5 Global Storage 
 - HTML5 Database Storage via SQLite

Комбинация

Также возможно придумать собственную схему, например, возьмите заголовок user-agent, некоторые другие заголовки, такие как accept, x-fowarded-for, и ip создает уникальное хеш-значение из них, чтобы более точно определить уникальность агента.

Есть много разных мобильных заголовков, как показано здесь . Я также зашел на мою страницу и храню заголовки мобильных устройств с различных устройств для своих собственных целей здесь http://wap.defza.com/ua/ua.txt (также ua1.txt, ua2.txt и т. Д.)

3 голосов
/ 22 июня 2011

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

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

Как правило, если вам нужна аналитика и отслеживание, рассмотрите возможность использования стороннего решения, такого как Google Analytics . Это даст вам очень подробные данные (хотя они все еще полагаются на файлы cookie и javascript) о ваших посетителях и их привычках просмотра.

1 голос
/ 22 июня 2011

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

Единственный вариант, который у вас есть, это какая-то форма cookie.

Для RSS-каналов вы можете встраивать случайный уникальный идентификатор в URL канала каждый раз, когда он отображается, чтобы вы знали, когда человек, который получил этот URL, загрузил ваш канал. Однако, если бы пользователь поделился этим URL с другими, у вас не было бы реального способа узнать это.

1 голос
/ 22 июня 2011

кроме IP

Если ваш сайт не требует какой-либо аутентификации для обслуживания этого контента, IP-адрес - это единственное, что вы можете получить для идентификации клиентови даже это может быть не уникальным, например, у вас может быть два клиента за одним прокси => в этом случае невозможно различить эти запросы.Другой возможностью является использование файлов cookie, но они попадают в первую категорию => аутентификация.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...