Получите уникальный статический id с устройства через веб-запрос
У меня есть приложение MVC, в которое я хотел бы добавить некоторые пользовательские статистики. Для некоторых статов, было бы неплохо иметь уникальный идентификатор для устройства.
например, если у меня есть уникальный идентификатор для подписчика RSS, я могу контролировать активное количество подписчиков RSS.
Мне было интересно, знает ли кто-нибудь что-нибудь в веб-запросе, которое можно использовать в качестве идентификатора, отличного от IP (который, очевидно, может измениться). Что-то вроде идентификатора устройства или что-то?
спасибо,
Оливер
4 ответов
вот несколько подходов к рассмотрению.
заголовки HTTP
есть несколько заголовков HTTP, которые вы можете посмотреть, что может помочь вам идентифицировать уникального пользователя или устройство - некоторые будут ссылаться на sim-карту, некоторые относятся к устройству. Вот список, который я получил из заголовков, которые Google Adsense Mobile использует для отслеживания их реклама:
x-dcmguid
x-up-subno
x-jphone-uid
x-em-uid
это, вероятно, некоторые очень популярные, но было бы больше конкретных заголовков поставщика/устройства, которые популярны. Вы можете начать собирать все заголовки, которые получает ваш сайт, и подсчитать, сколько из них вы получаете, и начать создавать свою собственную базу данных общих заголовков.
некоторые другие подходы
печенье
Cookies-это то, что можно установить на запрашивающем агенте (например, в браузере) и вернуть, когда агент снова посещает. Для получения списка методов, проверьте Когда-Либо 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.тхт и т. д.)
короткий ответ-их нет (и с уважительной причиной, учитывая проблемы конфиденциальности). Более полезным ответом было бы то, что это то, что вы обычно делаете, используя печенье. Вы устанавливаете файл cookie, а затем проверяете его, чтобы определить конкретный браузер, делающий запрос.
конечно, это ни в коем случае не доказательство, поскольку пользователи могут отклонять куки, удалять их, и они могут использовать много разных браузеров (каждый из которых будет иметь другой куки). Если вы коварный (и я бы не рекомендовал это), вы можете использовать Локальный Общий Объект (Flash Cookie), так как это с меньшей вероятностью будет удалено. Однако в конце концов, если кто-то не хочет, чтобы его выслеживали, вы не можете заставить его это сделать.
в целом, хотя, если вы хотите аналитику и отслеживание, рассмотрите возможность использования стороннего решения, такого как Google Analytics. Это даст вам очень подробные данные (хотя все еще полагаясь на куки и javascript) о вашем посетители и их привычки просмотра.
кроме IP
Если ваш сайт не требует какой-либо аутентификации для обслуживания этого контента, IP-адрес-единственное, что вы можете получить для идентификации клиентов, и даже это не может быть уникальным, например, у вас может быть два клиента за одним прокси => нет способа отличить эти запросы в этом случае. Другая возможность - использовать cookies, но этот вид попадает в первую категорию => аутентификация.
нет идентификатора, который предоставляется браузером, проблемы конфиденциальности делают очень маловероятным, что какой-либо поставщик когда-либо осуществит это, по крайней мере, сейчас.
единственный вариант, который у вас есть, это какая-то форма cookie.
для RSS-каналов вы могли бы вставлять случайный уникальный идентификатор в URL-адрес канала каждый раз, когда он отображается, чтобы вы знали, когда человек, который получил этот URL, загрузил ваш канал. Однако, если пользователь поделился этим URL-адресом с другими, у вас не будет реального способа знание.