如何防止页面浏览量被操纵?

11
假设我的网站有多个页面。这些页面的排名是基于它们被查看的次数。如果一个页面的排名很高,则在搜索结果中它将显示得更靠前。因此,页面的作者可能会试图操纵系统,以增加该特定页面的查看次数。
那么如何在保持准确计数的同时防止这种情况呢?
我想出了以下“方案”:
一个用户每个会话只能影响页面浏览一次。这是我通常期望的。如果用户稍后返回网站并再次查看页面,则应将其视为另一个页面查看。
问题在于,这使得页面查看次数增量容易受到在每个请求之前清除其 cookie 的脚本的攻击。解决此问题最简单的方法是保存 IP 地址,并仅允许相同的 IP 地址增加页面计数一次。然而,这有几个主要缺点;首先,这可能会占用大量存储空间,其次,这将阻止大型局域网上的用户增加页面计数。最后,用户无法从相同的 IP 重新访问页面并增加页面查看次数。我可以接受这一点,但宁愿不这样做。
我能想到的最好的方法是保存最近的X个 IP 地址,并且不允许来自这些 IP 地址的任何人影响页面浏览计数。这将有效阻止任何(简单)脚本增加页面查看次数。此外,可能最好在实际查看计数的显示中添加延迟(基本上保持两个计数和一个日期时间字段用于“显示”计数是上次使用“实际”计数更新的内容,我相信 SE 站点也是这样做的)。
这不是一个完美的解决方案,因此我很乐意听取您的建议或意见。

此外,将实际观看计数的显示添加延迟可能是一个不错的主意。这也称为缓冲显示或缓存输出。 - jcolebrand
1
在允许用户进入网站之前,进行“你是不是一个自以为是的人?”测试。如果测试失败,不要让他们进入。 :-) - corsiKa
2
@glowcoder,呵呵,那么这个网站还会有用户吗? - Klaus Byskov Pedersen
2个回答

4

不要防止:监控并处理。

我会采用一种非常不同的方法。让页面浏览量保持不变,但是建立报告来寻找浏览量欺诈。如果某个页面被欺诈了,你可以找出谁是责任人,给他们警告和扣除页面浏览量。如果继续欺诈,就禁止他们。


难道同时监控/处理和预防不是更好的选择吗?+1 - Klaus Byskov Pedersen
那要看情况。游戏目前是个问题吗?我的意思是,人们现在是否经常操纵系统并需要防止这种情况?没有必要实施一个可以防止不存在的问题的系统。 - corsiKa
我认为这是一个很好的观点。如果你知道你要找什么,游戏行为应该是非常明显的。找出如何破坏你的系统,然后找出表明有人在破坏的行为模式,接着你就可以采取行动了。 - richard
@glowcoder。不,目前这不是一个问题,系统还处于开发阶段,我只是想加入一些简单的预防机制。虽然实现起来并不需要太大的努力,但你的观点仍然是很好的。 - Klaus Byskov Pedersen
@Richard,解析日志文件真的那么容易吗? - Klaus Byskov Pedersen
1
@Klaus:我不知道是否更容易,但我认为它更可靠……也就是说,你永远无法完全确定页面浏览量(如果某人禁用了cookie或清除了缓存,就没有办法确切地识别他们),但我认为你可以高度准确地定位游戏活动。 - richard

2

我认为你应该考虑浏览器的特征。浏览器指纹技术已经存在并且被广泛公开。你可以使用这种技术来确定是否有同一用户试图欺骗你,并得出一些相当高级的启发式算法。但是,当然不要公开你正在使用浏览器指纹技术。此外,它不能阻止隐身模式,但我只是想给你提供另一条思路,除了你目前基于IP的策略。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接