我管理的一个PHP / MySQL网站是社交网络,我注意到垃圾邮件发送者会向其他几个用户发送大量类似的消息。
由于同一用户帐户发送的邮件数量以及发送的邮件的相似性,似乎应该相对容易识别以这种方式向其他用户发送垃圾邮件的用户,但我只是不知道如何在PHP / MySQL中做到这一点。消息以类型TEXT
存储在数据库中。
我如何识别这些垃圾邮件发送者,以便在他们开始发送过多看起来相似的邮件时自动删除它们?
修改
垃圾邮件通常至少是一段文字,因此我们可以安全地忽略少于 100 个字符的邮件,并自动让它们通过。
答案 0 :(得分:3)
垃圾邮件内部会有链接,因此您可以过滤掉没有链接的邮件。
你应该首先尝试预防,所以如果一个用户开始在很短的时间内向很多用户发送许多邮件,那么它可能就是垃圾邮件。
你可以通过在会话中使用某种计数器来实现它,你可以将每个消息发送给新用户增加它,如果它超过每小时20个(我只是编写这个数字以使其有效你需要一些测试)他可能是垃圾邮件,并开始要求他进行验证码或阻止他的聊天15分钟,报告给管理员手动检查
答案 1 :(得分:1)
您可以使用以下方法搜索与他们现在发布的邮件类似的邮件。
SELECT * FROM `messages`
WHERE MATCH (`messages`.`content`) against ($message)
&& `messages`.`user` = $user
这将选择与当前用户的某些内容匹配的消息。
希望它有所帮助。
答案 2 :(得分:1)
现在,人类可以确定哪些发件人可以接受,哪些是垃圾邮件发送者。一个可以看到每个人信息的人,更是如此。但你不想阅读每条消息!
首先,您需要有一个消息标记或状态,以便可以将消息添加到数据库,但不会出现在收件人的收件箱中,因为怀疑是垃圾邮件。
其次,您需要拥有用户标记或状态,以防止用户发送更多邮件,因为怀疑是垃圾邮件。
我认为最好的方法是:
words
和links
中的唯一链接中保存唯一字词。首次通过垃圾邮件评分
第二次通过垃圾邮件评分
人类适度
还应该可以使用上述大部分结构来缓和不适当内容的消息。