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