5

我们运行一个联盟计划。注册的用户在成功招募其他用户时可以获得积分。但是,垃圾邮件发送者正在滥用该程序,并自动注册大量帐户。我们希望通过关闭明显由机器生成的帐户来防止这种情况发生。我的想法是编写一个程序来识别机器生成的帐户名称,或者至少选择一个子集进行手动检查。

到目前为止,我们发现异常id有两种:

  1. 第一个是有一些 id 看起来与其他的非常相似,例如:

    • wss12345
    • wss12346
    • wss12347
    • 测试1
    • 测试2
    • ...
  2. 第二个是有一些id看起来像是随机生成的,没有规则,例如:

    • MiDjiSxxiDekiE
    • NiMjKhJixLy
    • DAFDAB7643
    • ...

对于第一个,我使用 Levenshtein(edit) 距离。这个方法可以找出一些id,在type 1中说明了。(我做过这个,可以得到很好的性能)

对于第二个,我可以计算 id 的概率,就像:

id = "DAFDAB7643:
p(id) = p(D)*p(A|D)*p(F|A)*p(D|F)*...*p(3|4)

所以我可以用概率来过滤掉异常的id。(只是一个想法;我还没有尝试过。)

谁能给我关于这个话题的其他建议?我还能如何解决这个问题?你能看出我尝试中的缺陷或遗漏吗?

4

2 回答 2

1
  1. 假设这些新帐户回溯到招聘人员的 ID,我会查看与给定招聘人员关联的新帐户的比率和/或绝对数量。

  2. 对 IP 地址或类似地址的一些分析也可能表明多个用户是否来自同一台计算机。

  3. 我会使用单词字典,并且与检测不良密码相反——人类用户名应该有字典单词、个人姓名、缺少标点符号、不包含重复字符、大部分是小写等。

  4. 有点回到上面的 1. ——如果招聘人员有一个异常紧密的 ID 集群,使用您已经确定的功能,将是一个很好的标志。我认为这可能是,本质上,@larsmans 直接在问题下发表评论。

我很想知道重新使用密码检查算法(第 3 项)是否有任何好处。

于 2012-08-29T20:43:09.433 回答
0

你没有告诉我们你在运行什么样的网站,所以这有点投机;但是将 Stack Overflow 视为通过使用用户声誉系统成功促进良好行为并清除多种不良行为的主要示例。

一个快速的、骇人听闻的解决方法可能是在休眠招募帐户的数量增加时逐步从分数中扣除,但更有价值和引人注目的解决方法是为实际为网站内容做出贡献的人授予更高的声誉分数。但是,这取决于您拥有的网站类型;例如,股市提示网站显然与技术论坛的运作方式截然不同。

于 2012-08-30T03:42:26.740 回答