如何防止 Magento 中的垃圾评论

Posted

技术标签:

【中文标题】如何防止 Magento 中的垃圾评论【英文标题】:How to prevent spam reviews in Magento 【发布时间】:2012-03-03 04:12:24 【问题描述】:

我们在 Magento 商店中发现了大量垃圾产品评论。我最近安装了 Fontis reCaptcha 扩展,将 reCaptcha 表单添加到评论表单中。在我所有的测试中,这很有效。 “真实”用户无法在不填写 reCaptcha 部分的情况下提交表单。然而,这并没有解决问题。我们仍然收到垃圾评论。有趣的是,这些垃圾评论也没有星级。不知何故,这些垃圾邮件机器人能够在没有所有必需信息的情况下提交评论,并完全绕过 reCaptcha 代码。关于如何解决此问题的任何想法?

我还尝试创建一个简单的脚本,将表单字段提交到表单的操作 URL 以供审核,以试图绕过逻辑(见下文)。我要么无法使其工作,要么根本无法完成,但我总是被重定向到“请启用 cookie”页面。

审核表单提交测试

<?php
$curl_connection = curl_init('http://my.domain.com/review/product/post/id/2587/');

curl_setopt($curl_connection, CURLOPT_CONNECTTIMEOUT, 30);
curl_setopt($curl_connection, CURLOPT_USERAGENT, "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1)");
curl_setopt($curl_connection, CURLOPT_RETURNTRANSFER, true);
curl_setopt($curl_connection, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($curl_connection, CURLOPT_FOLLOWLOCATION, 1);

$post_data = array();
$post_data['ratings[5]'] = '21';
$post_data['nickname'] = 'mynick';
$post_data['title'] = 'my title';
$post_data['detail'] = 'My Review Content';

$post_items = array();

foreach ( $post_data as $key => $value)

    $post_items[] = $key . '=' . $value;

$post_string = implode ('&', $post_items);

curl_setopt($curl_connection, CURLOPT_POSTFIELDS, $post_string);

$result = curl_exec($curl_connection);

echo "Curl Info:<br><pre>";
print_r(curl_getinfo($curl_connection), true);


curl_close($curl_connection);

echo "<br>Result:<br>" . htmlentities($result) . "</pre><br>";
?>

【问题讨论】:

问题不在这里,似乎在 /review/product/post/id/2587/ 对应的文件中。 【参考方案1】:

使用 Varien_Http_Client (Zend_Http_Client) 可以更轻松地提交测试评论

include 'app/Mage.php';
Mage::app(); //for autoloading:)

$client = new Varien_Http_Client('http://your-url.com/review/product/post/id/2/');
$client->setMethod(Varien_Http_Client::POST);
$client->setParameterPost('nickname', 'test');
$client->setParameterPost('detail', 'detail');
$client->setParameterPost('title', 'test');
$client->setCookie('test');
$client->setCookieJar(true);
/** @var $response Zend_Http_Response */
$response = $client->request();

echo $response;

如果没有 reCaptcha,它会添加评论。

现在下载的 reCaptcha fontis 模块(版本 2.3.1),它返回错误,reCaptcha 不正确。

如果您使用的是相同版本的此模块和相同的 Magento 版本(1.6.2.0),我会考虑在服务器日志中搜索“邪恶”POST 请求并检查入口点。

【讨论】:

感谢您提供有关通过 Varien 课程测试提交的评论的信息。这似乎有效,但是回显到页面的响应是乱码(看起来像是将二进制文件打印为文本)。有什么办法可以让它变得可读吗? echo $response 调用$response-&gt;_toString(),它会打印该响应的标题和正文。使用echo $response-&gt;getRawBody(),您可以获得不带标题的输出,并且它应该正确显示在浏览器中(在 chrome 中适用于我)。无论如何,这不是我努力的重点,respnse 只显示错误消息,确认验证码模块正在工作【参考方案2】:

尝试使用我们的免费模块ET_Reviewnotify。它具有拒绝没有验证码的垃圾邮件机器人的功能。

【讨论】:

【参考方案3】:

我最终在 Fontis reCaptcha 扩展中实现了 Akismet 反垃圾邮件代码,这似乎消除了所有垃圾邮件评论。不知何故,机器人能够绕过 reCaptcha 检查。我还没有弄清楚怎么做,但我想这就是黑客与像我这样试图保持网站正常运行的人的区别......

【讨论】:

【参考方案4】:

我开发了一个扩展程序,使用 Magento 中的默认表单提交评论。然后它将内容发送到类似于 Akismet 的 Mollom。然后分析内容,如果内容被解释为垃圾邮件,我会让用户在下一步输入验证码,让“真实”用户有机会验证他们是真实的。如果服务没有正确检测到垃圾邮件,这种方法可以允许垃圾邮件,但实际上用户更容易使用。我没有将代码打包在一起,但如果我发现对此类产品有足够的需求,我可能会在 Magento Connect 上提供它。

【讨论】:

以上是关于如何防止 Magento 中的垃圾评论的主要内容,如果未能解决你的问题,请参考以下文章

Django评论垃圾邮件

memcached+magent+keepalived实现高可用群集

Magento访问配置存储

apache config告诉WP安装位置magento 2 xampp windows

如何防止pygame中的按钮垃圾邮件

如何去掉权重属性?