有没有办法唯一地识别访问我的网站网络的用户?

时间:2011-05-26 19:09:33

标签: java cookies ip user-experience

在java中,有没有办法唯一地识别用户?

我有以下场景:我拥有10个网站,我想知道同一个用户何时访问我的任何网站。因此,如果用户访问站点A,之后他访问站点B,我想得到对该问题的响应:此特定用户之前是否访问过站点A?

跟踪IP是一种糟糕的方法,因为大多数IP是动态的,或者更多的人通过路由器共享相同的IP。

我猜测获取MAC地址是一个安全分支:)。

Cookie仅适用于特定网址!

有什么方法可以让这个工作吗?

编辑:

我读到不可能跨多个域访问相同的cookie。它可能毕竟是可能的吗?以下是参考:at:Cookie problems with IE and Chrome (working with java)“Cookie是基于域的。许多浏览器拒绝嵌入资源(CSS / JS /图像)上的cookie,这些cookie是从其他域提供的,而不是从”

提供的页面

因此,如果我添加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 />";

在servlet中我返回:(在将cookie添加到响应之后)

    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 个答案:

答案 0 :(得分:3)

像所有广告网络一样:您在每个从您的一台服务器加载Cookie的网站上放置一个小网络错误,这样无论用户去哪个网站,他们总是从同一个错误服务器获取Cookie 。在每个站点的bug中添加一个唯一的标识符,这样您就不会依赖引用来识别bug服务器上每次命中的源站点。


以下:

确定。在每个网站上,您将在每个目标网页上显示此内容:

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

并将siteName替换为适合每个网站的内容。例如src=siteAsrc=siteB等等......

当用户进入站点A时,他们的浏览器将从您的webbug服务器加载此图像,并将发出cookie以识别用户。一个PHP会话cookie,或类似Apache的mod_usertrack生成的cookie。重要的是cookie的值对每个用户都是唯一的。

现在,此用户的浏览器中有一个Cookie example.com.track=2536t4234235423423。当用户访问站点B时,浏览器会将此cookie连同图像请求一起发送到Web错误服务器,现在您的日志将显示cookie 2536t4234235423423已访问过站点A和站点B.

cookie本身没用,只是识别用户。但是,结合从Web错误服务器请求的URL(包含原始服务器的名称),您可以看到任何特定cookie(例如用户)访问过哪个站点。

相关问题