Распознать пользователя сайта без входа в систему? - PullRequest
3 голосов
/ 05 февраля 2010

Я хотел бы создать фрагмент кода, который может быть встроен в различные веб-сайты (виджет).

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

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

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

Ответы [ 5 ]

6 голосов
/ 05 февраля 2010

То, что вы хотите сделать, это то, для чего были изобретены куки. Но браузеры стали мудрее людей, которые отслеживаются без их разрешения, и теперь ограничивают использование сторонних файлов cookie.

Electronic Frontier Foundation недавно выдвинула доказательство концепции для уникальной идентификации посетителя на основе атрибутов их браузера . Он использует такие вещи, как:

  • User-Agent строка
  • http-accept значения
  • часовой пояс
  • разрешение экрана и глубина цвета
  • установленные плагины
  • если куки включены

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

3 голосов
/ 05 февраля 2010

OpenID - это своего рода единый вход для всего интернета, но им все равно нужно войти в OpenID. Кроме этого, я не могу придумать решение.

0 голосов
/ 06 февраля 2010

Используйте OpenID, или упрощенный вариант, с вашим собственным сайтом в качестве провайдера идентификации. Перенаправьте пользователя на ваш сайт идентификатора, который устанавливает или проверяет файл cookie, а затем перенаправьте пользователя обратно, указав идентификатор пользователя, указанный в файле cookie в качестве аргумента URL.

Ваш идентификатор сайта может быть поставщиком идентификаторов OpenID, который не требует взаимодействия с пользователем для аутентификации. Сайты, которые получают эту идентификацию, вероятно, не являются потребителями OpenID, так как они не предлагают пользователю выбор поставщиков. Вероятно, вы можете отказаться от подписи, требуемой OpenID, если ваш cookie и идентификатор подписаны.

Facebook предоставляет нечто подобное; сайт может найти личность пользователя Facebook (при условии, что он у него есть) без каких-либо действий со стороны пользователя.

0 голосов
/ 05 февраля 2010

Я бы предложил Open-ID, а не какой-нибудь обходной путь, подобный этому, но если вам не нравится это решение, вы можете рассмотреть что-то вроде этого:

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

Например, ссылка для добавления личного виджета на сайт foo.com может выглядеть примерно так:

http://bar.com/addwidget1?backtoo=http://foo.com/main/

bar.com будет владельцем куки, изменит пользовательские настройки и затем добавит идентификатор пользователя к обратной ссылке перед перенаправлением:

foo.com/user-id/

Проблемы с этим подходом включают

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

Преимущества

  • Нет логина
  • Поскольку вы много перенаправляете, вы получаете статистику о перемещении пользователей по вашим сайтам.
0 голосов
/ 05 февраля 2010

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

РЕДАКТИРОВАТЬ

Так что подумайте об этом больше и прочитайте ответ tovare и ваши комментарии.Почему бы не создать некоторый код JavaScript, который работает как реклама Google?Вы помещаете javascript на страницу, и он отправляет запрос на ваш центральный сервер отслеживания, используя динамический iframe.

Сделайте так, чтобы ваш сервер отслеживания возвращал тег изображения с встроенным src уникального идентификатора (своего собственного идентификатора сеанса),<img src=contentserver.com/track.php?id=12345668>

Сервер содержимого имеет серверный скрипт (track.php выше), который отображает свой локальный идентификатор сеанса на уникальный идентификатор, полученный от сервера отслеживания.

Уникальный идентификатор остается неизменным на всех сайтах.

Edit2

Вместо использования изображения используйте прием javascript.Сервер содержимого просто запрашивает файл JavaScript с сервера отслеживания.но файл является динамическим, генерируемым на стороне сервера.он возвращает сгенерированную функцию JavaScript с именем unique_id(), он возвращает уникальный идентификатор с сервера отслеживания.Вызовите track.php, используя ajax, чтобы определить, является ли это уникальный пользователь.

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