Есть ли способ однозначно идентифицировать пользователя, который получает доступ к моей сети веб-сайтов? - PullRequest
1 голос
/ 26 мая 2011

Есть ли способ, предпочтительный в Java, чтобы однозначно идентифицировать пользователя?

У меня следующий сценарий: у меня есть 10 веб-сайтов, и я хочу знать, когда один и тот же пользователь заходит на любой из моих веб-сайтов.Поэтому, если пользователь заходит на сайт A, и после этого он заходит на сайт B, я хочу получить ответ на вопрос: обращался ли этот конкретный пользователь к сайту A раньше?

Отслеживание IP-адреса является плохим подходом, поскольку в основном IP-адреса являются динамическими или большее количество людей используют один и тот же IP-адрес через маршрутизатор.

Я предполагаю, что получение MAC-адреса - это ветвь безопасности:).

Файлы cookie доступны только для определенного URL !?

Можно ли как-нибудь заставить это работать?

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

Я прочитал, что невозможно получить доступ к одному и тому же файлу cookie в нескольких доменах.Это возможно в конце концов?Вот ссылка: at: Проблемы с cookie в IE и Chrome (работа с java)"Файлы cookie основаны на домене. Многие браузеры отклоняют файлы cookie на встроенных ресурсах (CSS / JS / images), которые обслуживаются из другого домена, кроместраница обслуживается с "

. Итак, если я добавлю response.addCookie(UniqueCookieForCurrentUser);, будет ли она доступна на других доменах?

Я звоню, как вы предложили, из javascript:

    var query = '?requestURI=' + encodeURIComponent(requestURI)
         + '&resolution=' + encodeURIComponent(resolution)
         + '&websiteid=' + encodeURIComponent(id)
         + '&DisplayedBanners=' + encodeURIComponent(DisplayedBanners);
    document.getElementById("body").innerHTML = "<img src ='http://dan-vaio:8080/licenta/bannerimg.gif" + query + "' width = 728 height = 90 />";

И в сервлете я возвращаю это: (после добавления куки в ответ)

    File f = new File(filePath);
byte[] b = new byte[(int)f.length()];
FileInputStream fis = new FileInputStream(f);
fis.read(b);
ServletOutputStream out  = response.getOutputStream();
out.write(b);
out.close();

1 Ответ

3 голосов
/ 26 мая 2011

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


следующее:

ОК.на каждом сайте у вас будет это на каждой целевой странице:

<img src="http://bugs.example.com?src=siteName" width=1 height=1 alt="Track me, please!" />

и замените siteName на что-то подходящее для каждого сайта.например, src=siteA, src=siteB и т. д. *

Когда пользователь заходит на сайт A, его браузер загрузит это изображение с вашего сервера веб-ошибок, и для идентификации пользователя будет создан файл cookie.Файл cookie сеанса PHP или что-то вроде файла, сгенерированного Apache mod_usertrack).Важно то, что значение файла cookie является УНИКАЛЬНЫМ для каждого пользователя.

Так что теперь этот пользователь имеет в своем браузере файл cookie, example.com.track=2536t4234235423423.Когда пользователь затем посещает сайт B, браузер отправит этот файл cookie вместе с запросом изображения на сервер веб-ошибок, и теперь в ваших журналах будет показано, что файл cookie 2536t4234235423423 посетил как сайт A, так и сайт B.

Cookie сам по себе бесполезен, он просто идентифицирует пользователя.Но в сочетании с URL-адресом, запрошенным с сервера веб-ошибок, который содержит имя исходного сервера, вы можете увидеть, какой сайт посещал какой-либо конкретный файл cookie (например, пользователь).

...