【问题标题】:Best way to prevent view counts from being abused防止观看次数被滥用的最佳方法
【发布时间】:2014-01-10 14:02:18
【问题描述】:

我目前正在使用 Redis 来存储每次加载页面时的查看次数。它工作得很好,但我唯一担心的是它会被滥用。当用户登录我的网站时,查看计数器只会在他们尚未查看线程(同样,由 Redis 跟踪)时更新,从而消除滥用行为。

我的问题在于我没有帐户的用户。如果我让每次加载页面时更新查看次数,如果有人创建了一些内容,他们可以注销并刷新页面,只要他们想要增加查看次数即可。我的第一个想法是通过会话 cookie 识别每个非帐户用户(我已经跟踪通过会话 cookie 登录的用户),但如果有人清除了该 cookie,它将再次变得无用。另一个想法是 IP 地址,但通过动态 IP 地址也不太可靠。

所以我的问题是,跟踪来自未知用户的观看次数最可靠的方法是什么?

【问题讨论】:

  • 您可以根据用户 ip / login 生成 cookie。这样,经过身份验证的用户将始终拥有相同的 cookie。如果某个 ip 地址 md5(salt + user|anon + ip) 后面有多个用户,您可能会丢失一些用户
  • 是的,这似乎是简单性的最佳权衡。谢谢!

标签: python cookies redis counter


【解决方案1】:

欢迎来到跟踪观看次数的世界!

我会让你知道几个商业机密。

你想要的可能是一个像素跟踪器。

像素跟踪器是一种服务于 1x1 像素的服务,除了记录请求的时间之外什么都不做。因此,如果您说要跟踪访问线程的人,您可以对线程名称 sha512(thread_name) 进行 sha512 哈希并获取哈希。然后使用此哈希请求来自您的网络服务器的像素,如下所示

/px/<sha512hash>.gif

然后您可以将此请求插入数据库,下次呈现该页面时,您 sha512 标题,您请求该像素,然后您意识到该用户已经为该标题提供了一个像素。您忽略该请求,您不增加查看计数器。

【讨论】:

  • @gawel 有一个很好的答案。我宁愿以简单性换取 100% 的准确性。不过很好奇,这难道不依赖于缓存 .gif 的浏览器吗?
  • @d0ctor 你记录资源服务器端的请求。
  • 我好像没听懂……抱歉哈哈。我记录对资源的请求,假设处理程序是/viewcount。来自 passlib 的 SHA-512 哈希每次都是随机的。即使我每次都将其设为静态,也只会允许一位客人增加计数器。如果 IP 地址不可靠,我如何为每个访客跟踪它?我认为唯一可行的只是为每位客人随机设置一个 cookie,并希望他们不要清除它。
  • 你散列标题名称
猜你喜欢
  • 1970-01-01
  • 2022-01-18
  • 2012-04-25
  • 1970-01-01
  • 1970-01-01
  • 2021-04-10
  • 2023-03-30
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多