Идентифицировать пользователя на сайте по запущенной программе (не факт, что на том же компьютере)?

Задумался вот над такой загадкой. А возможно ли идентифицировать пользователя на сайте (заметьте, не аутентифицировать, а просто узнать кто это) ничего у него не спрашивая? Использовать можно Javascript AJAX, PHP, установленные программы на сервере и на компьютере клиента.


Т.е. есть, скажем, 10 человек. У них запущены клиенты, подключенные к серверу. Они заходят на сайт и кликают кнопку и клиент показывает надпись «You clicked!» только тому пользователю, который действительно только что кликнул эту кнопку.


Поначалу, я думал заставить пользователя вводить e-mail. Но ведь кто-то может ввести чужой e-mail и таким образом сообщение увидит не тот. Затем пришла в голову мысль сравнить IP клиента, подключенного к серверу и IP пользователя, зашедшего на сайт. Но возникает вопрос: а будут ли гарантированно эти адреса совпадать? Ответ нет, т.к. на сайт можно прийти под прокси, а клиент может не использовать прокси (или вообще быть запущенным на телефоне — такое тоже допускается, но допустимо затребовать указывать это при регистрации).


Так вот такая загадка хабросообществу: возможно ли вообще максимально простым пользователю способом (т.е. не обязывая его помнить пароль) узнать какой из запущенных клиентов принадлежит ему и вывести туда сообщение, без ложного вывода у других пользователей системы?
  • Вопрос задан
  • 4641 просмотр
Пригласить эксперта
Ответы на вопрос 8
durach
@durach
Ваша программа пусть запускает свой вебсервер (очень лёгкий), который слушает порт, скажем 19999. После нажатия на кнопку джаваскрипт пусть туда шлёт запрос через AJAX/IFRAME.

Похожим образом, как я понимаю, клиент от WebMoney работает.
Ответ написан
Ну кагбе с большой долей вероятности можно использовать флэш-куки. Устанавливать «клиентом» при коннекте, а в браузере читать через специабельные флешку и jsку.\

*не уверен в своем мозге, ибо болею гриппом и встал только таблеточку выпить. А тут интернеты опять…
Ответ написан
Да привязывайте по IP, вероятность того что ip совпадет у двух одновременно подключенных пользователей не велика, конечно если это сервис с посредственным количеством посетителей.

Та же можно брать хеш от IP + разрешение монитора(этот параметр легко получить как через javaScript так и софтом который установлен на машине пользователя)

Еще можно сделать что б программа при установке ставила на все браузеры нужный кукис с уникальным идентификатором.
Ответ написан
sajgak
@sajgak
Думается в это время (2.30 по Украине) уже плохо:), но первый, пришедший в голову вариант — плагин для браузера(который к примеру забирает идентификатор сессии из клиента и отдает его сайту). Работать это конечно будет только при условии, что клиент и браузер открыты в одной среде.
Ответ написан
@Robotex Автор вопроса
Конкретнее:

должно работать в популярных браузерах: Firefox, Opera, Chrome, Safari, IE — т.е. без плагинов (их ведь ставить еще эти плагины надо, а пользователь существо ленивое) и без встраивания браузера в клиент.
Клиент — это постоянно запущенная программка, ожидающая, пока ее пользователь ткнет на кнопку на сайте. Запущен может быть как с телефона, так и с компьютера (но не одновременно (либо одновременно с указанием приоритета))
Серверная часть это тандем из серверного приложения, PHP и mySQL.
Ну и кнопка на сайте может быть чем угодно реализована, что способно послать запрос на PHP.
Вся эта связка может пересылать любую информацию в любом напрвлении (в рамках технологий конечно).
Ответ написан
@Scioner
Для телефона нереализуемо без двух одновременных сессий. С вводом пароля как в браузере, так и в клиенте.

Для компа реализовать можно двумя способами:
-сниффить трафик, соответственно получать сессию.
-прописывать в hosts при запуске 127.0.0.1 needed.host, а клиент заставить транслировать все запросы и ответы.

У обоих способов куча проблем и недостатков. Использовать такие решения можно только если вы абсолютно уверены, что хотите ходить на костылях.

Если же нет, то только так же, как в телефоне — вводы паролей и там, и там.
Ответ написан
Комментировать
@Nyarlathotep
Если пользователей планируется чуть больше, чем немного, можно посмотреть сюда:
panopticlick.eff.org/
Вполне возможно что такой информации окажется более чем достаточно.

(решение понятное дело не со 100% гарантией)
Ответ написан
GMM
@GMM
Можно зарегистрировать свой протокол типа skype:// и обработчиком сделать свою программу.
На сайте же сделать ссылку.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы