在Django防垃圾邮件命中计数器(Spam proof hit counter in Django

2019-07-31 04:57发布

我已经看了看最流行的Django命中计数器的解决方案和他们都不来解决垃圾邮件的刷新按钮的问题。

难道我真的记录每个访问者的IP,让他们从垃圾邮件的刷新按钮 (或写一个快速和肮脏的脚本来为他们做),人为地提高页面浏览数?

更多信息

所以,现在你可以抬高你的观点与Python代码下面几行计数。 这是这么少,你不真的需要编写一个脚本,你可以只需将它输入一个交互式会话:

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)

解决方案我可能会使用

对我来说,这是一个非常粗糙的情况,当你需要做一堆写入到每个页面视图的数据库,但我想它也没有办法。 我要实现IP日志由于一些用户人为地夸大自己的浏览次数。 这并不是说他们是坏人,甚至不好的用户。

看到与缓存解决问题......我要奉行这条路线的答案。 将结果进行更新。

对于它的价值,它似乎堆栈溢出会使用Cookie(我不能增加自己的观看次数,但是当我参观了在其他浏览器的网站就增加了。)

我认为,好处实在太多,而这种“作弊”的现在的问题是太容易了。

感谢您的帮助大家!

Answer 1:

登录的IP可能是最为安全。 它并不完美,但它比cookie比需要注册更好,那么讨厌给用户。 这就是说,我建议不与一个数据库保存这些烦心事。 相反,使用Django的低级别的缓存框架 。 关键将是IP和值的简单布尔。 即使是一个基于文件的缓存应该非常快,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


Answer 2:

有阻止他人人为地抬高计数没有万无一失的方法。 相反,有哪个你愿意花时间使之更难以为他们做这样的程度:

  • 没有(他们单击刷新按钮)
  • 设置一个cookie,检查饼干,看看他们是否已经在那里(他们清除Cookies)
  • 登录IP地址(每次假货不同的IP)
  • 需要签到随着它们从响应电子邮件(注册了多个电子邮件帐户)

所以,到最后,你只需要选择,以防止你想要去的努力程度滥用系统的用户。



Answer 3:

当他们访问它,然后再检查该cookie,你可以向他们发送的cookie。 它仍然可以耍花招,但它是一个有点困难。



文章来源: Spam proof hit counter in Django