在java中有什么方法可以唯一地识别用户吗?
我遇到以下情况:我拥有 10 个网站,我想知道同一用户何时访问我的任何网站。因此,如果用户访问站点 A,然后访问站点 B,我想得到对以下问题的答复:此特定用户之前访问过站点 A 吗?
跟踪 IP 是一种糟糕的方法,因为大多数 IP 是动态的,或者更多人通过路由器共享同一个 IP。
我猜获取 MAC 地址是一个安全分支:)。
Cookie 仅适用于特定网址!?
有什么方法可以让它正常工作吗?
编辑:
我了解到跨多个域访问同一个 cookie 是不可能的。毕竟有可能吗?这是引用:在:Cookie problems with IE and Chrome (working with java) “Cookie 是基于域的。许多浏览器拒绝嵌入式资源(CSS/JS/图像)上的 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();
最佳答案
像所有广告网络一样:在每个站点上放置一个小网络错误,从您的一个服务器加载 cookie,这样无论用户访问哪个站点,他们总是从同一个错误服务器获取 cookie .将唯一标识符放入每个站点的错误中,这样您就不会依赖引荐来源网址来识别错误服务器上每次命中的源站点。
以下:
好的。在每个网站上,您都会在每个着陆页上看到:
<img src="http://bugs.example.com?src=siteName" width=1 height=1 alt="Track me, please!" />
并将 siteName
替换为适合每个站点的内容。例如src=siteA
, src=siteB
, 等等...
当用户访问网站 A 时,他们的浏览器将从您的 webbug 服务器加载此图像,并发出一个 cookie 来识别用户。 PHP session cookie,或类似于 Apache 的 mod_usertrack 生成的那种)。重要的是 cookie 的值对于每个用户都是唯一的。
现在这个用户在他们的浏览器中有一个 cookie,example.com.track=2536t4234235423423
。当用户随后访问站点 B 时,浏览器会将此 cookie 与图像请求一起发送到网络错误服务器,现在您的日志将显示 cookie 2536t4234235423423 已访问站点 A 和站点 B。
cookie 本身是无用的,它只是标识一个用户。但结合从网络错误服务器请求的 URL(其中包含原始服务器的名称),您可以查看任何特定 cookie(例如用户)访问了哪个站点。
关于java - 有什么方法可以唯一标识访问我的网站网络的用户?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6143777/