【问题标题】:I have 7 images. I want to display different images to different users randomly using javascript. But once it is displayed, it should not change我有 7 张图片。我想使用javascript随机向不同的用户显示不同的图像。但是一旦显示,它就不应该改变
【发布时间】:2014-10-14 09:56:09
【问题描述】:

我尝试使用用户计算机的 IP 地址,但我意识到所有计算机的公共 IP 地址在特定网络中都是相同的。但是我想在我的大学网络中向不同的用户显示不同的图像。没有用户的登录信息,那么我可以用什么来唯一标识一个用户或用户的计算机在javascript中。

谢谢

【问题讨论】:

  • 使用 cookie。这就是它的用途。
  • 如果您没有用户登录信息,那么您实际上没有用于区分用户的信息。 cookie 可能是一个解决方案,但它在浏览器中,用户可以清除它或使用另一个浏览器。
  • 您无法在没有登录的情况下识别用户,只能识别设备。你怎么知道给我的电脑显示和手机一样的图像?

标签: javascript


【解决方案1】:

您可以尝试使用会话或 cookie,但如果您在 Javascript 中使用客户端,则无法保证它不会改变,或者他们不会使用其他浏览器。

如果 Flash 可用,Flash cookie 可能是一种可能的跨浏览器方法。见How do I uniquely identify computers visiting my web site?

【讨论】:

  • Flash 解决方案没有添加任何有用的东西,也没有解决用户清除 cookie 的问题。
  • 它是跨浏览器共享的,因此更有可能唯一标识一台机器。但总的来说,cookie 是答案,并且有其局限性,是的。
【解决方案2】:

已经提到了设置 cookie,所以我提供了另一种可能性。

您可以尝试使用用户的分辨率/浏览器/设置/等作为输入的某种散列函数。这不是万无一失的方法,但输入的微小变化会导致不同的哈希值。

【讨论】:

    【解决方案3】:

    有几个选项:使用 cookie(现代浏览器有其他方法,例如 Web Storage,但它们的作用相同),或对浏览器进行指纹识别(例如使用 fingerprintjs 之类的方法)。各有利弊:

    Cookie

    您需要做的就是在第一次访问时生成伪随机数并将其存储在 cookie 中。 cookie 可以长时间保持不变,直到用户手动删除 cookie、重新创建其浏览器配置文件等,此时图像可能会更改,但用户可以合理地期望在执行其中一项操作时看到一些更改行动。有些用户可能会完全阻止您的 cookie - 这只是意味着他们都会得到相同的图像。有一些法律管理 cookie 的使用,尤其是在欧洲,所以如果您还没有使用 cookie,并且您的网站在欧洲很受欢迎,您可能需要添加免责声明。

    指纹

    通过查询屏幕分辨率、已安装插件、软件版本等内容来创建指纹,然后对结果进行哈希处理以生成标识系统的短数字/字符串 - 您只需将该标识符转换为介于 1 之间的数字7. 当这些参数中的任何一个发生变化时,该值将发生变化,但它不受清理 cookie 的影响,也不受某些地区要求披露 cookie 使用的相同法律的影响(可能有其他法律管辖浏览器指纹识别的使用)。

    【讨论】:

    • 许多指纹来源可能会因自动更新而在用户身上发生变化。画布字体指纹识别是最新/最好的方法 ATM。 browserleaks.com/canvas
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-02-26
    • 1970-01-01
    • 1970-01-01
    • 2014-04-16
    • 2021-11-30
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多