我有一个基于网络的Django应用程序,用户可以用假名聚集和互相聊天。
大多数访问此网站的用户都是通过 Opera Mini 进行访问的。与简单的Web浏览器不同,Opera Mini具有扭曲,它通过a proxy server获取所有内容,并将网页重新格式化为更适合小屏幕的格式。
我想在此应用中实现禁止功能。一些用户正在恐吓他人 - 如果我现在手动禁止他们,他们只会在新的昵称下返回。请注意,这些用户并非精通技术 - 几乎所有用户都不是半受过教育的。我的问题就是如此:
目前,我已经为这些用户提供了" downvote"功能,静音帐户的帖子收到太多的downvotes。但这对烈焰战争几乎毫无帮助。施虐者继续以新的假名回归,破坏了整个社区。也许我应该尝试hellbanning,如果没有其他工作吗?
注意:我不是高级程序员(更多的是设计师),所以我更喜欢快速解决方案,这些解决方案对我这样的人来说上市时间很短。
答案 0 :(得分:2)
看看this section of the Opera Mini documentation。 Opera服务器将向您发送一个X-Forwarded-For
标头,其中包含客户端的原始IP,您可以使用request.META['HTTP_X_FORWARDED_FOR']
在Django中访问该标头。
也就是说,有些事情要记住(我在Opera Mini拥有最大网络浏览器市场份额的国家生活和建立网站):
听起来很多用户都是通过手机连接的。这意味着他们很可能拥有动态IP地址。他们的IP可以经常更改,如果您现在禁用一个IP,它可能会在几分钟/小时之后阻止其他用户访问。如果您禁止IP,则建议设置相当短的超时。
X-Forwarded-For
标题不可靠。它们通常包含内部IP,您需要对其进行过滤。也无法保证您将获得正确的上游IP(考虑用户位于VPN / Tor节点之后的情况/等)。您还需要考虑您在申请前可能拥有的任何反向代理。
真正想滥用系统的人会找到一种方法。基于节制和/或声誉的系统是将噪音控制在最低限度的唯一方法。