Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/288.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 防止垃圾邮件_Php_Spam_Bots - Fatal编程技术网

Php 防止垃圾邮件

Php 防止垃圾邮件,php,spam,bots,Php,Spam,Bots,如何在只有注册用户才能访问的页面上停止机器人程序?90%的页面被真实用户访问,10%是机器人 我不想把验证码或验证方法放在页面上,因为我知道我的用户不会喜欢这样,他们也很懒惰 请分享你的想法 编辑 我想把这个问题说得更清楚 注册页面有验证码 我的网站允许用户提交内容,换言之,是其UGC网站。垃圾邮件发送者复制其他用户的内容并将其放在我的网站上,因此不可能通过askimet阻止他们。 可能的解决办法 我只想到一件事 当用户单击submit按钮时,服务器将使用javascript生成一个随机数,然后

如何在只有注册用户才能访问的页面上停止机器人程序?90%的页面被真实用户访问,10%是机器人

我不想把验证码或验证方法放在页面上,因为我知道我的用户不会喜欢这样,他们也很懒惰

请分享你的想法

编辑 我想把这个问题说得更清楚

注册页面有验证码 我的网站允许用户提交内容,换言之,是其UGC网站。垃圾邮件发送者复制其他用户的内容并将其放在我的网站上,因此不可能通过askimet阻止他们。 可能的解决办法 我只想到一件事

当用户单击submit按钮时,服务器将使用javascript生成一个随机数,然后在隐藏字段中使用该随机数进行验证


您认为此解决方案实际适用吗?

鉴于您排除了并非100%防弹的验证码,您需要检查用户键入的内容,并允许或禁止他们发布帖子


这项任务并不容易,因此我建议您将注意力转向现成的解决方案,例如。

我喜欢使用的一个技巧是在我的表单中添加一个隐藏的输入字段,真实用户永远不会看到或更改该字段,但机器人会盲目填写

差不多

<input name="spam_stopper" value="DO NOT CHANGE THIS" style="display:none;"/>
然后,在表单处理代码中,确保spam\u stopper的值为“请勿更改”


智能机器人可能会忽略显示:无,但这不太可能-许多机器人确实会忽略显示,因此我不会使用该选项…

由于这些机器人不会跟随,您可以始终使用.htaccess来阻止它们,但由于机器人/垃圾邮件发送者经常更改IP,因此需要大量工作来维护阻止列表。您还可能会阻止真正的用户

你可以看到一个例子


它可能很有用,但与CAPTCHA或类似系统相比,阻止所有这些系统通常需要做太多的工作。

首先,您在注册时是否进行人工验证?这是防止网站上出现垃圾邮件的第一步。验证码非常有效,即使你不想让用户每次在网站上发布时都回答验证码,让他们填写验证码来创建帐户也是完全合理的。只需要2-3秒,他们只需要做一次


如果你不愿意这样做,你将不得不忍受垃圾邮件,只要你的网站在搜索引擎中被编入索引。

不要对垃圾邮件进行分类

是的,CAPTCHA不是用户友好的。您可以使用一些技术来防止垃圾邮件,而无需使用其他人已经提到的验证码:

智能服务器端验证:这是特定于表单的,但例如在“联系我们”表单中,您可以过滤冗长的消息或包含大量URL的消息。或者,如果你希望收到电子邮件,你可以ping域名

黑名单机制:通过IP或黑名单数据库中的短语标记垃圾邮件发送者。如果您使用的是PHP,像这样的简单库可能会很有帮助

蜜罐:在公认的答案中已经提到了这一点

基于时间的保护:检查发出请求的时间是否超过X秒

基于分数:与前一版本相比,此版本完全重新设计,可检测幕后垃圾邮件


我最近写了一篇文章,你可以在那里找到更深入的内容。

你的用户喜欢少验证码还是垃圾邮件?这可能非常聪明,但可能与自动表单填充扩展冲突。我使用这种方法,但提交表单时机器人会发送隐藏字段。jason4-你希望机器人提交字段,因为大多数会改变值。更改的值意味着它不是人类。基督教-好观点;我认为,将该领域命名为模糊会降低发生这种情况的可能性,因为大多数自动表单填充者只填写已知的领域,如电子邮件、名字等。搜索垃圾邮件、评论和回复20多篇没有有用新信息的非常旧的帖子有什么意义?夸大的目的是什么?我评论的旧帖子不到5篇,而新帖子的评论总数远远低于20篇。我相信我没有包括任何旧的信息