添加报告:重复的 IP 地址

Is it possible for a report to be added under DASHBOARD > REPORTS, to list accounts that share the same IP address?

Or, if the processing is too heavy to do large forums, the report could potentially be capped eg: checks all new accounts from the last 3mths.

Discourse identifies such duplicates when looking up a specific user, but it would be useful to see this information across all users. Currently I have no tool to identify this, other than checking individual users one at a time.

I realise that a shared IP doesn’t always mean it’s the same person and that some IP addresses are shared by multiple users on a network, but it would still be very useful.

Possible?

5 个赞

You can do a query with data explorer plugin to find users with same ip.

There may be an example in What cool data explorer queries have you come up with?.

5 个赞

Thanks Jay. We don’t have the data explorer plugin on our hosted instance.

是否有可能将此功能添加到标准的 Discourse 仪表板报告中,而无需使用数据探索器插件?

对于大多数 Discourse 论坛工作人员来说,这个功能会很有用,因为用户拥有多个账户是一种相当常见的论坛现象。对我来说,它比现有的大多数仪表板报告更实用,可以定期使用。

请问一下,不同 IP 地址的最大数量是多少?

我认为,对比 count(ips)count(distinct(ips)) 的成本相对较低,这样可以大致了解有多少账户使用了其他账户使用过的 IP 地址。

而针对特定 IP 的“按需”搜索成本则会更高。

具体取决于论坛有多少账户和 IP 地址,查找所有非唯一 IP 的成本可能会极高。如果我的计算没错,所需检查次数的公式大致如下:
(n*(n+1)/2)-n
其中 n 是 IP 地址的总数。

  • 例如,当 n 为 100 时,结果为 4950;当 n 为 1000 时,结果为 499500。你应该明白我的意思了。
3 个赞

我不确定这在系统资源方面会涉及什么,但确实有用的是获得一条版主消息和/或一份报告,该报告能够让我们获取与同一 IP 地址关联的多个成员列表,这些关联可以通过注册 IP 或最后登录 IP 来识别。

目前,发现重复 IP 的唯一方法是手动检查(这并不一定意味着某个成员拥有多个账户)。这意味着我们只有在某人制造麻烦时才会发现。

而可能发生的情况是(虽然非常罕见,但对于有动机的网络捣乱者来说可能是反复出现的问题):有人创建大量账户,将它们“升级”到可以发帖的级别,但除此之外保持休眠状态。对于一个人来说,要足够自律地使用 VPN 来隔离 IP 并执行这一过程是非常困难且耗时的。因此,在提升账户信任等级的过程中,捣乱者通常会在某个环节出错,使用“真实”IP 登录。如果版主能在发生这种情况时收到提醒,或者在某个可供版主团队定期查阅的报告中显示此类情况,将极大地有助于防止捣乱者利用大量休眠的傀儡账户制造大规模扰乱。

但这是否会占用过多的系统资源呢?

2 个赞

实现应用的方式多种多样,但我可以分享我的经验。

  • 我获取了一组包含与 Discourse 论坛关联的 IP 地址的数据(约 25 万个账户)。
  • 我编写了 PHP 代码(注意,不是 Ruby)来解析 CSV 文件并将数据插入 MySQL 数据库(注意,不是 PostgreSQL)。
  • 我下载了 MaxMind 地理定位数据库的已弃用版本。
  • 我编写了代码进行 INET 数组与数字之间的转换,并将结果插入数据库。
  • 我将单个 Discourse IP 地址与对应的 MaxMind 地理位置进行匹配(即使在数据量有限的情况下,例如 1 万个账户,此步骤也可能需要运行两个小时以上——这是一个代价较高的范围查询)。

一旦我拥有了“基础”数据,我只需要更新自上次以来的新增数据。执行 [每周] 更新从未超过几分钟。

一旦我获得了所需的数据,按位置运行查询并不慢。

1 个赞

谢谢你的分享……抱歉我之前没注意到,现在才看到,非常感谢。我会转给我们的管理员,我们会讨论一下是否值得投入精力去处理。

我们有几千名会员,经常有人注册额外账号。有时是出于恶意,但很多时候似乎并无恶意。这很少构成严重问题。

一年中只有少数几次,我们会封禁某人,而他们又会注册新账号来捣乱。到目前为止,处理起来虽然烦人,但也不算什么大事。而且到目前为止,他们最终都会失去与我们周旋的耐心,不再继续胡闹,要么消失,要么重新注册账号后低调行事,遵守规则,不再制造麻烦。在这种情况下,这其实算不上真正的问题。

1 个赞