gpt4 book ai didi

django - Django 中的垃圾邮件防护计数器

转载 作者:行者123 更新时间:2023-12-02 06:52:52 29 4
gpt4 key购买 nike

我已经研究过最流行的 Django 命中计数器解决方案,但它们似乎都不能解决刷新按钮垃圾邮件的问题。

我真的需要记录每个访问者的 IP,以防止他们通过发送刷新按钮垃圾邮件(或编写快速而肮脏的脚本)来人为地提高页面浏览量吗为他们做这件事)?

更多信息

所以现在您可以使用以下几行 Python 代码来增加您的观看次数。它是如此之小,以至于您实际上不需要编写脚本,您只需将其输入到交互式 session 中即可:

from urllib import urlopen

num_of_times_to_hit_page = 100
url_of_the_page = "http://example.com"

for x in range(num_of_times_to_hit_page):
urlopen(url_of_the_page)

我可能会使用的解决方案

对我来说,当您需要在每个页面 View 上对数据库进行大量写入时,这是一个非常艰难的情况,但我想这也无济于事。由于一些用户人为地增加了他们的观看次数,我将实现 IP 日志记录。这并不是说他们是坏人,甚至不是坏用户。

查看有关解决缓存问题的答案...我将首先采用该路线。将更新结果。

就其值(value)而言,Stack Overflow 似乎正在使用 cookie(我无法增加自己的浏览次数,但当我在其他浏览器中访问该网站时,浏览次数会增加。)

我认为好处太多了,而且现在这种“作弊”太容易了。

感谢大家的帮助!

最佳答案

记录 IP 可能是最安全的。它并不完美,但它比 cookie 更好,而且比要求注册更不会让用户烦恼。也就是说,我建议不要费心将它们保存在数据库中。相反,使用 Django 的 low-level caching framework 。键是 ip,值是一个简单的 bool 值。即使基于文件的缓存也应该相当快,但如果您确实预计流量很大,请使用 memchached 作为缓存后端。

这样的事情应该有效:

ip = request.META['REMOTE_ADDR']
has_voted = cache.get(ip)
if not has_voted:
cache.set(ip, True)
#code to save vote goes here

关于django - Django 中的垃圾邮件防护计数器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1212559/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com