mysql - 检查帖子频率是否为垃圾邮件的好算法

标签 mysql algorithm frequency-analysis

我有一个网站,人们可以在其中发布文本。每个帖子都存储在一个数据库中,其中包含发帖人的 ip 和发帖时间。如果我可以确定发布者是机器人、垃圾邮件发送者等,我希望能够显示 recaptcha。

执行此操作的好算法是什么?最简单的选择是分析预定时间段内的帖子数量,比如一分钟,是否大于选择的限制,比如 10。但是,这有一个缺陷,即同一 ip 后面的多个人发帖,甚至是创建随机频率间隔的机器人 > 时间段,或发布少于该时间段的限制。

显然没有“正确”的答案。然而,有些算法比其他算法更好,我只是想找到最好的算法。

最佳答案

您可以采用基于限制 的方法,并充分利用 website analytics .

IP 将在单个上下文 中发布内容的次数 必须有限制。例如,对于 StackExchange 问题(上下文),我的 IP 地址将(在大多数情况下)发布一个答案(而不是评论)。不止一个答案是不常见的,因此是可疑的。在其他一些上下文中,频率可以高达几倍,例如 StackExchange 评论。

然后必须限制用户在单次访问中花费的时间。如果您使用 google 网站分析,您必须知道用户在您网站上花费的平均时间。使时间限制稍微远大于该时间限制,或者您可以提出的任何其他标准,包括命中和试验方法。

此外,您还可以使用 blogger方法,但有一个小的变化。与其在每个帖子中都使用验证码,不如在用户登录或发布第一条帖子时使用验证码。之后,仅在一段时间间隔或他/她发布了一定数量的帖子后才设置验证码。

关于mysql - 检查帖子频率是否为垃圾邮件的好算法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7832769/

相关文章:

java - Spring + JSF - 从数据库检索图像并在浏览器中显示

php - 计算和分组 mysql 表中的相似字符串?

algorithm - +1 在硬币找零问题(动态规划方法)的递归关系中意味着什么?

c++ - 让老鼠走出迷宫

c# - 转换十进制

c++ - 为什么理想带通滤波器不能按预期工作?

Matlab:查找音频数据帧中的主频率

mysql - 如果日期早于,则将列值设置为 0

mysql - 使用 INSERT IGNORE 防止重复条目

python - pandas 的非常具体的任务