如何禁止用户使用我的Django应用程序(带有扭曲)

时间:2015-11-06 18:57:00

标签: python django proxy ip

我有一个基于网络的Django应用程序,用户可以用假名聚集和互相聊天。

大多数访问此网站的用户都是通过 Opera Mini 进行访问的。与简单的Web浏览器不同,Opera Mini具有扭曲,它通过a proxy server获取所有内容,并将网页重新格式化为更适合小屏幕的格式。

我想在此应用中实现禁止功能。一些用户正在恐吓他人 - 如果我现在手动禁止他们,他们只会在新的昵称下返回。请注意,这些用户并非精通技术 - 几乎所有用户都不是半受过教育的。我的问题就是如此:

  1. 当他们使用Opera Mini等代理时,禁止用户IP有效吗?
  2. 是否有任何可信的Django插件可以优雅地处理IP阻塞?
  3. 如果1不成立(在这种情况下,2也不会),是否还有其他可靠的方法来阻止对手用户并保护我的社区?
  4. 目前,我已经为这些用户提供了" downvote"功能,静音帐户的帖子收到太多的downvotes。但这对烈焰战争几乎毫无帮助。施虐者继续以新的假名回归,破坏了整个社区。也许我应该尝试hellbanning,如果没有其他工作吗?

    注意:我不是高级程序员(更多的是设计师),所以我更喜欢快速解决方案,这些解决方案对我这样的人来说上市时间很短。

1 个答案:

答案 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节点之后的情况/等)。您还需要考虑您在申请前可能拥有的任何反向代理。

  • 真正想滥用系统的人会找到一种方法。基于节制和/或声誉的系统是将噪音控制在最低限度的唯一方法。